Yolo系列算法-理论部分-YOLOv2

0. 写在前面

        YOLO系列博客,紧接上一篇Yolo系列算法-理论部分-YOLOv1-CSDN博客

1. YOLOv2-更快更准

        2017年,Joseph在YOLOv1的基础上,进行了大量的改进,提出了YOLOv2和YOLO9000,解决v1版本中召回率和定位精度方面的不足。

  1. 改进的网络适应多种尺寸的图片输入,并且能在检测精度和速度之间进行权衡;
  2. 引入Anchor机制,利用K-Means聚类的方法在训练集中聚类计算出更好地Anchor模板,提高了算法的召回率,同时结合图像细粒度特征,将浅层特征与深层特征相连接,有助于对小尺寸目标的检测
  3. YOLO9000使用WorldTree混合来自不同资源的训练数据,并使用联合优化技术同时在ImageNet和COCO数据集上进行训练,能够实时地检测超过9000种物体。
2. 网络结构

        YOLOv2采用DarkNet-19作为特征提取网络,改进后的网络总结:

  1. 与VGG相似,使用很多3×3卷积核,并且每一次池化后,下一层的卷积核通道数 = 池化输出的通道 × 2
  2. 在每一层的卷积后,都增加了批量标准化(Batch Normalization)进行预处理
  3. 采用降维的思想,把1×1的卷积置于3×3之间,用来压缩特征
  4. 在网络最后的输出增加了一个global average pooling层;
  5. 整体上使用了19个卷积层,5个池化层。
3. DarkNet-19与YOLOv1和VGG16网络进行对比:
  1.  VGG-16:大多数检测网络框架都是VGG-16作为基础特征提取器,功能强大,准确率高,但是计算复杂度较大,所以速度比较慢,YOLOv2网络结构上做了改进;
  2. YOLOv1:基于GooLeNet的自定义网络,比VGG-16的速度更快,精度上不弱VGG-16;
  3. DarkNet-19:速度方面处理一张图片相比于VGG快了6倍,在精度方面,在ImageNe上的测试也不错。
4. 具体改变方法
  1. Batch Normalization(BN)
    1. BN对数据进行预处理(统一格式、均衡化、去噪等)能大大提高训练速度,提升训练效果;
    2. YOLOv2对每一层输入的数据都进行批量标准化,这样网络就不需要每层都去学习数据分布,收敛起来会变更快
    3. 一般用在卷积或者池化之后,激活函数之前,Conv+BN+ReLU+Pooling。
  2. 引入Anchor Box机制
    1. Yolov1设置了端对端,直接对边界框位置(x,yw,h)进行预测;因为没有R-CNN系列的推荐区域,前期的训练很难收敛;通过Anchors box通过筛选得到的代表性先验框Anchors,使得网络在训练时容易收敛

    2. 在Faster R-CNN算法中,通过预测bounding box与ground truth的位置偏移值tx和ty,间接得到bounding box的位置,因为这个公式是无约束的,很容易向任何方向发生偏移,导致模型不稳定,故预测边界框中心点相对于该网格左上角坐标的相对偏移量,同时为了将bounding box的中心点约束在当前网格中,使用sigmoid函数将tx和ty归一化处理,将值约束在0-1之间,使模型训练更稳定。
  3. Convolution With Anchor Boxes 
    1.  YOLOv1有一个致命的缺陷,一张图被分成7×7的网格,一个网格只能预测一个类,当一个网格中同时出现多个类时,就无法检测出所有类;
    2. YOLOv2将YOLOv1网络中的FC层和最后一个Pooling层去掉,使得最后的卷积层输出可以有更高的分辨率特征
    3. 缩减网络,用416×416大小的输入代替原来的448×448,使得网络输出的特征图有奇数大小的宽和高,进而使得每个特征图在划分单元格的时候只有一个中心单元格,通过5个Pooling层进行下采样,得到输出是13×13的像素特征;
    4. 借鉴Faster R-CNN,YOLOv2通过引入Anchor Boxes,预测Anchor Box的偏移值与置信度,而不是直接预测坐标值;
    5. 采用Faster R-CNN中的方式,每个Cell可预测出9个Anchor Box,共13×13×9=1521个(YOLOv2确定Anchor Boxes的方法进行维度聚类,每个Cell选择5个Anchor Box)。比YOLOv1预测的98个bounding box要多很多,因此在定位精度方面有较好的改善。
  4. Anchors的聚类方法

    1. YOLOv1的Anchor Box大小和比例都是按经验设定的,不具有代表性,网络不能自动学习到准确的预测为止;

    2. YOLOv2使用K-Means聚类方法得到的Anchor Box大小,选择具有代表性的尺寸,进行一开始的初始化,传统的K-Means聚类方法是使用标准的欧式距离作为距离度量,这意味着大的box会比小的box产生更多的错误;

    3. 改进距离度量公式,聚类的目的是使Anchor boxes和临近的ground truth boxes 有更大的IOU值,到聚类中心的距离越小越好,但IOU越大越好。      

  5. 细粒度特征(Fine-Grained Features)

    1. 定义:不同层之间的特征融合,YOLOv2通过添加一个PassThrough Layer,把高分辨率的浅层特征连接到低分辨率的深层特征中,再进行融合和检测
    2. 先获取浅层26×26的特征图,将其同最后输出的13×13的特征图进行连接,最后输入检测器进行检测;
    3. PassThrough Layer与ResNet网络中的shortcut类似,将高分辨率的特征图作为输入,将其连接到后面的低分辨率特征图上,经过该层之后,特征图缩小了4倍,channels增加了4倍。
5. 性能表现

        在VOC2007数据集上,YOLOv2在速度和精度上都比YOLOv1的效果好很多。

  • 29
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值