目标检测-One Stage-YOLOv2


前言

根据前文目标检测-One Stage-YOLOv1可以看出YOLOv1的主要缺点是:

  • 和Fast-CNN相比,速度快,但精度下降。(边框回归不加限制)

YOLOv2提出了一些改进策略,如anchor-based等


提示:以下是本篇文章正文内容,下面内容可供参考

一、YOLOv2的网络结构和流程

  1. 将影像输入卷积网络(DarkNet-19+残差连接)得到13 × 13特征图
  2. 引入anchor机制,与SSD不同的是,每个特征点对应5个anchor,且anchor的大小是由VOC 和 COCO数据集聚类得到的

ps:由于变为anchor-based算法,预测框由YOLOv1的98个变为845(13 × 13 × 5)个,mAP由69.5略微降到69.2,召回率却由81大大提升至88

  1. 将上一步得到的anchor输入分类和边框回归器
  2. 使用非极大值抑制NMS去除冗余窗口

下图可以比较清晰的看出YOLOv2的主要结构
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
其中,DarkNet-19的结构如下:
在这里插入图片描述
更详细的参数如下:
在这里插入图片描述

ps:上图中可以看出,残差连接时要保证两个特征图w,h的一致(从通道上进行拼接),这里通过PassThrough层将之前层的特征图进行了w,h的缩放,以和更深层特征图保持一致,PassThrough层的基本原理如下图:
在这里插入图片描述
之所以不用池化下采样,是想通过PassThrough保留featureMap的更多细节

二、YOLOv2的创新点

预处理

  • 使用了标准的数据增强方法:随机裁剪、旋转(random crops, rotations);色调、饱和度(hue, saturation);曝光偏移(exposure shifts)

网络结构

  1. backbone:改为Darknet-19,Darknet-19 的性能基本与 Resnet34 差不多,使得网络更轻量更快
  2. 引入了BN(Batch normalization),其优点如下:
    • 加快收敛;
    • 改善梯度,远离饱和区;
    • 允许大的学习率;
    • 对初始化不敏感;
    • 相当于正则化,使得有BN层的输入都有相近的分布;
    • 有了BN之后,就可以不用dropout了,或者说不能像原来一样用dropout了,这会导致训练和测试的方差偏移。
  3. 加入了anchor机制
  4. 细粒度特征(Fine-Grained Features):将最后一个最大池化层前的特征图经过Pass Through与后面的卷积特征图进行合并,Pass Through就是四分后再concat

训练

  1. 高分辨率的预训练,采用了448的输入进行微调,以便网络更好地处理更高分辨率的输入
  2. 多尺度训练:Yolov2每10个batches就会随机换一下输入的尺度({320, 352, …, 608}),使得模型泛化于不同尺度的输入,这得益于adaptive pooling层。高分辨率的输入速度慢,但是对小目标的检测效果要好很多,低分辨率的输入速度快
  3. loss略微改动:(真阳样本的定位误差、confidence误差、分类误差)、预测框和anchor定位误差、负样本置信度误差,且5个子loss均有一个权重超参数
  4. 预测输入从448变为416,目的是让得到的feature map的size是一个奇数。这样的好处是,许多图片的中心点都是某个物体的中心,奇数保证中间是一个格子,而不是偶数那样四个格子抢占中心点
  5. 尝试了一种分类和检测的联合训练策略,类别数据集用于分类训练,检测数据集用于边框回归和分类,同时为了统一COCO数据集和ImageNet数据集类别,提出了一种层级分类方法

总结

通过网络结构和改进和一些tricks,YOLOv2精度大大提升,同时通过多尺度训练,使得相同的YOLOv2模型可以在不同的大小下运行,从而轻松实现速度和精度之间的折衷。

  • 在67 FPS的速度下,YOLOv2在VOC 2007上达到76.8mAP。
  • 在40 FPS的速度下,YOLOv2在VOC 2007上达到78.6mAP,性能优于当时的SOTA,如SSD和Faster RCNN ResNet,同时运行速度更快。
    在这里插入图片描述

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-01-06 20:06:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-06 20:06:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-06 20:06:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-06 20:06:04       20 阅读

热门阅读

  1. Nestjs 微服务实战 - 动态微服务创建链接

    2024-01-06 20:06:04       37 阅读
  2. 通过data恢复postgresql

    2024-01-06 20:06:04       41 阅读
  3. 【sed学习】sed -i和sed -i -e有什么区别

    2024-01-06 20:06:04       28 阅读
  4. docker安装dcm4chee

    2024-01-06 20:06:04       38 阅读
  5. C语言-蓝桥杯2023年第十四届省赛真题-砍树

    2024-01-06 20:06:04       31 阅读
  6. XXL-JOB学习笔记-新增企业微信告警通知

    2024-01-06 20:06:04       29 阅读