YOLO fastest cfg文件注释分析,大体上跟其他版本的YOLO配置文件一致,此处主要是记录一下,针对自己不熟悉的地方额外添加一点说明。

1.[net]层

[net]
batch=64
subdivisions=1
width=320
height=320
channels=3
momentum=0.949 #动量参数影响着梯度下降到最优值的速度。
decay=0.0005 #权重衰减正则项,防止过拟合。
angle=0 #数据增强,设置旋转角度。
saturation=1.5 #饱和度
exposure=1.5 #曝光量
hue=.1 #色调
这里的batch与普遍意义上的batch不是一致的。训练的过程中将一次性加载16张图片进内存,然后分4次完成前向传播,每次4张。经过16张图片的前向传播以后,进行一次反向传播。在网上的其他博客中,测试的时候需要如下设置
#Testing
#batch=1
#subdivisions=1
在YOLO fastest的cfg文件中不需要更改,因为在测试的时候,parse_network_cfg_custom函数内根据train和test进行了区分设置。
网络的宽、高和通道个数设置,由于YOLOv3的下采样一般是32倍,所以宽高必须能被32整除。多尺度训练选择为32的倍数最小320*320,最大608*608。长和宽越大,对小目标越好,但是占用显存也会高,需要权衡。
learning_rate=0.001 #学习率:刚开始训练时可以将学习率设置的高一点,而一定轮数之后,将其减小。在训练过程中,                                       #一般根据训练轮数设置动态变化的学习率。
burn_in=4000 # 在迭代次数小于burn_in时,其学习率的更新有一种方式,大于burn_in时,才采用下面的policy的更新方式。网上查到的都是这么一句描述,小于burn_in的时候是怎么更新的,我在看代码的时候没有看到yolo fastest内具体的一个计算方式,只在void update_network_gpu(network net)函数内,看到if (l.burnin_update && (l.burnin_update*net.burn_in > iteration_num)) continue;这一句,后面有时间再研究下这块。
max_batches=250000 #训练过程中最大batch
policy=steps #学习率调整的策略:constant, steps, exp, poly, step, sig, RANDOM,constant等方式。
steps=150000,180000
scales=.1,.1 #steps和scale是设置学习率的变化,比如迭代到400000次时,学习率衰减十倍,45000次迭代时,学习率又会在前一个学习率的基础上衰减十倍。

2.[convolutional]

[convolutional]
batch_normalize=1          #是否做BN操作
filters=32              #输出特征图的数量
size=3                     #卷积核的尺寸
stride=1                #做卷积运算的步长
pad=1                      #如果pad为0,padding由padding参数指定。如果pad为1,padding大小为size/2,                                                    #padding应该是对输入图像左边缘拓展的像素数量
activation=leaky           #激活函数的类型:logistic,loggy,relu,elu,relie,plse,hardtan,                                                            #lhtan,linear,ramp,leaky,tanh,stair
# alexeyAB版添加了mish, swish, nrom_chan等新的激活函数

3.下采样都是通过调整卷积层参数进行的,不存在maxpooling下采样方式:

[convolutional]
filters=8
size=3
pad=1
stride=2
batch_normalize=1
activation=leaky

4.上采样 只有一个upsample层

[upsample]
stride = 2 #上采样通过线性插值实现

5.shortcut和route层 cfg中有18个shortcut层,2个route层

[shortcut]
from=-5
activation=linear
#shortcut操作是类似ResNet的跨层连接,参数from是−5,意思是shortcut的输出是当前层与先前的倒数第三层相加而得到。一般就是add操作
[route]
layers = -7 #当属性只有一个值时,它会输出由该值索引的网络层的特征图。 此处就是提取从当前倒数第7个层输出[route]
layers=-1,81 # 当属性有两个值,就是将上一层和第81层进行concate,即沿深度的维度连接,feature map大小一致

6.yolo层

[convolutional]
size=1
stride=1
pad=1
filters=21 #每一个[region/yolo]层前的最后一个卷积层中的filters=num(每yolo层个数)*(classes+5) ,5的意义是5个坐标,代表论文中的tx,ty,tw,th,po 这里类别个数为2,(1+5)*3=21
activation=linear[yolo]
# 该层预测哪个规模的框,0,1,2用于预测小物体的anchor
# 使用anchor的索引,0,1,2表示使用下面定义的anchors中的前三个anchor
mask = 0,1,2
# anchors = 26, 48,  67, 84,  72,175, 189,126, 137,236, 265,259
# own data anchors
anchors = 20, 24,  27, 36,  38, 52,  52, 35,  61, 66,  105, 94 # 有2个yolo层,所以6个anchor
classes=2
num=6 # anchor数量,每个grid cell预测的bounding box个数是anchor总数/yolo层个数,此处是6/2=3
jitter=.15
ignore_thresh = .5 # ignore_thresh 指得是参与计算的IOU阈值大小。当预测的检测框与ground true的IOU大于ignore_thresh的时候,不会参与loss的计算,否则,检测框将会参与损失计算。目的是控制参与loss计算的检测框的规模,当ignore_thresh过于大,接近于1的时候,那么参与检测框回                              归loss的个数就会比较少,同时也容易造成过拟合;而如果ignore_thresh设置的过于小,那                                       # 么参与计算的会数量规模就会很大。同时也容易在进行检测框回归的时候造成欠拟合。                                                                   # ignore_thresh一般选取0.5-0.7之间的一个值
# 小尺度(10*10)和大尺度(20*20)用的都是0.5,
truth_thresh = 1
random=0
scale_x_y = 1.00
iou_thresh=0.213
cls_normalizer=1.0
iou_normalizer=0.07
iou_loss=ciou
nms_kind=greedynms
beta_nms=0.6

7.dropout层 cfg中有18个dropout层,均在shortcut层前,probability的设置都为0.15

[dropout]
probability=.15 

YOLO fastest cfg文件理解及注释相关推荐

  1. YOLO的cfg文件说明

    [net] # Testing ### 测试模式 # Training ### 训练模式 # batch=64 # subdivisions=16--------------------------- ...

  2. cfg文件的批量注释方法

    一个小技巧,关于使用notepad++进行文档或者config(cfg)文档进行批量注释的方法. 有时需要将配置文件(.cfg文档)中的一段进行全部注释,单个添加又很麻烦,但是又没有段注释符号,很麻烦 ...

  3. yolo cfg文件解析

    # Testing 初始batch参数要分为两类,分别为训练集和测试集,不同模式相应放开参数,#为注释符号 #batch=1 #subdivisions=1 # Training batch=64 一 ...

  4. YOLOV3中Darknet中cfg文件说明和理解

    darknet 是由 C 和 CUDA 开发的,不需要配置其他深度学习的框架(如,tensorflow.caffe 等),支持 CPU 和 GPU 运算,而且安装过程非常简单. 1.cfg文件说明理解 ...

  5. darknet 框架中.cfg文件的参数详解,以yolov3为例

    参考:darknet中cfg文件里参数的理解_zerojava0的博客-CSDN博客 参考:[Darknet源码 ]cfg文件参数详解_橘子都吃不起!的博客-CSDN博客 1.基础参数解释 batch ...

  6. 【精华】YOLO fastest/YOLOX/YOLO fastestv2/Nanodet/Nanodet Plus模型对比

    目录 YOLO fastest/YOLOX/YOLO fastestv2/Nanodet/Nanodet Plus模型对比 (1)网络结构 1> YOLO fastest 2> YOLOX ...

  7. eclipse 快捷键大全,eclipse查找类,文件,添加注释

     eclipse 快捷键大全,eclipse查找类,文件,添加注释 /* ---------------------------------------自理解------------------- ...

  8. YOLO:将yolo的.weights文件转换为keras、tensorflow等模型所需的.h5文件的图文教程

    YOLO:将yolo的.weights文件转换为keras.tensorflow等模型所需的.h5文件的图文教程 目录 解决问题 操作过程 结果输出 解决问题 将yolo的.weights文件转换为k ...

  9. MiniGUI.cfg 文件详解

    5.MiniGUI V3.0 配置详解 5 MiniGUI V3.0 的运行 5.1 建立 MiniGUI V3.0 运行环境的前提 5.2 MiniGUI.cfg说明 5.2.1 配置文件MiniG ...

  10. csgo如何保存自己的cfg_CSGO进阶教程:cfg文件调试指南

    对于 CSGO 的性能优化我们在 CSGO FPS 终极优化指南 中已经做过详解,探索为什么每一名长时间游玩 CSGO 的玩家会去寻找他喜欢的选手的 CFG ,来替换自己的 CFG .大家对职业选手的 ...

最新文章

  1. 外部电源、锂电池供电自动切换并自动给电池充电的电路
  2. java高并发(三)并发编程的基础
  3. log双线性模型log-bilinear model简单概括
  4. 国产毫米波雷达领域的领头羊,木牛科技将在明年量产77GHz汽车雷达
  5. 出现“cannot identify image file /.DS_Store'”问题解决的办法
  6. mysql高级用法(函数)
  7. python内置模块大全_python知识汇总(异常、内置模块和打包)
  8. pjk static tp.php,在测试服上偶然出现 Error: Loading chunk 5 failed.
  9. QT5.9.4支持的数据驱动查看
  10. Vue中如何正常使用锚点定位?
  11. 全网首发:成功解决UOS系统上运行JAVA程序任务栏名称问题
  12. python 科比投篮数据可视化及简单分析
  13. Liferay layout_configuration 分析
  14. 无刷舵机和普通舵机,数字舵机还有模拟舵机的区别
  15. 「POI2012」约会 Rendezvous
  16. html中闰年的计算方法,什么是闰年(怎么计算)
  17. 【金猿产品展】HIO——一体化抖音电商运营投放管理平台
  18. 途牛android源码,途牛,Android 开发工程师,一面,攒人品
  19. 手把手教你搭建SpringBoot+MySQL+Mybatis项目(采坑日记)
  20. pywin32/win32com批量转格式doc/docx/pdf/html/python-docx批量修改Word文档内容和格式

热门文章

  1. 彻头彻尾的理解ConcurrentMap
  2. MTK camera启动流程
  3. 马云、马化腾各自性格决定投资方式,你更看好谁?
  4. PUE是什么?说说数据中心和PUE
  5. java麻将算法_带赖子的超高效麻将、跑胡子胡牌算法
  6. 特步集团CIO唐坤军:用互联网十助推传统服饰行业转型升级
  7. Chapter 1.12(以千米计的平均速度)假设一个跑步者1小时40分35秒跑了24英里。编写一个程序显示以每小时多少千米为单位的平均速度值。(注意,1英里等于1.6千米。)
  8. 怎么用gnuplot画动图
  9. 我在文心一言APP挑战宿管阿姨!打不赢,根本打不赢!
  10. 无线广告巨头渠道火拼