博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【YOLO学习笔记】之YOLO配置文件详解
阅读量:4075 次
发布时间:2019-05-25

本文共 5702 字,大约阅读时间需要 19 分钟。

 

如果你有什么问题,希望跟我能够一起交流,除了通过博客交流外,欢迎你加入我的QQ群,一起交流有关于机器学习、深度学习、计算机视觉有关内容。目前我并未确定具体的研究方向,所以现在 处于广泛涉猎阶段,希望我们能够一起沟通。下图是我的群二维码:

接下来我们进入正题。

在YOLO初体验中,应用到了一个后缀名为cfg的文件,在darknet中有一个文件夹,下面有各种各样的cfg文件

这些cfg文件都是YOLO的配置文件,负责YOLO所需数据集的训练工作,接下来,给大家详细讲解一下配置文件。讲解配置文件,我以 yolov2-tiny.cfg 文件为例。该文件具体内容如下:

[net]# Testing# batch=1# subdivisions=1# Training batch=1 subdivisions=1width=480height=480channels=3momentum=0.9decay=0.0005angle=0saturation = 1.5exposure = 1.5hue=.1learning_rate=0.001burn_in=1000max_batches = 500200policy=stepssteps=400000,450000scales=.1,.1[convolutional]batch_normalize=1filters=16size=3stride=1pad=1activation=leaky[maxpool]size=2stride=2[convolutional]batch_normalize=1filters=32size=3stride=1pad=1activation=leaky[maxpool]size=2stride=2[convolutional]batch_normalize=1filters=64size=3stride=1pad=1activation=leaky[maxpool]size=2stride=2[convolutional]batch_normalize=1filters=128size=3stride=1pad=1activation=leaky[maxpool]size=2stride=2[convolutional]batch_normalize=1filters=256size=3stride=1pad=1activation=leaky[maxpool]size=2stride=2[convolutional]batch_normalize=1filters=512size=3stride=1pad=1activation=leaky[maxpool]size=2stride=1[convolutional]batch_normalize=1filters=1024size=3stride=1pad=1activation=leaky###########[convolutional]batch_normalize=1size=3stride=1pad=1filters=512activation=leaky[convolutional]size=1stride=1pad=1filters=30activation=linear[region]anchors =  0.57273, 0.677385, 1.87446, 2.06253, 3.33843, 5.47434, 7.88282, 3.52778, 9.77052, 9.16828bias_match=1classes=1coords=4num=5softmax=1jitter=.2rescore=0object_scale=5noobject_scale=1class_scale=1coord_scale=1absolute=1thresh = .6random=1

加注释后文件如下:

[net]# Testing# batch=1# subdivisions=1# Trainingbatch=1                           #每batch个样本更新一次参数。每次迭代要进行训练的图片数量 。subdivisions=1                     #如果内存不够大,将batch分割为subdivisions个子batch,每个子batch的大小为batch/subdivisions。                                   #在darknet代码中,会将batch/subdivisions命名为batch。width=416                          #Input图像的宽height=416                         #input图像的高channels=3                         #Input图像的通道数momentum=0.9                       #动量decay=0.0005                       #权重衰减正则项,防止过拟合angle=0                            #通过旋转角度来生成更多训练样本saturation = 1.5                   #通过调整饱和度来生成更多训练样本exposure = 1.5                     #通过调整曝光量来生成更多训练样本hue=.1                             #通过调整色调来生成更多训练样本learning_rate=0.0001               #初始学习率max_batches = 500200               #训练达到max_batches后停止学习policy=steps                       #调整学习率的policy,有如下policy:CONSTANT, STEP, EXP, POLY, STEPS, SIG, RANDOMsteps=400000,450000                #根据batch_num调整学习率scales=10,.1,.1                    #学习率变化的比例,累计相乘[convolutional]batch_normalize=1                  #是否做BNfilters=16                         #输出多少个特征图size=3                             #卷积核的尺寸stride=1                           #做卷积运算的步长pad=1                              #如果pad为0,padding由 padding参数指定。如果pad为1,padding大小为size/2activation=leaky                   #激活函数:                                   #logistic,loggy,relu,elu,relie,plse,hardtan,lhtan,linear,ramp,leaky,tanh,stair[maxpool]size=2                             #池化层尺寸stride=2                           #池化步进[convolutional]batch_normalize=1filters=32size=3stride=1pad=1activation=leaky[maxpool]size=2stride=2[convolutional]batch_normalize=1filters=64size=3stride=1pad=1activation=leaky[maxpool]size=2stride=2[convolutional]batch_normalize=1filters=128size=3stride=1pad=1activation=leaky[maxpool]size=2stride=2[convolutional]batch_normalize=1filters=256size=3stride=1pad=1activation=leaky[maxpool]size=2stride=2[convolutional]batch_normalize=1filters=512size=3stride=1pad=1activation=leaky[maxpool]size=2stride=1[convolutional]batch_normalize=1filters=1024size=3stride=1pad=1activation=leaky#######[convolutional]batch_normalize=1size=3stride=1pad=1filters=1024activation=leaky[convolutional]batch_normalize=1size=3stride=1pad=1filters=512activation=leaky[convolutional]batch_normalize=1size=3stride=1pad=1filters=512activation=leaky[convolutional]size=1stride=1pad=1filters=125                        #region前最后一个卷积层的filters数是特定的,计算公式为filter=(classes + coords + 1)*5)                                    #5的意义是5个坐标,论文中的x,y,w,h,confidence activation=linear[region]anchors = 0.57273, 0.677385, 1.87446, 2.06253, 3.33843, 5.47434, 7.88282, 3.52778, 9.77052, 9.16828          #预选框,可以手工挑选,                                                                                #也可以通过k means 从训练样本中学出bias_match=1classes=20                         #网络需要识别的物体种类数coords=4                           #每个box的4个坐标x,y,w,hnum=5                              #每个grid cell预测几个box,和anchors的数量一致。当想要使用更多anchors时需要调大num,且如果调大num后训练时Obj趋近0的话可以尝试调大object_scalesoftmax=1                          #使用softmax做激活函数jitter=.2                          #通过抖动增加噪声来抑制过拟合rescore=1                          #暂理解为一个开关,非0时通过重打分来调整l.delta(预测值与真实值的差)object_scale=5                     #栅格中有物体时,bbox的confidence loss对总loss计算贡献的权重noobject_scale=1                   #栅格中没有物体时,bbox的confidence loss对总loss计算贡献的权重class_scale=1                      #类别loss对总loss计算贡献的权重                      coord_scale=1                      #bbox坐标预测loss对总loss计算贡献的权重absolute=1thresh = .6random=0                           #random为1时会启用Multi-Scale Training,随机使用不同尺寸的图片进行训练。

可能大家对于Batch还是不太理解,在这里我再着重说一下:

Batch,中文含义为“批”,一个batch由若干条数据构成。batch是进行网络优化的基本单位,网络参数的每一轮优化需要使用一个batch。batch中的样本是被并行处理的。

那就会有人有问题了,既然是并行处理,那我就多设置一点Batch,这样会不会更好呢?

其实对于Batch来说是分两方面的:

一方面,与单个样本相比,一个Batch的数据能更好的模拟数据集的分布,Batch越大,则对输入数据分布模拟的越好,反应在网络训练上,则体现为能让网络训练的方向“更加正确”,从这个方面来说,Batch越大,训练效果越好。

但另一方面,一个batch也只能让网络的参数更新一次,因此网络参数的迭代会较慢。

所以我们得出以下结论:在测试网络的时候,在条件的允许的范围内尽量使用更大的Batch,这样计算效率会更高

大家有什么其他关于配置文件的问题可以给我留言哦,我们一起沟通交流。

你可能感兴趣的文章
搞定Java面试中的数据结构问题
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
React Native(二):属性、状态
查看>>
JSX使用总结
查看>>
React Native(四):布局(使用Flexbox)
查看>>
React Native(七):Android双击Back键退出应用
查看>>
Android自定义apk名称、版本号自增
查看>>
【剑指offer】q50:树中结点的最近祖先
查看>>
二叉树的非递归遍历
查看>>
【leetcode】Reorder List (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Candy(python)
查看>>
【leetcode】Sum Root to leaf Numbers
查看>>
【leetcode】Pascal's Triangle II (python)
查看>>
如何成为编程高手
查看>>
本科生的编程水平到底有多高
查看>>
Solr及Spring-Data-Solr入门学习
查看>>
python_time模块
查看>>
python_configparser(解析ini)
查看>>
selenium学习资料
查看>>