yolo系列整理
版本 | 作者主页 | 程序 | 论文 |
---|---|---|---|
yoloV1 | 点击打开 | 点击打开 | 点击打开 |
yoloV2 | 点击打开 | 点击打开 | 点击打开 |
yoloV3 | 点击打开 | 点击打开 | 点击打开 |
改进
V2 VS V1:
增加BN层:
- 解决问题:每层的输入分布一直在改变,训练难度增加;
- 采取措施:在每层卷积层后,添加batch normalization;
- 改进效果:
1.mAP获得了2%的提升;
2.规范化模型,可以在舍弃dropout优化后依然不会过拟合;
##High Resolution Classifier - 解决问题:由于现有的特征提取网络局限,导致图片被resize到不足256 * 256,导致分辨率不够高,给检测带来困难;
- 采取措施:
1.提高分辨力到448 * 448;
2.改变原来特征网络的输入分辨率,在ImageNet数据集上对分类网络进行fine tune训练10轮(10 epochs),使得网络适应高分辨率的输入;然后,对检测网络进行fine tune。 - 改进效果:mAP获得了4%的提升;
##Convolutional With Anchor Boxes - 解决问题:全连接层的数据完成边框的预测,导致丢失较多的空间信息,定位不准;
- 采取措施:
1.借鉴了Faster R-CNN中的anchor思想
2.在卷积特征图上进行滑窗操作,每一个中心可以预测9种不同大小的建议框。
3.去掉了后面的一个池化层以确保输出的卷积特征图有更高的分辨率;
4.缩减网络,输入分辨力为416416,使得输出的feature map宽高为基数,产生一个center cell(大物体通常占据了图像的中间位置),用一个中心cell预测大物体,否则就要用中间的4个cell来进行预测,有利于提高效率。
5.卷积层降采样(factor为32),输入大小:416416;输出大小:13*13 - 改进效果:召回率上升,准确率下降。
1.改进后:预测13 * 13 * 9 = 1521个boxes,recall为88%,mAP为69.2%
2.改进前:预测7 * 7 * 2 = 98个boxes,recall为81%,mAP为69.5%
3.准确率只有小幅度的下降,而召回率则提升了7%。
##Dimension Clusters - 解决问题:
1.anchor boxes的宽高维度往往是精选的先验框,如果一开始就选择了更好的、更有代表性的先验boxes维度,那么网络就更容易学到准确的预测位置;
2.传统的K-means聚类方法使用的是欧氏距离函数,也就意味着较大的boxes会比较小的boxes产生更多的error,聚类结果可能会偏离; - 采取措施:
1.距离函数:error就和box的尺度无关
聚类结果:扁长的框较少,而瘦高的框更多
- 改进效果:使用聚类方法,仅仅5种boxes的召回率就和Faster R-CNN的9种相当
##Direct location prediction - 模型不稳定,尤其是在早期迭代的时候,大部分的不稳定现象出现在预测box的 (x,y)(x,y) 坐标上;
这个公式的理解为:当预测 tx=1tx=1,就会把box向右边移动一定距离(具体为anchor box的宽度),预测 tx=−1tx=−1,就会把box向左边移动相同的距离。
符号含义:
1.x是坐标预测值
2.xa 是anchor坐标(预设固定值)
3.x∗是坐标真实值(标注信息)
4.其他变量 y,w,h 以此类推,t 变量是偏移量;
这个公式没有任何限制,使得无论在什么位置进行预测,任何anchor boxes可以在图像中任意一点结束。模型随机初始化后,需要花很长一段时间才能稳定预测敏感的物体位置。- 采取措施:
1.采用预测相对于grid cell坐标位置的方法。
2.13*13的grid,每个cell对应5个anchors box,每个anchors box对应5个值(分别是坐标和置信度),如下所示:
(cx,cy):这个cell距离图像左上角的cell数;
(pw,ph):cell对应的anchors box的宽高;
tx,ty 经sigmod函数处理过,取值限定在了0~1,实际意义就是使anchor只负责周围的box,有利于提升效率和网络收敛。
e的幂函数是因