欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用yolov3 VOC训练自己的数据时出现的问题及解决方法

程序员文章站 2024-03-17 09:14:10
...

1.问题:各种out of memory

可能的原因:电脑显存不够,batch比较大,或者开了random = 1的时候带不动.

解决方法:darknet/cfg/yolov3-voc.cfg 文件最后面random = 0;,如果还不行就减小batch,以及减小batch/subdivisions。

2.问题:训练过程中出现大量的nan -nan,loss,avg啥啥都是nan

可能的原因:(1)batch比较小,可以改为64,或者128,都是正常的;

(2)scales 设置的不对,导致步长变大,结果就不收敛了;

(3)看到网上有说是因为官方的预训练权重可能与你的相差比较大,可以自己从头训练,但我觉得先试试其他方法再问最后自己训练吧。

解决方法:我是因为看了知网-水果识别的例子,用了他的steps和scales,所以训练到1000次的时候rate猛增10倍,然后就振荡发散了,所以后来修改好了再在第900的基础上继续训练就没问题了。


[net]
# Testing
# batch=1
# subdivisions=1
# Training       # 训练的时候把Testing的参数注释掉,把Training的参数取消注释
batch=64
subdivisions=16
width=416
height=416
channels=3
momentum=0.9
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1

learning_rate=0.001          # 根据需要修改学习率,就是梯度下降的速率,越大训练速度越快但会牺牲准确率
burn_in=1000
max_batches = 100000     # 训练的总次数
policy=steps
steps=100,10000,70000,80000,90000        # 训练到相应次数后学习率变化
scales=10,10,.1,.1,.1        # 学习率变化情况,是累乘操作
#以上为知网-水果识别中摘取,但不适合我的训练数据,所以修改为下面的代码

[net]
# Testing
#  batch=1
#  subdivisions=1
# Training
batch=64
subdivisions=16
width=416
height=416
channels=3
momentum=0.9
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1

learning_rate=0.001
burn_in=1000
# max_batches = 50200
max_batches = 100000
policy=steps
steps=40000,45000
scales=.1,.1
# 其实就是yolov3默认的参数设置