본문 바로가기

머신러닝/YOLO

Object Detection / YOLOv3 : train_detector - 1

반응형

./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이다.

 


datacfg file

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 논문 참고

위의 파일은 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 값으로 넣는다.

이렇게 적용된다.


 

반응형