yolov3中cfg含义注释

这篇博客详细解释了YOLOv3配置文件中各项参数的作用,如网络输入尺寸、动量、权重衰减、数据增强策略以及学习率的调整方式。学习率策略包括设定变化步长和比率,以优化训练过程。此外,还介绍了卷积层参数和Yolo层的配置,如滤波器数量、激活函数等。博主分享了一个全面的资源链接,供读者深入理解YOLOv3训练参数设置。
摘要由CSDN通过智能技术生成

yolov3中cfg含义注释

在写论文时,要补充训练时候设置的参数,然后经过查找资料,补充如下

[net]
# Testing
#batch=1
#subdivisions=1
# Training
batch=4
subdivisions=1
width=320              ### 网络的输入宽、高、通道数
height=320
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 = 500200    ### 迭代次数
policy=steps            ### 学习率策略
steps=400000,450000     ### 学习率变动步长
scales=.1,.1            ### 学习率变动因子

网上找了一份更加全面的注释,大家选择使用。觉得总结的非常好,链接如下:https://blog.csdn.net/qq_35872456/article/details/84216129?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522161201832916780269876803%252522%25252C%252522scm%252522%25253A%25252220140713.130102334…%252522%25257D&request_id=161201832916780269876803&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-84216129.pc_search_result_before_js&utm_term=yolov3cfg

 
[net]
# Testing                    ###    测试模式
# Training                   ###    训练模式
# batch=64
# subdivisions=16
 
---------------------------------------------------------------------------------------------------------
batch=64                     ###    每一次迭代送到网络的图片数量,也叫批数量。增大这个可以让
                             ###    网络在较少的迭代次数内完成一个epoch。在固定最大迭代次数的
                             ###    前提下,增加batch会延长训练时间,但会更好的寻找到梯度下降的
                             ###    方向。如果你显存够大,可以适当增大这个值来提高内存利用率。
                             ###    这个值是需要大家不断尝试选取的,过小的话会让训练不够收敛,
                             ###    过大会陷入局部最优。
 
subdivisions=32              ###    这个参数很有意思的,它会让你的每一个batch不是一下子都丢到
                             ###    网络里。而是分成subdivision对应数字的份数,一份一份的跑
                             ###    完后,在一起打包算作完成一次iteration。这样会降低对显存的
                             ###    占用情况。如果设置这个参数为1的话就是一次性把所有batch的
                             ###    图片都丢到网络里,如果为2的话就是一次丢一半。
 
    
                             ###    batch/subdivisions作为一次性送入训练器的样本数量,
                             ###    如果内存不够大,则会将batch分割为subdivisions个子batch
---------------------------------------------------------------------------------------------------------
width=32                     ###    input图像的宽
height=32                    ###    input图像的高
channels=3                   ###    input图像的通道数 3为RGB彩色图片,1为灰度图,4为RGBA图,A通道表示透明度
 
                             ###    以上三个参数为输入图像的参数信息width和height影响网络
                             ###    对输入图像的分辨率,从而影响precision,只可以设置成32的倍数
---------------------------------------------------------------------------------------------------------
momentum=0.9                 ###    冲量。DeepLearning1中最优化方法中的动量参数,这个值影响着梯
                             ###    度下降 到最优值得速度,冲量的建议配置为0.9。
 
decay=0.0005                 ###    权值衰减。使用的目的是防止过拟合,当网络逐渐过拟合时网络权值往往会变
                             ###    大,因此,为了避免过拟合,在每次迭代过程中以某个小因子降低
                             ###    每,decay参数越大对过拟合的抑制能力越强
                             ###    个权值,也等效于给误差函数添加一个惩罚项,常用的惩罚项是所有
                             ###    权重的平方乘以一个衰减常量之和。权值衰减惩罚项使得权值收敛到较小的绝对值。
 
angle=180                    ###    图片角度变化,单位为度,假如angle=5,
                             ###    就是生成新图片的时候随机旋转-5~5度 
---------------------------------------------------------------------------------------------------------
saturation = 1.5
exposure = 1.5               ###    饱和度与曝光变化大小,tiny-yolo-voc.cfg中1到1.5倍,
                             ###    以及1/1.5~1倍 
 
hue=.1                       ###    色调变化范围,tiny-yolo-voc.cfg中-0.1~0.1 
 
 
                             ###    在每次迭代中,会基于角度、饱和度、曝光、色调产生新的训练图片。
---------------------------------------------------------------------------------------------------------
 
learning_rate=0.001          ###    初始学习率。训练发散的话可以降低学习率。学习遇到瓶颈,loss不变   
                             ###    的话也可以减低学习率。
 
                             ###    学习率决定了参数移动到最优值的速度快慢,如果学习率过大,
                             ###    很可能会越过最优值导致函数无法收敛,甚至发散;反之,
                             ###    如果学习率过小,优化的效率可能过低,算法长时间无法收敛,
                             ###    也易使算法陷入局部最优(非凸函数不能保证达到全
                             ###    局最优)。合适的学习率应该是在保证收敛的前提下,能尽快收
                             ###    敛。设置较好的learning rate,需要不断尝试。在一开始的时
                             ###    候,可以将其设大一点,这样可以使weights快一点发生改变,在
                             ###    迭代一定的epochs之后人工减小学习率。在yolo训练中,网络训
                             ###    练160epoches,初始学习率为0.001,在60和90epochs时将学习率除以10。
 
 
burn_in=1000                 ###    在迭代次数小于burn_in时,其学习率的更新有一种方式,大于
                             ###    burn_in时,才采用policy的更新方式
 
max_batches = 50000          ###    最大迭代次数。训练达到max_batches后停止学习
policy=steps                 ###    学习策略,一般都是step这种步进式。
                             ###    有policy:constant, steps, exp, poly, step, sig, RANDOM,constant等方式
 
steps=100, 25000, 35000      ###    学习率变化时的迭代次数
scales=10,.1,.1              ###    学习率变化的比率。这两个是组合一起的,举个例子:learn_rate: 0.001,
                             ###    step:100,25000,35000   scales: 10, .1, .1 这组数据的
                             ###    意思就是在0-100次iteration期间learning rate为原始0.001,
                             ###    在100-25000次iteration期间learning rate为原始的10倍0.01,
                             ###    在25000-35000次iteration期间learning rate为当前值的0.1倍,
                             ###    就是0.001, 在35000到最大iteration期间使用learning rate为
                             ###    当前值的0.1倍,就是0.0001。随着iteration增加,降低学习率可以
                             ###    是模型更有效的学习,也就是更好的降低train loss。
 
[convolutional]
batch_normalize=1            ###    是否做BN
filters=32                   ###    输出多少个特征图
size=3                       ###    卷积核的尺寸
stride=1                     ###    做卷积运算的步长
pad=1                        ###    如果pad为0,padding由 padding参数指定。如果pad为1,padding大小为size/2
activation=leaky
 
......
......


[convolutional]
size=1
stride=1
pad=1
filters=27                    ###    每一个[region/yolo]层前的最后一个卷积层中的
                              ###    filters=(classes+1+coords)*anchors_num,
                              ###    其中anchors_num 是该层mask的一个值.如果没有mask
                              ###    则 anchors_num=num是这层的ancho5的意义是5个坐标,
                              ###    论文中的tx,ty,tw,th,to。 3*(5+len(classes))
 
activation=linear             ###    激活函数-activation
                              ###    包括logistic, loggy, relu, elu, relie, plse, hardtan
                              ###    ,lhtan, linear, ramp, leaky, tanh, stair
 
 
[yolo]                        ###    在yoloV2中yolo层叫region层
mask = 6,7,8                  ###    当前属于第几个预选框,这一层预测第7、8、9个 anchor boxes,
                              ###    每个yolo层实际上只预测3个由mask定义的anchors
 
anchors = 10,13,  16,30,  33,23,  30,61,  62,45,  59,119,  116,90,  156,198,  373,326
                              ###    预测框的初始宽高,第一个是w,第二个是h,总数量是num*2,
                              ###    YOLOv2作者说anchors是使用K-MEANS获得,其实就是计算出
                              ###    哪种类型的框比较多,可以增加收敛速度,如果不设置anchors,
                              ###    默认是0.5;
 
classes=4                     ###    网络需要识别的物体种类数
num=9                         ###    每个grid cell预测几个box,和anchors的数量一致。当想要使
                              ###    用更多anchors时需要调大num,且如果调大num后训练时Obj趋近0的话
                              ###    可以尝试调大object_scale
 
jitter=.3                     ###    通过抖动增加噪声来抑制过拟合
 
ignore_thresh = .5            ###    决定是否需要计算IOU误差的参数,大于thresh,IOU误差不会夹在cost function中
 
truth_thresh = 1
 
random=1                      ###    random为1时会启用Multi-Scale Training,随机使用不同尺
                              ###    寸的图片进行训练,如果为0,每次训练大小与输入大小一致; 
                              ###    是否随机确定最后的预测框,显存小可设置成0
 

几个尺寸说明

(1)batch_size:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batch_size个样本训练;
(2)iteration:1个iteration等于使用batchsize个样本训练一次;
(3)epoch:1个epoch等于使用训练集中的全部样本训练一次;

训练log中各参数的意义
Region Avg IOU:平均的IOU,代表预测的bounding box和ground truth的交集与并集之比,期望该值趋近于1。
Class:是标注物体的概率,期望该值趋近于1.
Obj:期望该值趋近于1.
No Obj:期望该值越来越小但不为零.
Avg Recall:期望该值趋近1
avg:平均损失,期望该值趋近于0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值