yolo系列整理
改进
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的幂函数是因为前面做了 lnln 计算;
σ(tx):bounding box的中心相对栅格左上角的横坐标;
σ(ty):bounding box的中心相对栅格左上角的纵坐标;
σ(to)是bounding box的confidence score。 - 改进效果:定位预测值被归一化后,参数就更容易得到学习,模型就更稳定。使用Dimension Clusters和Direct location prediction这两项anchor boxes改进方法,mAP获得了5%的提升。
创新
将目标检测作为回归问题,实现end-to-end训练和检测。
#V3
##改进
多尺度检测 改动基础分类网络和分类器
- 添加多尺度预测:将深层特征上采样后,与浅层特征融合,分别形成多个尺度,输出featuremap进行检测,每个尺度对应3中不同大小的anchor,负责预测不同大小的目标。
尺度1:在基础特征网络后添加几层卷积层后,再输出box信息,负责预测较大目标
尺度2:从尺度1网络的倒数第二层2倍上采样后与最后一个1616大小的featuremap相加,再通过几层卷积层后,输出box,相比尺度1变大size变大两倍,负责预测中等大小的目标。
尺度3:与尺度2类似,使用3232大小的featuremap作为输出,负责预测较小目标。
对比
1.与RCNN和Fast RCNN对比:yolo没有求取proposal region,而RCNN系列需要通过selective research提取候选框,导致训练过程分为多个阶段完成。
与Faster RCNN对比:尽管用RPN 网络代替selective research,将RPN集成到Fast RCNN中,形成了一个统一的网络,实现卷积层参数的共享。但是在训练过程中还是需要反复训练RPN和Fast RCNN网络。
因此RCNN系列的检测,都属于two-stage策略。
2.YOLO通过一次inference,同时得出目标位置和分类scores,而RCNN系列将目标检测任务分成:检测和回归。
#基础网络
仿ResNet, 与ResNet-101或ResNet-152准确率接近,但速度更快.
##边框预测
仍采用之前的logistic方式:
KaTeX parse error: Expected group after '\begin' at position 68: …ition 7: \begin{̲̲̲a̲l̲i̲g̲n̲}̲ b_…
其中:
c
x
,
c
y
c
x
,
c
y
c
x
,
c
y
cx,cycx,cy c_x,c_y
cx,cycx,cycx,cyλnoobj实现两者之间对梯度平衡作用。
3.含有object的bbox的confidence loss (上图红色框) 和类别的loss (上图紫色框)的loss weight正常取1。
4.**不同大小box对IoU影响:**对不同大小的bbox,相同的偏离,大bbox对IOU的影响若于小box。通过sum-square error loss对该问题进行缓和。
调整的目标:相同的偏离,增强对小bbox的IOU的影响,减弱打的bbox的IOU的影响。为了缓和这个问题,作者用了一个巧妙的办法,就是将box的width和height取平方根代替原本的height和width。 如下图:small bbox的横轴值较小,发生偏移时,反应到y轴上的loss(下图绿色)比big box(下图红色)要大。
如下图所示:
每个grid有多个boxes,最终的结果,采用IoU最大的box predictor预测,因此,不同box之间存在竞争,因此,随着训练轮数的增加,特定box predictor越来越好的,负责预测不同尺寸的物体。
#参考网址
YOLO详解
图解YOLO
YOLOv1论文理解
目标检测网络之 YOLOv3
darknet+win+linux接口
yolov3论文解析
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-7b4cdcb592.css" rel="stylesheet">
</div>