用labelImg生成的是xml格式标记文件
https://blog.csdn.net/qq_34806812/article/details/81670310
https://blog.csdn.net/qq_34806812/article/details/81394646
这里建议大家用VOC和ILSVRC比赛的数据集,因为xml文件都是现成的,省去很多功夫。
或者可以去下载现成的数据集
ILSVRC2015比赛的地址是: http://image-net.org/challenges/LSVRC/2015/download-images-3j16.php
VOC 比赛地址是: http://host.robots.ox.ac.uk/pascal/VOC/index.html
标记文本的解释:https://blog.csdn.net/qq_34806812/article/details/82355614
里面的txt内容格式为图片名(不带后缀):
(生成train.txt的教程:
把一个文件夹中的所有文件名统计到一个txt中 https://blog.csdn.net/qq_34806812/article/details/81674290)
运行后发现label文件夹下面已经生成了对应的txt标签
同时发现在vocdevkit同目录下也生成了5个list文件
打开发现路径也自动写好了:
/voc_birds.data:(可以复制cfg/voc.data进行根据自己情况的修改)
(可以复制data/voc.names 进行根据自己情况的修改)
(可以复制cfg/yolov3-voc.cfg 进行根据自己情况的修改)
修改如下:
wget https://pjreddie.com/media/files/darknet53.conv.74
nohup ./darknet detector train cfg/voc_birds.data cfg/yolov3-voc-birds.cfg darknet53.conv.74 2>1 | tee visualization/train_yolov3_birds.log &
nohup $ 是防止因为ssh断开而中断服务器的进程(如果出现“找不到nohup文件”的错误,去掉命令中的“nohup ... &”)
2>1 | tee visualization/train_yolov3_birds.log 是为了保留训练中的log,为了后续绘制loss曲线。
训练开始:
训练直到loss下降到0.0X之后,不再下降了,就可以停止训练了:
训练好后可以在backup看到权重文件,
尝试test前要修改cfg文件,切换到test模式:
开始测试:
./darknet detector test cfg/voc_birds.data cfg/yolov3-voc-birds.cfg backup/birds/yolov3-voc-birds.weights
测试结果:
绘制训练中的loss、IOU等变化曲线的教程:https://blog.csdn.net/qq_34806812/article/details/81459982
解决:增大cfg文件中subdivisions,16、32或者64(最多为batch值)
subdivision:这个参数很有意思的,它会让你的每一个batch不是一下子都丢到网络里。而是分成subdivision对应数字的份数,一份一份的跑完后,在一起打包算作完成一次iteration。这样会降低对显存的占用情况。如果设置这个参数为1的话就是一次性把所有batch的图片都丢到网络里,如果为2的话就是一次丢一半。