[Object Detection] darknet 으로 Gaussian YOLOv3 학습하기 (linux)
darknet 학습하기는 아래 포스팅 참고하시길 바란다.
darknet 학습 준비하기 : https://eehoeskrap.tistory.com/367
darknet custom 학습하기 : https://eehoeskrap.tistory.com/370
본 포스팅은 리눅스 환경에서 AlexeyAB 의 darknet 레포를 이용하여 Gaussian Yolo v3 를 학습하는 방법을 담는다.
또한 Gaussian Yolo v3 를 학습하는데 있어서 발생하는 issue 들을 정리하였다.
https://github.com/AlexeyAB/darknet
1. AlexeyAB 에서 업데이트된 git 다운로드 or Gaussin yolo v3 에 관련된 파일들만 대체
필자는 귀찮아서, 폴더를 하나 생성하여 git 을 새로 다운 받았다.
$ git clone https://github.com/AlexeyAB/darknet.git
2. Cmake or make 를 통하여 컴파일하기
https://github.com/AlexeyAB/darknet#how-to-compile-on-linux-using-make
위 방법을 참조하여 컴파일을 수행한다. 필자는 아래와 같이 Makefile 을 설정하고 간단하게 make 를 실행하였다.
GPU=1
CUDNN=1
CUDNN_HALF=1
OPENCV=1
AVX=0
OPENMP=0
LIBSO=0
ZED_CAMERA=0
$ make
3. 데이터셋 준비하기
아래 포스팅 참고하여 데이터세트 및 .data 파일, .names 파일 등을 준비하기
https://eehoeskrap.tistory.com/367
https://eehoeskrap.tistory.com/370
4. cfg 수정하기
오리지널 gaussian yolo cfg 는 cfg 폴더에 담겨져 있다.
기존 yolo v3 는 아래와 같이 필터수를 수정하였다면,
filters = (classes + 4 + 1) * <numbers in mask>
새로운 Gaussian Yolo v3 는 아래와 같이 필터수를 조정한다.
filters = (classes + 8 + 1) * 3
또한, learning_rate 수를 0.001 이 아닌 0.00001 로 수정한다. (그 이유는 맨 아래에서 설명)
learning_rate=0.00001
burn_in=1000
max_batches = 50200
policy=steps
steps=40000,45000
scales=.1,.1
max_epochs = 300
그리고, 각자 입맛에 맞게 cfg 파일을 수정하여준다. 클래스 수 등등
5. 학습하기
필자는 mAP 및 loss avg 를 눈으로 확인하기 위하여 -map 플래그를 사용하였다.
./darknet detector train user.data cfg/Gaussian_yolov3_BDD.cfg darknet53.conv.74 -gpus 0 -map
gaussain yolo v3 학습 이슈
- learning_rate = 0.001 vs learning_rate = 0.00001
참고자료 : https://github.com/AlexeyAB/darknet/issues/4190
- loss 값이 800 ~ 이상 값으로 계속 떨어지지 않고, mAP 는 올라가는 이슈
- 이는 학습이 잘 되고 있는 것이라고 한다.
- gaussian yolo v3 가 원래 손실값이 높게 나온다고 레포 저자가 말하고 있다.
참고자료 : https://github.com/AlexeyAB/darknet/issues/4190
- gaussain yolo v3 에서 작은 객체에 대해서 false positives 가 생기는 현상
- 이는 아래와 같이 iou_normalizer 및 uc_normalizer 값을 조정하여 재학습한다.
[Gaussian_yolo]
iou_normalizer=0.1
uc_normalizer=0.1
참고자료 : https://github.com/AlexeyAB/darknet/issues/4408
- gaussian yolo v3 에서 사용되는 GIOU 에 대한 자료
https://arxiv.org/abs/1902.09630v2
'AI Research Topic > Object Detection' 카테고리의 다른 글
[Object Detection] The Car Connection Picture Dataset (4) | 2020.02.03 |
---|---|
[Paper Review] Imbalance Problems in Object Detection : A Review (1) | 2020.01.30 |
[Paper Review] M2Det : A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network (7) | 2020.01.09 |
[Object Detection] Gaussian YOLOv3 (0) | 2019.12.27 |
[Object Detection] darknet custom 학습하기 (83) | 2019.10.16 |