yolov3训练自己的数据集

1)在 darknet 目录下载权重文件:
wget https://pjreddie.com/media/files/darknet53.conv.74
这里的训练使用迁移学习,所以下载的yolo预训练的权重文件(不含全连接层)
2)训练
./darknet
detector train cfg/voc-ball.data cfg/yolov3-voc-ball.cfg
darknet53.conv.74
如需要存储训练日志,执行./darknet detector train cfg/voc-ball.data cfg/yolov3-voc-ball.cfg
darknet53.conv.74 2>1 | tee visualization/train_yolov3_ball.log
执行前应建立visualization目录。可通过将visualization.zip解压到darknet项目目录下。
训练时的输出信息: Region 106 Avg IOU: 0.794182, Class: 0.999382, Obj: 0.966953, No Obj:
0.000240, .5R: 1.000000, .75R: 0.750000, count: 4
Region 106 :网络层的索引为106
Region Avg IOU: 0.794182: 表示在当前l.batch(batch /= subdivs )内的图片的平均IOU
Class: 0.0.999382: 标注目标分类的正确率,期望该值趋近于1。
Obj: 0.966953: 检测目标的平均目标置信度,越接近1越好。
No Obj: 0.000793: 检测目标的平均目标性得分。
.5R: 1.0:模型检测出的正样本(iou>0.5)与实际的正样本的比值。
.75R: 0.75 模型检测出的正样本(iou>0.75)与实际的正样本的比值。
count: 4:count后的值是当前l.batch(batch /= subdivs )内图片中包含正样本的图片的数量。

3) 训练log文件分析
在visualization文件夹下,执行:
cd visualization
python extract_log.py
得到两个文件: train_log_loss.txt, train_log_iou.txt
改变其中的lines的值
然后,执行:
python train_loss_visualization.py
python train_iou_visualization.py
得到avg_loss.png和Region Avg IOU.png
 
4) 训练建议
batch=64
subdivisions=16 (显存大时可用8)
把max_batches设置为 (classes*2000);但最少为4000。例如如果训练3个目标类别,
max_batches=6000把steps改为max_batches的80% and 90%;例如steps=4800, 5400
为增加网络分辨率可增大height和width的值,但必须是32的倍数 .cfg-file (height=608,
width=608 or any value multiple of 32) 。这有助于提高检测精度。
因此训练时使用
batch=64
subdivisions=16
width=608
height=608
max_batches = 4000
policy=steps
steps=3200,3600

6. 测试训练出的网络模型
训练好后可以在 backup看到权重文件
尝试test前要修改cfg文件,切换到test模式。
可以重新建立一个测试cfg文件, 如yolov3-voc-ball-test.cfg
测试图片:
./darknet detector test cfg/voc-ball.data cfg/yolov3-voc-ball.cfg backup/yolov3-voc-ball_final.weights testfiles/img1.jpg


测试视频:
./darknet detector demo cfg/voc-ball.data cfg/yolov3-voc-ball.cfg backup/yolov3-voc-ball.backup testfiles/messi.mp4

7. 性能统计
计算mAP
首先执行
./darknet detector valid cfg/voc-ball.data cfg/yolov3-voc-ball.cfg backup/yolov3-voc-ball.backup
生成results/comp4_det_test_messi.txt文件
然后执行

生成testMessi/messi_pr.pkl文件

画出PR曲线
然后可画出PR曲线,
修改文件draw_pr.py
fr = open('testMessi/messi_pr.pkl','rb')
执行
python draw_pr.py
8. 修改默认的先验框大小
1) 使用k-means聚类获得自己数据集的先验框大小
修改gen_anchors.py文件
width_in_cfg_file = 608.
height_in_cfg_file = 608.
执行
python
gen_anchors.py
得到的anchor大小
anchorbox.w*32
anchorbox.h*32
2) 修改cfg文件中的先验框大小

3) 重新训练和测试

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值