./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74 (-flags)
위의 명령어를 darknet.c/main의 input 값으로 사용했다.
datacfg 는 "cfg/voc.data",
cfgfile 는 "cfg/yolov3-voc.cfg",
weightfile 는 "darknet53.conv.74",
그 외의 flag값들 또한 train_detector의 인자로 전달된다. (https://github.com/AlexeyAB/darknet 참고)
int *gpus 가 가리키는 값은 0
int ngpus가 가리키는 값은 1
int clear, dont_show, calc_map, show_imgs 모두 설정하지 않았으므로 0, int mjpeg_port 는 -1이다.
list *options에 datacfg 의 내용을 한줄씩 읽어 저장한후,
train_images에 key가 train인 value값을 저장한다. 이처럼 valid와 backup도 저장한다.
char *base에는 yolov3-voc를 가리킨다. cfgfile의 이름이 저장되는 것 같다.
char *filename은 "cfg/yolov3-voc.cfg", int batch = 0, time_steps = 0 이다.
위의 파일은 yolov3-voc.cfg 이고,
아래는 yolov3 논문에 나와있는 darknet-53이다.
파일은 network 정보(1) + darknet-53 구조(75) + FPN(32)으로 구성되어있다.
Residual이 파일에서는 shortcut으로 표현되었다.
#downsample으로 block이 구분되어있다.
sections->size : 108
[net] 정보 + [layer] 107개 = 108개
make_network에서는
net.n = 107고,
net.layers 가 107개 동적할당,
net.seen 한개 동적할당,
gpu 변수들이 1개씩 동적할당 된다.
section *s = (section *)n->val; 부분에서
char * type : [net], list *options의 size는 17로 넣어진다. [net] 부분이 17줄로 이루어져있기 때문!
parse_net_options에서는 options 내용을 net의 변수에 저장하거나, default 값으로 넣는다.
이렇게 적용된다.
'머신러닝 > YOLO' 카테고리의 다른 글
Object Detection / YOLOv3 : train_detector - 3 (0) | 2019.08.01 |
---|---|
Object Detection / YOLOv3 : train_detector - 2 (0) | 2019.07.31 |
Object Detection / YOLOv3 : test_detector (0) | 2019.07.10 |
텐서란 무엇인가? (0) | 2019.06.03 |