关于yolo配置文件以及训练时各参数的含义

一、配置文件yolo.cfg

[net]
# Testing            ### 测试模式                                          
# batch=1
# subdivisions=1
# Training           ### 训练模式,每次前向的图片数目 = batch/subdivisions 
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  ### 迭代次数                                          
policy=steps         ### 学习率策略 
steps=40000,45000    ### 学习率变动步长

batch:每次迭代要进行训练的图片数量

subdivision:batch中的图片再产生子集,源码中的图片数量int imgs = net.batch * net.subdivisions * ngpus

也就是说每轮迭代会从所有训练集里随机抽取 batch = 64 个样本参与训练,每个batch又会被分成 64/16 = 4 次送入网络参与训练,以减轻内存占用的压力,也就是每次 subdivision = 16 送入网络

width:输入图片宽度, height:输入图片高度,channels :输入图片通道数

对于每次迭代训练,YOLO会基于角度(angle),饱和度(saturation),曝光(exposure),色调(hue)产生新的训练图片

angle:图片角度变化,单位为度,假如 angle=5,就是生成新图片的时候随机旋转-5~5度

weight decay:权值衰减

防止过拟合,当网络逐渐过拟合时网络权值往往会变大,因此,为了避免过拟合,在每次迭代过程中以某个小因子降低每个权值,也等效于给误差函数添加一个惩罚项,常用的惩罚项是所有权重的平方乘以一个衰减常量之和。权值衰减惩罚项使得权值收敛到较小的绝对值。

angle:图片角度变化,单位为度,假如 angle=5,就是生成新图片的时候随机旋转-5~5度

saturation & exposure: 饱和度与曝光变化大小,tiny-yolo-voc.cfg中1到1.5倍,以及1/1.5~1倍

hue:色调变化范围,tiny-yolo-voc.cfg中-0.1~0.1

max_batches:最大迭代次数

learning rate:学习率

学习率决定了参数移动到最优值的速度快慢,如果学习率过大,很可能会越过最优值导致函数无法收敛,甚至发散;反之,如果学习率过小,优化的效率可能过低,算法长时间无法收敛,也易使算法陷入局部最优(非凸函数不能保证达到全局最优)。合适的学习率应该是在保证收敛的前提下,能尽快收敛。
设置较好的learning rate,需要不断尝试。在一开始的时候,可以将其设大一点,这样可以使weights快一点发生改变,在迭代一定的epochs之后人工减小学习率。

policy:调整学习率的策略

调整学习率的policy,有如下policy:CONSTANT, STEP, EXP, POLY,STEPS, SIG, RANDOM

steps:学习率变化时的迭代次数

根据batch_num调整学习率,若steps=100,20000,30000,则在迭代100次,20000次,30000次时学习率发生变化,该参数与policy中的steps对应

scales:学习率变化的比率

相对于当前学习率的变化比率,累计相乘,与steps中的参数个数保持一致

 

二、训练时的参数含义

  • 397: 指示当前训练的迭代次数
  • 7.748884: 是总体的Loss(损失)
  • 7.593599 avg: 是平均Loss,这个数值应该越低越好,一般来说,一旦这个数值低于0.060730 avg就可以终止训练了。
  • 0.000025 rate: 代表当前的学习率,是在.cfg文件中定义的。
  • 5.510836 seconds: 表示当前批次训练花费的总时间。
  • 25408 images: 这一行最后的这个数值是397*64的大小,表示到目前为止,参与训练的图片的总量。
  • Avg IOU: 0.574694: 表示在当前subdivision内的图片的平均IOU,代表预测的矩形框和真实目标的交集与并集之比,这里是57.46%,这个模型需要进一步的训练。
  • Class: 0.962937: 标注物体分类的正确率,期望该值趋近于1。
  • Obj: 0.022145: 越接近1越好。
  • No Obj: 0.000459: 期望该值越来越小,但不为零。
  • count: 2:count后的值是所有的当前subdivision图片(本例中一共8张)中包含正样本的图片的数量。在输出log中的其他行中,可以看到其他subdivision也有的只含有<16个正样本,说明在subdivision中含有不含检测对象的图片。

参考:

https://blog.csdn.net/la_fe_/article/details/81623869

https://blog.csdn.net/a8039974/article/details/90443950

转载于:https://www.cnblogs.com/answerThe/p/11544361.html

你可能感兴趣的:(人工智能)