对于模型的优化,我们可以通过适当修改网络基本配置信息完成训练上的优化。

yolov3.cfg文件:


[net]
# Testing #测试模式
batch=1
subdivisions=1
# Training #训练模式 每次前向图片的数目=batch/subdivisions
# batch=64
# subdivisions=16
#关于batch与subdivision:在训练输出中,训练迭代包括8组,这些batch样本又被平均分成subdivision=8次送入网络参与训练,以减轻内存占用的压力;batch越大,训练效果越好,subdivision越大,占用内存压力越小


width=416
height=416
channels=3
#网络输入的宽、高、通道数这三个参数中,要求width==height, 并且为32的倍数,大分辨率可以检测到更加细小的物体,从而影响precision


momentum=0.9 #动量,影响梯度下降到最优的速度,一般默认0.9
decay=0.0005 #权重衰减正则系数,防止过拟合
angle=0 #旋转角度,从而生成更多训练样本
saturation = 1.5 #调整饱和度,从而生成更多训练样本
exposure = 1.5 #调整曝光度,从而生成更多训练样本
hue=.1 #调整色调,从而生成更多训练样本


learning_rate=0.001
#学习率决定了权值更新的速度,学习率大,更新的就快,但太快容易越过最优值,而学习率太小又更新的慢,效率低,一般学习率随着训练的进行不断更改,先高一点,然后慢慢降低,一般在0.01--0.001

burn_in=1000
#学习率控制的参数,在迭代次数小于burn_in时,其学习率的更新有一种方式,大于burn_in时,才采用policy的更新方式
max_batches = 50200
#迭代次数,1000次以内,每训练100次保存一次权重,1000次以上,每训练10000次保存一次权重
policy=steps # 学习率策略,学习率下降的方式
steps=40000,45000 #学习率变动步长
scales=.1,.1
#学习率变动因子:如迭代到40000次时,学习率衰减十倍,45000次迭代时,学习率又会在前一个学习率的基础上衰减十倍


[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 #激活函数类型


[yolo]
mask = 6,7,8 #使用anchor时使用前三个尺寸
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
#anchors是可以事先通过cmd指令计算出来的,是和图片数量,width,height以及cluster(就是下面的num的值,即想要使用的anchors的数量)相关的预选框,可以手工挑选,也可以通过k-means算法从训练样本中学出


classes=20
num=9
#每个grid cell预测几个box,和anchors的数量一致。当想要使用更多anchors时需要调大num,且如果调大num后训练时Obj趋近0的话可以尝试调大object_scale
jitter=.3 #通过抖动来防止过拟合,jitter就是crop的参数
ignore_thresh = .5
#ignore_thresh 指得是参与计算的IOU阈值大小。当预测的检测框与ground true的IOU大于ignore_thresh的时候,参与loss的计算,否则,检测框的不参与损失计算,目的是控制参与loss计算的检测框的规模,当ignore_thresh过于大,接近于1的时候,那么参与检测框回归loss的个数就会比较少,同时也容易造成过拟合;而如果ignore_thresh设置的过于小,那么参与计算的会数量规模就会很大。同时也容易在进行检测框回归的时候造成欠拟合。
#参数设置:一般选取0.5-0.7之间的一个值,之前的计算基础都是小尺度(13*13)用的是0.7,(26*26)用的是0.5。这次先将0.5更改为0.7。
truth_thresh = 1
random=1 #如果显存小,设置为0,关闭多尺度训练,random设置成1,可以增加检测精度precision,每次迭代图片大小随机从320到608,步长为32,如果为0,每次训练大小与输入大小一致

 

注:模型一般到20000次的时候就基本收敛了

如果想添加新的层,需要添加相应的源码(src)

参考博客:https://blog.csdn.net/qq_43211132/article/details/91978149

最新文章

  1. 如何布局包含Image和Title的UIButton
  2. gerrit
  3. 游戏buff设计参见
  4. VMare中安装“功能增强工具”,实现CentOS5.5与win7host共享文件夹的创建
  5. Android Wear预览版——尝鲜
  6. 【转】以XML文件方式保存用户数据——2013-08-25 22
  7. Android更新UI的几种方式
  8. H5页面音频自动播放问题
  9. [置顶] NS2中对TCP数据包和ACK包的TCP Sink类的主要实现代码详尽剖析--吐血放送
  10. 237. Delete Node in a Linked List(leetcode)
  11. Dom4j修改xml文档引入
  12. 数组/Array/Tuple/yield
  13. elasticsearch6.7 05. Document APIs(7)Update By Query API
  14. PHP Composer 包管理器的安装和使用
  15. java重点知识
  16. Java使用PropertyDescriptor获取实体类中私有属性的值,并给私有属性赋值
  17. (转) Unity3D 使用Texturepacker打包工具制作NGUI(Atlas)图集
  18. 无限极分类php实现—查子孙树、家谱树
  19. Oracle EBS PO退货失败
  20. 让vcmi支持英雄无敌3中文版

热门文章

  1. Caffe2 手册(Intro Tutorial)[2]
  2. 3_05_MSSQL课程_Ado.Net_DataSet数据集
  3. SWD学习笔记
  4. Rcnn/Faster Rcnn/Faster Rcnn的理解
  5. 远程登陆ubantu服务器 .bashrc文件每次打开终端都需要source的问题
  6. 「ZJOI2006」物流运输
  7. pip使用镜像的方法
  8. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 表单:输入框(Input)
  9. Serializable的理解和使用 -----转载
  10. SAP BO WebI 如何连接webi server folder下面的EXCEL文件作为数据源