• 预训练:

使用数据集ImageNet 1000-class competition dataset。

欲训练网络为下图中的前20层卷积层+一个average-pooling层+一个full connected全连接层

 

 

花费时间约一周 

达到精度为在ImageNet 2012 validation set上的top-5精度为88%

 

 

 在所有训练和inference过程中使用的框架为Darknet

 

  • 随后使用预训练model进行检测

基于Ren.etal所述,增加卷积层和全联接层可以提高网络检测效果,因此,作者在预训练model上增加了随机权重的4层卷积层和2层全连接层。并且由于引入网络后需要更多特征,从而把输入图像大小从224*224调整到448*448

网络最后输出类别概率和boundingbox坐标。并根据image的宽高将b-box的宽高归一化到0-1之间,根据b-box相对于grid cell的位置,将box坐标归一化到0-1之间。(这里使用的是leakly relu进行归一化,下图为使用函数参数,当x>0时,x为x,x<=0时,输出为0.1x)

    

 

 

【leakly relu和relu具体参考:https://blog.csdn.net/qq_37342061/article/details/99090590】

【relu是神经网络中最常用的激活函数,收敛速度快,但在负向传播时,由于此时输入为负,输出始终为0,梯度完全为0,神经元不能参与权重更新,relu作用失效,也就是神经元不学习了,这种现象叫“Dead Neuron” 神经元die了。leakly relu就是为了改进这点,通过将x的非常小的分量(0.1x)给予负输入来调整负值的零梯度问题】

  

               

 

  • model优化:

1.

使用sum_square error(平方和误差)作为优化目标,虽然其易于优化,但用在这里并不太合适,因为它将定位误差和分类误差给予相同的权重,同样,将没有包含obj的cell和包含obj的cell给予相同的权重。这样的设置,会使这些置信度为0的cell的梯度以压倒性的优势超过包含obj的cell的梯度(不包含obj的cell比包含obj的cell多得多),这样会造成model的不稳定,且在早期训练中容易发散。

 

 

 

因此我们在优化时,

增加了b-boxes定位预测误差的权重(λcoord =5),减少了不包含obj的cell的置信度的权重(λnoobj =0.5)

 

 

2.

sum_squared error(平方和误差)还将大box和小box的loss同等对待,但是显而易见,误差偏移相同时,在小box上更加明显,因此我们最后不直接输出b-box的宽高,而是其宽高的平方根。

3.

YOLO会对每个grid cell预测多个b-box,在训练时,我们希望每个obj只由一个b-box负责预测,基于最高IOU,实现b-box和obj的“绑定”,这种方式下,b-box对预测大小、宽高比、类别的效果更好、

 

  • loss function

 

 

 其中判断第i个grid cell是否含有obj,判读是cell i中,第j个b-box是否负责这个obj的预测

前两项是b-box的coordinate误差,分别是坐标x、y的误差和box宽高的误差,第三项为不含有obj的b-box置信度误差,第四项为含有obj的b-box置信度误差,最后一项为识别类别的误差(classificattion error)。

loss function仅仅当obj存在于这个grid cell时会“penalizes”分类误差。

loss function仅仅当这个predictor负责预测这个obj时会“penalizes”定位误差(coordinate error)。

 

 

训练过程:

 

训练、测试集来自PASCAC VOC2007和2012,在2012上测试时,训练集包含了2007的测试集。

batch_size大小为64,momentum为0.9,decay学习率衰减因子为0.0005。

Learning Rate设置:

  1. 第一轮,缓慢地将学习率从0.001提高到0.001,如果一开始的学习率过高,会导致梯度不稳定而使模型发散
  2. 75轮使用0.001的Learning Rate
  3. 30轮使用0.001的Learning Rate
  4. 最后30轮使用0.0001的LearningRate

 

为了避免overfitting(过拟合),采取了以下措施:

  1. dropout技术。放在第一个全连接层后面。dropout技术是在训练过程中随机屏蔽或忽略(文中是以0.5的rate)一些神经元,相当于每次形成的网络结构、更新的权重都不一样,因此最后预测结果类似于多个model融合的结果。
  2. extensive data augmentation 数据增强。引入(最高为原图20%的)随机缩放和平移,以及(最高1.5倍)随机调整曝光和饱和度。

【overfitting过拟合:随着model的training,神经元的权重会和整个网络的上下文匹配,会针对某些特征进行调优,会产生一些特殊化,而这种特殊化会导致泛化能力很差,模型将会变得脆弱不堪,这种现象称为overfitting过拟合。】

 

  • inference:
  • 【机器学习中的inference和prediction:举个例子,如房屋价格受到诸如犯罪率、区位因素、空气质量、学区等因素影响,把所有的这些因素整体作为输入得到房屋价格则是prediction,而求解“学区”这一因素对房价的影响则是inference】

在PASCAC VOC上,每张照片预测98个b-box及每个box的类别概率,与基于分类器的一些方法相比,单个网络结构的YOLO非常快。

对于一些大的objs和一些靠近多个cell边缘的objs,可能被多个cell定位,此时我们用NMS非最大值抑制的方法。进行去重,提高mAP2-3%。

【mAP:mean average precision平均精确度的平均,参考博客: https://blog.csdn.net/qq_40765537/article/details/106394103】

 

posted on 2022-09-14 15:02  Jolyne123  阅读(61)  评论(0)    收藏  举报