1 把自己的数据集打标记

用labelImg生成的是xml格式标记文件

https://blog.csdn.net/qq_34806812/article/details/81670310
<https://blog.csdn.net/qq_34806812/article/details/81670310>

https://blog.csdn.net/qq_34806812/article/details/81394646
<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
<https://blog.csdn.net/qq_34806812/article/details/82355614>



2 整理数据集路径格式:

2.1 建立文件夹层次为 darknet / VOCdevkit / VOC2018,voc2018下面有三个文件夹:



2.2 JPEGImages放所有的训练图片,annotation放所有的xml标记文件。

2.3 Imagesets包含两个文件夹:



3 生成txt标签和list文件

3.1 Main包下新建3个txt:



里面的txt内容格式为图片名(不带后缀):



(生成train.txt的教程:

把一个文件夹中的所有文件名统计到一个txt中   
https://blog.csdn.net/qq_34806812/article/details/81674290
<https://blog.csdn.net/qq_34806812/article/details/81674290>)

3.2 修改voc_label.py(根据自己情况修改):





3.3 运行voc_label.py

运行后发现label文件夹下面已经生成了对应的txt标签



同时发现在vocdevkit同目录下也生成了5个list文件



打开发现路径也自动写好了:



4 修改需要的各种配置文件

4.1 新建 cfg/voc_birds.data:(可以复制cfg/voc.data进行根据自己情况的修改)



4.2 新建data / voc_birds.names:(可以复制data/voc.names 进行根据自己情况的修改)



4.3 新建cfg / yolov3-voc-birds.cfg:(可以复制cfg/yolov3-voc.cfg 进行根据自己情况的修改)

修改如下:

4.3.1 注释掉testing,打开train

4.3.2 subdivisions=8



4.3.3 共三个yolo层都要改,yolo层中的class为类别数,每一个yolo层前的conv层中的filters =(类别+5)* 3



5 在darknet目录下载权重文件:

wget https://pjreddie.com/media/files/darknet53.conv.74
 

6 训练
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之后,不再下降了,就可以停止训练了:



7.测试

训练好后可以在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
<https://blog.csdn.net/qq_34806812/article/details/81459982>



8.问题集锦

8.1 问题:CUDA Error: out of memory

解决:增大cfg文件中subdivisions,16、32或者64(最多为batch值)




subdivision:这个参数很有意思的,它会让你的每一个batch不是一下子都丢到网络里。而是分成subdivision对应数字的份数,一份一份的跑完后,在一起打包算作完成一次iteration。这样会降低对显存的占用情况。如果设置这个参数为1的话就是一次性把所有batch的图片都丢到网络里,如果为2的话就是一次丢一半。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信