YOLOv2论文学习笔记

论文:《YOLO9000: Better, Faster, Stronger》(CVPR2017)

代码:YOLO: Real-Time Object Detection

YOLOv2 416×416:76.8mAP,67FPS

目录

1、创新点

2、YOLOv1的具体改进

(1)引入Batch Normalization

(2)增大图像分辨率

(3)采用anchor

(4)Dimension Clusters(维度聚类)

(5)Direct location prediction(直接位置预测)

(6)Fine-Grained Features(细粒度特征)

(7)多尺度训练

3、网络结构

4、损失计算​编辑


1、创新点

(1)使用联合训练算法,同时在检测数据集和分类数据集上进行训练,用检测数据集学习物体的准确位置,用分类数据集来增加分类的类别量(9000种);

(2)相比于YOLOv1利用全连接层直接预测Bounding Box的坐标,YOLOv2借鉴了Faster RCNN的思想,引入Anchor机制。利用K-means聚类的方法在训练集中聚类计算出更好的Anchor模板,大大提高了算法的召回率;

(3)引入特征融合模块,结合图像细粒度特征,将浅层特征与深层特征相连,提升小尺寸目标的检测准确率。

        解决了YOLOv1召回率低、定位精度不足的问题,在保持处理速度的基础上,预测更准确(Better),速度更快(Faster),识别对象更多(Stronger)。

2、YOLOv1的具体改进

(1)引入Batch Normalization

        YOLOv2在每个卷积层后,激活函数前添加BN层,使得mAP提升2%。

        BN层解决了反向传播过程中的梯度消失和梯度爆炸问题,降低对一些超参数(比如学习率、网络参数的大小范围、激活函数的选择)的敏感性。并且每个batch分别进行归一化的时候,起到了一定的正则化效果(可以在舍弃dropout后依然不会过拟合),防止CNN在训练过程中不同层之间网络分布的改变增加训练难度,从而能够获得更好的收敛速度和收敛效果

(2)增大图像分辨率

        在目标检测方法中,一般会使用分类模型来提取特征,而分类样本分辨率为224×224,检测样本分辨率为448×448,不一致的输入会对模型分辨率产生影响。

        YOLOv2在采用224×224分辨率的图像进行分类模型预训练后,再采用448×448高分辨率的样本对分类模型进行微调(10个epoch),使网络特征逐渐适应448×448的分辨率。然后再使用448×448的检测样本进行训练,缓解了分辨率突然切换造成的影响,mAP提升了4%。

(3)采用anchor

  • Faster R-CNN:Region Proposal Network来预测Anchor Box的偏移量(回归参数);
  • YOLOv1:直接预测Bounding Boxes的坐标;
  • 直接预测坐标会导致准确率较差 → 采用anchor
  • YOLOv2采用偏移量预测代替坐标预测

        YOLOv2也采用了先验框(anchor),在每个grid预先设定一组不同大小和宽高比的边框,来覆盖整个图像的不同位置和多种尺度,这些先验框作为预定义的候选区在神经网络中将检测其中是否存在对象,以及微调边框的位置。

具体改进方案:

  1. 每个grid采用9个先验框,总共有13×13×9=1521个先验框;
  2. 去掉了全连接层,使用Anchor Boxes来预测 Bounding Boxes;
  3. 去掉了一个池化层以确保输出的卷积特征图有更高的分辨率;
  4. 使用卷积层降采样(factor=32),使得输入卷积网络的416×416图片最终得到13×13的卷积特征图(416/32=13)。

(4)Dimension Clusters(维度聚类)

        使用anchor boxes存在的问题:anchor boxes的尺寸是手动选择的,如果一开始就选择了更好的、更有代表性的先验boxes维度,那么网络就更容易学到准确的预测位置。

        YOLOv2使用了K-means聚类方法类训练bounding boxes,以寻找尽可能匹配样本的边框尺寸。采用的评判标准是IOU得分,使error与box的尺度无关,最终的距离函数为:

centroid是聚类中心边框,box是其它边框,d是两者间的“距离”,IOU越大,“距离”越近。在模型复杂度和召回率之间权衡之后,选择聚类分类数K=5。 

(5)Direct location prediction(直接位置预测)

        YOLOv1使用Anchor Box会让模型变得不稳定,尤其是在最开始几次迭代的时候。大多数不稳定因素来自于预测Box的(x, y)坐标。按照YOLOv1的方法,网络不会预测偏移量,而是预测bounding box的中心坐标相较于该bounding box归属的grid cell左上角的偏移量:

这个公式没有任何限制,使得无论在什么位置进行预测,任何anchor boxes可以在图像中任意一点结束,模型随机初始化后,需要花很长一段时间才能稳定预测敏感的物体位置。 

        YOLOv2网络在每个grid cell中预测出5个Bounding Boxes,每个Bounding Boxes有五个坐标值tx,ty,tw,th,t0,它们的关系见下图。假设一个grid cell对于图片左上角的偏移量是cx,cy,Bounding Boxes Prior的宽度和高度是pw,ph,那么预测的结果见下图右面的公式:

为了让网络的结果能落在0-1范围内,网络使用一个Logistic Activation来对于网络预测结果进行限制,让结果介于0到1之间。  此时每个anchor(prior)去负责预测目标中心落在某个grid cell区域内的目标。

(6)Fine-Grained Features(细粒度特征)

        原因:需要检测的目标有大有小,而图像经过多层网络提取特征,最后输出的特征图中(比如YOLOv2中输入416×416的图像,最后的输出大小为13×13×1024),无法预测较小的目标。

        方法:YOLOv2引入pass through层,在特征图中保留细节信息。具体来说,就是在最后一个pooling之前(分辨率为26×26×512),将其直接传递(pass through)到pooling后,两者叠加作为最终输出的特征图。

拆分方式:(有点类似于亚像素卷积的逆过程)

(7)多尺度训练

        作者希望YOLOv2具有检测不同尺寸的目标的鲁棒性,因此增加了训练策略。不同于固定输入网络的图片尺寸的方法,每经过10个epoch,就会随机选择新的图片尺寸。YOLOv2网络使用的降采样参数为32,那么就使用32的倍数进行尺度池化{320,352,…,608}。最终最小的尺寸为320 * 320,最大的尺寸为608 * 608。接着按照输入尺寸调整网络进行训练。

        这种机制使得网络可以更好地预测不同尺寸的图片,在小尺寸图片上YOLOv2运行更快,在速度和精度上达到了平衡。

3、网络结构

  • Backbone(主干网络):网络的主干部分,用于提取特征,YOLOv2使用DarkNet-19;
  • Neck(颈部):用于进一步处理backbone提取的特征,以更好地适应特定任务的需求,如边界框的预测和类别分类;
  • Head(头部):用于对经过backbone和neck处理的特征进行最终的预测和分类。

4、损失计算

  • W、H:征图的宽和高,都为13;
  • A:Anchor个数,YOLOv2中=5;
  • λ:各个loss部分的权重系数

        在计算boxes的W和H误差时,YOLOv1中采用的是平方根以降低boxes的大小对误差的影响,而YOLOv2是直接计算,但是根据ground truth的大小对权重系数进行修正,这样对于尺度较小的其权重系数会更大一些,可以放大误差,起到和YOLOv1计算平方根相似的效果。

参考:

【论文阅读】YOLO系列论文:YOLO v2_yolov2论文原文-CSDN博客

目标检测——Yolo系列(YOLOv1/2/v3/4/5/x/6/7/8)_yolo目标检测-CSDN博客

  • 27
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值