[YOLO DARKNET] 구성 및 설치, 사용방법
이번 포스팅에서는 딥러닝 프레임워크 중, Real Time Detection & Recognition으로 유명한 YOLO Darknet(번역) (논문 원본)의 구성, 설치 및 사용방법에 대해서 포스팅하겠습니다.
YOLO Darknet 페이지(https://pjreddie.com/darknet/yolo/) 를 확인하시면, 조금 더 자세한 정보를 확인할 수 있습니다.
Pre - requirement
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
./darknet yolo test cfg/yolo.cfg yolo.weights data/dog.jpg
- 카메라 스트리밍 영상 혹은 동영상에 대한 테스트
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이 없다면, 가중치는 자체적으로 초기화한 가중치 값을 사용하게 됩니다. 학습이 정상적으로 진행이 된다면, 다음과 같은 화면이 나타나게 됩니다.