论文笔记:YOLO

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hongbin_xu/article/details/83247461

原文:You Only Look Once: Unified, Real-Time Object Detection

YOLO

1、四个问题

  1. 要解决什么问题?

    • 对于目标检测任务来说,速度较快的算法性能较弱,然而性能较强的算法(如:R-CNN系列)耗时则更多,很难达到实时性的要求。
    • 大多数像RCNN这类的算法流程是,第一步先获取候选区域(region proposal),接着进行后处理(消除重复框,对候选框进行分类等等)。这样的操作往往很慢也很难优化,因为每个独立的模块都要单独训练,实时性要求也达不到。
  2. 用了什么方法解决?

    • 将目标检测直接转换为一个回归问题,直接使用一个神经网络来预测候选框和物体类别。
  3. 效果如何?

    • YOLO网络的速度有很大提高。

    • 基本的YOLO网络可以做到45FPS。

    • 对于较小的Fast YOLO模型,帧数可以达到155FPS,且相比于其他实时检测模型效果更好。

    • 对背景的分类错误少了很多。

  4. 还存在什么问题?

    • YOLO在准确率上还比不过state-of-the-art的模型。
    • 与R-CNN系列相比,候选框的预测有较大误差,且对新数据的泛化能力较弱。
    • 对于数量较多的小物体,如一群小鸟,识别效果不好。

2、论文概述

2.1、总体框架

在这里插入图片描述

  1. 将输入缩放为 448 × 448 448 \times 448 的图像。
  2. 把图像送入CNN,跑一次前向,计算得到(边界框和物体类别的预测)。
  3. 通过每个边界框的configdence筛选边界框,使用NMS去除重复的框。

2.2、统一检测(Unified Detection)

在这里插入图片描述

  • 将输入图像划分为 S × S S \times S 个单元格(grid cell)。如果某个物体的中心在某个单元格内,那么那个单元格就负责检测那个物体。
  • 每个单元格(grid cell)要预测 B B 个bounding box,每个bounding box除了要预测框的位置外,还要预测一个置信率(confidence)。具体来说,每个bounding box包含5个预测值: x x y y w w h h 和置信率(confidence)。
    • ( x , y ) (x, y) 表示的是预测的bounding box的中心点坐标。
    • w w h h 表示的是bounding box的宽和高。
    • confidence包含了两重信息:
      1. 有多确信这个单元格(grid cell)内有物体?
      2. 预测的bounding box有多精确?
    • 计算公式: P r ( o b j e c t ) I O U p r e d t r u t h Pr(object) * IOU_{pred}^{truth}
      • 如果这个单元格内有物体,则 P r ( o b j e c t ) Pr(object) 取1,否则取0。
      • I O U p r e d t r u t h IOU_{pred}^{truth} 表示的是预测的bounding box与ground truth之间的重叠比例,它这里用的是intersection over union (IOU) 这个指标。
  • 每个grid cell还需要预测 C C 个类的输出,即预测为哪个类的输出,使用one-hot编码。
  • 整体来看,总共 S × S S \times S 个grid cell,每个grid要预测 B B 个bounding box和 C C 个类的输出。网络的输出定义为一个长度为 S × S × ( B 5 + C ) S \times S \times ( B * 5 + C) 的张量。

2.3、网络结构

  • 网络结构如下:

在这里插入图片描述

2.4、训练

  • 先在ImageNet上对前20个卷积层接上一个平均池化层和全连接层进行预训练。
  • 随后保留那20个卷积层,再加上4个新的卷积层和2个全连接层,新加的层使用随机权重初始化。
  • 由于还需要对细粒度视觉信息进行分类,故将输入图片的分辨率调整为 448 × 448 448 \times 448 (原始分辨率为 224 × 224 224 \times 224 )。
  • bounding box预测的中心点坐标 x x y y 用对应网格的偏移归一化到0-1之间;bounding box预测的宽高w和h用整幅图像的宽高归一化到0-1之间。
  • 网络中使用leaky ReLU替代ReLU。
  • 在计算loss时,作者最初全部采用了平方和误差 (sum-squared loss)。
    • 采用平方和误差的原因是,它很容易优化。
    • 然而,也存在几个问题:
      1. 将分类误差和定位误差看做同等重要显然是不靠谱的。
      2. 另外在一幅图像中,大多数网格不含有任何对象。这会将这些单元格的置信率(confidence)推为0,由于数量众多,很可能会掩盖掉含有目标的单元格反向传播回来的梯度。结果就是导致模型不稳定,甚至发散。
  • 为了解决前面提到的问题,作者提出了以下方法:
    1. 更加重视定位的预测结果,给localization的loss部分赋予了更大的权重, λ c o o r d = 5 \lambda_{coord}=5
    2. 没有对象的单元格得到的confidence的loss,没有那么重要,就赋予较小的权重, λ n o o b j 0.5 \lambda_{noobj}-0.5
    3. 对于不同大小的box,如果是较大的box,预测得稍微偏了一点,影响不是很大,也基本看不出来;但如果是较小的box,预测得稍微偏一点,影响就比较大了,误差也很明显。为此,作者采用了一个比较投机取巧的办法,那就是对width和height取平方根。
      • 如下图所示,可以看出,在 y = x y=\sqrt{x} 上取两个邻近的点做差值。如果值比较小, y = x y=\sqrt{x} 在较小的地方变化率相对更大,那么这个差值也会更大一些。这样子反应到loss上,就是在较小的box上小偏差会造成更大的loss,而较大的box上小偏差得到的loss则没那么大。
    4. YOLO每个网格单元预测多个边界框。在训练时,每个目标我们只需要一个边界框预测器来负责。我们指定一个预测器“负责”根据哪个预测与真实值之间具有当前最高的IOU来预测目标。这导致边界框预测器之间的专业化。每个预测器可以更好地预测特定大小,方向角,或目标的类别,从而改善整体召回率。

在这里插入图片描述

  • loss函数完整形式:
    • 1 i o b j \mathbb{1}_{i}^{obj} 表示目标是否出现在网格单元 i i 中 , 1 i j o b j \mathbb{1}_{ij}^{obj} 表示网格单元 i i 中的第 j j 个边界框预测器“负责”该预测。
    • 这个loss中,只有当某个单元格中有对象的时候才会计入分类错误,即对分类错误进行惩罚。
    • 只有当某个 box predictor 对某个 ground truth box 负责的时候,才会对 box 的 coordinate error 进行惩罚,而对哪个 ground truth box 负责就看其预测值和 ground truth box 的 IoU 是不是在那个 cell 的所有 box 中最大的。

在这里插入图片描述

2.5、推断(测试)

  • 对于每张图片,使用如下评分公式获取每个bounding box对应不同类的confidence结果,即class-specific confidence scores :

P r ( C l a s s i O b j e c t ) P r ( O b j e c t ) I O U p r e d t r u t h = P r ( C l a s s i ) I O U p r e d t r u t h Pr(Class_i | Object) * Pr(Object) * IOU_{pred}^{truth} = Pr(Class_i) * IOU_{pred}^{truth}

  • P r ( O b j e c t ) I O U p r e d t r u t h Pr(Object) * IOU_{pred}^{truth} 就是每个bounding box的confidence。
  • P r ( C l a s s i O b j e c t ) Pr(Class_i | Object) 为分类结果。
  • 基于class-specific confidence scores设置阈值筛选bounding box,最后再使用非极大抑制(NMS)去除重叠的框。

2.6、资料推荐

  1. 从YOLOv1到YOLOv3,目标检测的进化之路
  2. YOLO论文翻译——中文版
  3. You Only Look Once: Unified, Real-Time Object Detection

猜你喜欢

转载自blog.csdn.net/hongbin_xu/article/details/83247461
今日推荐