我是靠谱客的博主 舒服草莓,最近开发中收集的这篇文章主要介绍yolo下cfg文件含义,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

# Testing               //测试,训练时候需要注释掉
#batch=1
#subdivisions=1
# Training
batch=64                //每次迭代要进行训练的图片数量 ,在一定范围内,一般来说Batch_Size越大,其确定的下降方向越准,引起的训练震荡越小。 
subdivisions=8          //源码中的图片数量int imgs = net.batch * net.subdivisions * ngpus,按subdivisions大小分批进行训练 
height=416              //输入图片高度,必须能够被32整除
width=416               //输入图片宽度,必须能够被32整除
channels=3              //输入图片通道数   位深度/8是通道数
momentum=0.9            //冲量
decay=0.0005            //权值衰减
angle=0                 //图片角度变化,单位为度,假如angle=5,就是生成新图片的时候随机旋转-5~5度    
saturation = 1.5        //饱和度变化大小
exposure = 1.5          //曝光变化大小
hue=.1                  //色调变化范围,tiny-yolo-voc.cfg中-0.1~0.1 
learning_rate=0.001     //学习率
burn_in=1000
max_batches = 120200    //训练次数,建议设置为classes*2000,但是不要低于4000
policy=steps            //调整学习率的策略
//根据batch_num调整学习率,若steps=100,25000,35000,则在迭代100次,25000次,35000次时学习率发生变化,该参数与policy中的steps对应
steps=40000,80000     // 一般设置为max_batch的80%与90%
scales=.1,.1             //相对于当前学习率的变化比率,累计相乘,与steps中的参数个数保持一致;

cfg参数

net层

[net]
batch=96 # 每次iteration训练的时候,输入的图片数量
subdivisions=48	# 将每一次的batch数量,分成subdivision对应数字的份数,一份一份的跑完后,在一起打包算作完成一次iteration
width=512 # width=height,大小为32的倍数
momentum=0.9 # 动量,影响梯度下降到最优的速度,一般默认0.9
decay=0.0005 # 权重衰减正则系数,防止过拟合
angle=0 # 旋转角度,生成更多训练样本
saturation=1.5 # 调整饱和度
exposure=1.5 # 调整曝光度
hue=.1 # 调整色调
learning_rate=0.001
burn_in=1000 # 学习率控制的参数,在迭代次数大于burn_in时,采用policy的更新方式
max_batches=500200 # 最大迭代次数
policy=steps
steps=400000,450000 # 学习率变动步长,Steps和scales相互对应, 这两个参数设置学习率的变化, 根据batch_num调整学习率
scales=.1,.1 # 学习率变动因子,迭代到400000次时,学习率x0.1; 450000次迭代时,学习率又会在前一个学习率的基础上x0.1

shortcut层

[shortcut] # shortcut部分是卷积的跨层连接,就像Resnet中使用的一样
from=-2 # 参数from是−2,意思是shortcut的输出是通过与先前的倒数第二层网络相加而得到, 跨越连接
activation=linear
idx=6

route层

[route]
layers=-1, -3 # 在当前层引出之前卷积所得到的特征层,这里的-1,-3代表
			  # 将前一层输出的feature和前第3层输出的feature concat
			  # 以后再作为当前层的输出,也就是作为下一个卷积的输入。所
			  # 以route输出的通道数要和下一个conv输入的通道一致

yolo层前的conv层

[convolutional]
batch_normalize=0 # BN,是否做BN操作
pad=1 # 如果pad为0,padding由padding参数指定
      # 如果pad为1,padding大小为size/2,padding应该是对输入图像左边缘拓展的像素数量
filters=42  # =num(yolo层个数)*(classes+5),5是5个坐标,<x_center> <y_center> <width> <height><object-class>

yolo层

[yolo]
mask=6,7,8 # anchors的索引值,如果mask的值是0,1,2,这意味着使用第一,第二和第三个anchor
anchors = 7, 10, 14, 24, 27, 43, 32, 97, 57, 64, 92, 109, 73, 175, 141, 178, 144, 291
classes=9 # 类别数目
num=9 # 每个grid cell预测几个box,和anchors的数量一致
jitter=.3 # 通过抖动来防止过拟合
ignore_thresh=.7 # 当预测的检测框与ground true的IOU大于ignore_thresh的时候,参与loss的计算,否则,检测框的不参与损失计算
truth_thresh=1
random=1 # 多尺度训练:如果显存小,设置random=0,关闭多尺度训练。
         # random设置成1,可以增加检测精度precision,每次迭代图片大小随机从320到608,步长为32,如果为0,每次训练大小与输入大小一致
         # 当打开随机多尺度训练时,前面设置的网络输入尺寸width和height其实就不起作用了,width会在320到608之间随机取值,且width=height,
         # 每10轮随机改变一次,一般建议可以根据自己需要修改随机尺度训练的范围,这样可以增大batch,可以自行尝试!

最后

以上就是舒服草莓为你收集整理的yolo下cfg文件含义的全部内容,希望文章能够帮你解决yolo下cfg文件含义所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部