一、数据集准备
1、数据文件夹结构
(1)在darknet_linux目录下新建个文件夹mydata2007;
(2)在darknet_linux/mydata2007目录下新建文件夹mydata2007;
()在darknet_linux/mydata2007/mydata2007目录下分别新建Annotations、ImageSets、JPEGImages和labels四个文件夹。
2、存放数据
(1)将图片复制到darknet_linux/mydata2007/mydata2007/JPEGImages目录下;
(2)将xml放到darknet_linux/mydata2007/mydata2007/Annotations目录下;
备注xml只是为了得到最终的标签文件,可以看成是标签预处理之前的文件,不一定是xml
3、处理数据
darknet_linux/mydata2007/mydata2007/ImageSets下新建Main文件夹,执行python3 write_maintxt.py
,得到test.txt,train.txt.trainval.txt,val.txt,比例为2:1:2:1
4、得到标签
执行python3 voc_label.py
得到labels文件夹下的标签文件以及2007_test.txt,2007_train.txt,2007_val.txt,train_all.txt,train.txt
2、cfg/mydata.data
二、配置文件修改
1、cfg/mydata.cfg
filters和class需要修改,class=20,filters=3*(class+5)
2、data/mydata.names
存放类别标签
3、cfg/mydata.data
三、开始训练
1、不记录log文件的训练命令
./darknet detector train cfg/mydata.data cfg/mydata.cfg weights/darknet53.conv.74
2、记录log文件的训练命令
./darknet detector train cfg/mydata.data cfg/mydata.cfg weights/darknet53.conv.74 2>1 | tee visualization/train_yolov3.log
3、恢复训练
./darknet detector train cfg/mydata.data cfg/mydata.cfg backup/mydata.backup
四、测试代码
1、带有cfg/mydata.data参数的测试命令
./darknet detector test cfg/mydata.data cfg/mydata.cfg backup/mydata_10000.weights data/dog.jpg
2、不带cfg/mydata.data参数的测试命令
./darknet detect cfg/mydata.cfg backup/mydata_10000.weights data/dog.jpg
3、带有阈值参数的测试命令
./darknet detect cfg/crop.cfg backup/crop_15000.weights crop2007/crop2007/JPEGImages/40-10021014190928105705535.jpg -thresh 0.25
备注:
detec走的是darknet.c,有时可能会需要在437行修改参数
detector走的是detector.c
测试代码的框的粗细在image.c里面调节,模型保存在detector.c里面