[YOLO DARKNET] 구성 및 설치, 사용방법

이번 포스팅에서는 딥러닝 프레임워크 중, Real Time Detection & Recognition으로 유명한 YOLO Darknet(번역) (논문 원본)의 구성, 설치 및 사용방법에 대해서 포스팅하겠습니다.

YOLO Darknet 페이지(https://pjreddie.com/darknet/yolo/) 를 확인하시면, 조금 더 자세한 정보를 확인할 수 있습니다.

Pre - requirement

  1. OpenCV 2.4.XX
  2. CUDA

Install

Darknet의 소스는 다음 github 저장소에서 확인할 수 있습니다. 이번 포스팅에서는 최신버전의 코드(Darknet V2)가 아닌, 다음과 같은 이전버전(Darknet V1)의 코드를 사용하였습니다. Yolo Darknet의 폴더 구조는 다음과 같습니다.

1
2
3
4
5
6
7
8
9
10
11
darknet
  |
  |- cfg /
  |- data/
  |-LICENSE
  |-Makefile
  |-obj/
  |-README.md
  |-results/
  |-scripts/ 
  |-src/

Makefile을 열어보면, 다음과 같은 내용을 확인할 수 있습니다.

  • CUDA 설치를 완료했다면, GPU=0을 GPU=1로
  • OpenCV 설치를 완료했다면, OPENCV=0을 OPENCV=1로 바꾸어줍니다.
  • 둘 다 설치가 안되어있다면, OPENCV=0, GPU=0으로 설정합니다.

OpenCV와 CUDA 없이도 실행은 가능하나, Yolo Darknet에서 사용할 수 있는 기능에 대한 제약이 많아지게 됩니다. 해당 Makefile에서 몇가지를 살펴보면 다음과 같습니다.

  • NVCC=nvcc          -> CUDA compiler
  • VPATH=./src/         -> 소스코드 위치
  • EXEC                     -> 실행 파일 명
  • CC                          -> C Compiler
  • LDFLAGS             -> linker option
  • CFLAGS                -> compile option

이제 해당 내용에 대한 설정을 완료했다면, 터미널창(리눅스 기준) make 명령어를 입력하여 코드를 Compile해줍니다. 컴파일이 완료되면 폴더에 darknet이라는 실행파일이 만들어집니다.

Test

YOLO Darknet의 기본적인 명령어는 다음과 같은 구성을 갖습니다.

./ (실행파일) (Darknet에서 지원하는 딮러닝 아키텍쳐 종류) (사용할 함수 이름) (설정파일) (가중치<Weights>파일) (추가옵션)

예)

  1. 단일 이미지에 대한 테스트

1
./darknet yolo test cfg/yolo.cfg yolo.weights data/dog.jpg

  1. 카메라 스트리밍 영상 혹은 동영상에 대한 테스트

1
2
./darknet yolo demo cfg/yolo.cfg yolo.weights -c<number> : 카메라 index number
./darknet yolo demo cfg/yolo.cfg yolo.wegiths test.mp4 : 동영상에 대한 테스트

기본적으로 VOC에 대한 가중치 파일은 YOLO Darknet 사이트에서 제공하나, 실제 원하는 도메인에 사용하고자 한다면, 직접 학습을 시켜야합니다.

Train

YOLO Darknet 폴더 안의 scr/yolo.c 파일을 열어보면 다음과 같은 내용을 확인할 수 있습니다.

1
2
3
4
char *voc_names[] = {"aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", 
"diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", "tvmonitor"};
char *train_images = "/data/voc/train.txt";
char *backup_directory = "/home/pjreddie/backup/";

char *voc_names[]는 클래스의 이름을 설정하는 변수이며, char *train_images는 학습할 image들의 list.txt파일의 위치, char *backup_directory는 학습을 하면서 중간결과들을 저장해놓는 폴더 위치입니다. 최종 가중치 파일(Weights)파일도 해당 디렉토리에 저장됩니다.

사용할 용도에 맞게 위의 내용을 변경 및 원하는 딮러닝 모델(cfg파일)을 만든 후에 darknet 폴더에서 다시 make를 실행한 후, 다음과 같은 명령어를 입력하여 학습을 진행합니다.

1
./darknet yolo train cfg/yolo.cfg (pre-trained model)

여기서 Pre-trained Model이 없다면, 가중치는 자체적으로 초기화한 가중치 값을 사용하게 됩니다. 학습이 정상적으로 진행이 된다면, 다음과 같은 화면이 나타나게 됩니다.


Popit은 페이스북 댓글만 사용하고 있습니다. 페이스북 로그인 후 글을 보시면 댓글이 나타납니다.