文章目录

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

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

[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定义的anchorsanchors = 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_scalejitter=.3                     ###    通过抖动增加噪声来抑制过拟合ignore_thresh = .5            ###    决定是否需要计算IOU误差的参数,大于thresh,IOU误差不会夹在cost function中truth_thresh = 1random=1                      ###    random为1时会启用Multi-Scale Training,随机使用不同尺###    寸的图片进行训练,如果为0,每次训练大小与输入大小一致; ###    是否随机确定最后的预测框,显存小可设置成0
  • 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中的参数个数保持一致

详解 yolo配置文件各参数的含义相关推荐

  1. [原创]Saltstack学习笔记:命令参数详解以及配置文件说明

    很久没有更新saltstack的文章了,今天还是来更新一点,又开始对saltstack复习了一下. 前边写了一点<saltstack入门概述(1)>以及<Saltstack如何安装( ...

  2. 详解Everest 命令行参数【转载】

    详解Everest 命令行参数 Everest是一款著名的硬件识别软件,可以详细的显示出PC每一个方面的信息并输出为多种形式的报告.是笔者非常喜欢的一款硬件识别工具软件,可以说是"装机必备, ...

  3. 详解Tomcat 配置文件server.xml

    1. 详解Tomcat 配置文件server.xml https://www.cnblogs.com/kismetv/p/7228274.html 2.Tomcat下Server.xml配置详解 ht ...

  4. 一文详解 YOLO 2 与 YOLO 9000 目标检测系统

    一文详解 YOLO 2 与 YOLO 9000 目标检测系统 from 雷锋网 雷锋网 AI 科技评论按:YOLO 是 Joseph Redmon 和 Ali Farhadi 等人于 2015 年提出 ...

  5. python函数中可变参数的传递方式是_详解Python函数可变参数定义及其参数传递方式...

    Python函数可变参数定义及其参数传递方式详解 python中 函数不定参数的定义形式如下 1. func(*args) 传入的参数为以元组形式存在args中,如: def func(*args): ...

  6. python最小值函数_Python3 min() 函数详解 获取多个参数或列表中的最小值

    Python3 min() 函数详解 获取多个参数或列表中的最小值 min()函数的主要作用是获取对象中最小的值,参数可以是任何可迭代对象(字符串.列表.元组.字典等),可以是一个参数内的值进行对比, ...

  7. java函数式编程归约reduce概念原理 stream reduce方法详解 reduce三个参数的reduce方法如何使用

    java函数式编程归约reduce概念原理 stream reduce方法详解 reduce三个参数的reduce方法如何使用

  8. java 配置文件的路径_详解java配置文件的路径问题

    详解java配置文件的路径问题 详解java配置文件的路径问题 各种语言都有自己所支持的配置文件,配置文件中有很多变量是经常改变的.不将程序中的各种变量写死,这样能更方便地脱离程序本身去修改相关变量设 ...

  9. html跨行使用的属性,HTML表格标记详解4:TD参数中设定跨列跨行属性

    this.p={ m:2, b:2, loftPermalink:'', id:'fks_083074083081084075085087087095083084084067083083082065' ...

最新文章

  1. 为什么我的python程序编译器没有行代号_为什么我的python字典没有附加新变量呢?...
  2. 第166天:canvas绘制饼状图动画
  3. go int32不能打印0_Go并发实战--sync WaitGroup
  4. 最强鸿蒙系统txt_鸿蒙系统升级时间确认,哪些手机有望成为首批“宠儿”?
  5. 日益努力而后风生水起,送3本技术好书
  6. FFmpeg总结(六)AV系列结构体之AVPacket
  7. mysql 数据联合查询语句_MySQL - 数据查询 - 联合查询
  8. 怎么把多个pdf文件合并成一个?
  9. 做word计算机海报图片,使用word制作宣传海报
  10. 主分区损坏diskgenius_Diskgenius硬盘分区表坏了不要紧 用软件三步就能修复
  11. redis持久化、主从和哨兵模式详解
  12. 基于哈夫曼编码的文件压缩解压
  13. Netflix和它的混世猴子
  14. 电脑找不到硬盘的解决方案
  15. 第1期技术: DQN算法原理及实现过程
  16. 地图导航中的路径规划算法(综述)
  17. 【C++】洛谷P1330 封锁阳光大学
  18. 御坂坂的c++学习之路(5)
  19. 弹性伸缩,轻松上云-华为云弹性云服务器 ECS
  20. 生产制造企业一物一码解决方案_爱码SaaS

热门文章

  1. HTML中的 后代选择器 和 子代选择器
  2. 如何给PDF中的内容添加下划线
  3. 关于CClientDC与CPAINTDC,以及GetDC与GetWindowDC。
  4. Unity的IOS PlayerSettings的设置说明
  5. python基础知识ppt
  6. Web前端(15)_input表单
  7. 橡胶密封圈的作用和优点
  8. 视频原声能去掉吗?怎么批量处理
  9. R语言使用cph函数和rcs函数构建限制性立方样条cox回归模型、使用rms包的Predict函数计算指定连续变量和风险比HR值的关系、可视化连续变量和风险值HR的关系
  10. Mac电脑没有声音,苹果电脑没有声音怎么办