资讯专栏INFORMATION COLUMN

目标检测算法综述(2)︱单次目标检测器︱CV︱ 机器视觉

Doyle / 1853人阅读

摘要:我们可以通过在特征图上滑动窗口来检测目标。以前的滑动窗口方法的致命错误在于使用窗口作为最终的边界框,这就需要非常多的形状来覆盖大部分目标。更有效的方法是将窗口当做初始猜想,这样我们就得到了从当前滑动窗口同时预测类别和边界框的检测器。

单次检测器

Faster R-CNN 中,在分类器之后有一个专用的候选区域网络。

Faster R-CNN 工作流

基于区域的检测器是很准确的,但需要付出代价。Faster R-CNN 在 PASCAL VOC 2007 测试集上每秒处理 7 帧的图像(7 FPS)。和 R-FCN 类似,研究者通过减少每个 ROI 的工作量来精简流程。

作为替代,我们是否需要一个分离的候选区域步骤?我们可以直接在一个步骤内得到边界框和类别吗?

让我们再看一下滑动窗口检测器。我们可以通过在特征图上滑动窗口来检测目标。对于不同的目标类型,我们使用不同的窗口类型。以前的滑动窗口方法的致命错误在于使用窗口作为最终的边界框,这就需要非常多的形状来覆盖大部分目标。更有效的方法是将窗口当做初始猜想,这样我们就得到了从当前滑动窗口同时预测类别和边界框的检测器。

基于滑动窗口进行预测

这个概念和 Faster R-CNN 中的锚点很相似。然而,单次检测器会同时预测边界框和类别。例如,我们有一个 8 × 8 特征图,并在每个位置做出 k 个预测,即总共有 8 × 8 × k 个预测结果。

64 个位置

在每个位置,我们有 k 个锚点(锚点是固定的初始边界框猜想),一个锚点对应一个特定位置。我们使用相同的 锚点形状仔细地选择锚点和每个位置。

使用 4 个锚点在每个位置做出 4 个预测。

以下是 4 个锚点(绿色)和 4 个对应预测(蓝色),每个预测对应一个特定锚点。

4 个预测,每个预测对应一个锚点。

在 Faster R-CNN 中,我们使用卷积核来做 5 个参数的预测:4 个参数对应某个锚点的预测边框,1 个参数对应 objectness 置信度得分。因此 3× 3× D × 5 卷积核将特征图从 8 × 8 × D 转换为 8 × 8 × 5。

使用 3x3 卷积核计算预测。

在单次检测器中,卷积核还预测 C 个类别概率以执行分类(每个概率对应一个类别)。因此我们应用一个 3× 3× D × 25 卷积核将特征图从 8 × 8 × D 转换为 8 × 8 × 25(C=20)。

每个位置做出 k 个预测,每个预测有 25 个参数。

单次检测器通常需要在准确率和实时处理速度之间进行权衡。它们在检测太近距离或太小的目标时容易出现问题。在下图中,左下角有 9 个圣诞老人,但某个单次检测器只检测出了 5 个。

SSD

SSD 是使用 VGG19 网络作为特征提取器(和 Faster R-CNN 中使用的 CNN 一样)的单次检测器。我们在该网络之后添加自定义卷积层(蓝色),并使用卷积核(绿色)执行预测。

同时对类别和位置执行单次预测。

然而,卷积层降低了空间维度和分辨率。因此上述模型仅可以检测较大的目标。为了解决该问题,我们从多个特征图上执行独立的目标检测。

使用多尺度特征图用于检测。

以下是特征图图示。

图源:https://arxiv.org/pdf/1512.02325.pdf

SSD 使用卷积网络中较深的层来检测目标。如果我们按接近真实的比例重绘上图,我们会发现图像的空间分辨率已经被显著降低,且可能已无法定位在低分辨率中难以检测的小目标。如果出现了这样的问题,我们需要增加输入图像的分辨率。

YOLO

YOLO 是另一种单次目标检测器。YOLO 在卷积层之后使用了 DarkNet 来做特征检测。

然而,它并没有使用多尺度特征图来做独立的检测。相反,它将特征图部分平滑化,并将其和另一个较低分辨率的特征图拼接。例如,YOLO 将一个 28 × 28 × 512 的层重塑为 14 × 14 × 2048,然后将它和 14 × 14 ×1024 的特征图拼接。之后,YOLO 在新的 14 × 14 × 3072 层上应用卷积核进行预测。

YOLO(v2)做出了很多实现上的改进,将 mAP 值从第一次发布时的 63.4 提高到了 78.6。YOLO9000 可以检测 9000 种不同类别的目标。

图源:https://arxiv.org/pdf/1612.08242.pdf

以下是 YOLO 论文中不同检测器的 mAP 和 FPS 对比。YOLOv2 可以处理不同分辨率的输入图像。低分辨率的图像可以得到更高的 FPS,但 mAP 值更低。

图源:https://arxiv.org/pdf/1612.08242.pdf

YOLOv3

YOLOv3 使用了更加复杂的骨干网络来提取特征。DarkNet-53 主要由 3 × 3 和 1× 1 的卷积核以及类似 ResNet 中的跳过连接构成。相比 ResNet-152,DarkNet 有更低的 BFLOP(十亿次浮点数运算),但能以 2 倍的速度得到相同的分类准确率。

图源:https://pjreddie.com/media/files/papers/YOLOv3.pdf

YOLOv3 还添加了特征金字塔,以更好地检测小目标。以下是不同检测器的准确率和速度的权衡。

图源:https://pjreddie.com/media/files/papers/YOLOv3.pdf

特征金字塔网络(FPN)

检测不同尺度的目标很有挑战性,尤其是小目标的检测。特征金字塔网络(FPN)是一种旨在提高准确率和速度的特征提取器。它取代了检测器(如 Faster R-CNN)中的特征提取器,并生成更高质量的特征图金字塔。

数据流

FPN(图源:https://arxiv.org/pdf/1612.03144.pdf)

FPN 由自下而上和自上而下路径组成。其中自下而上的路径是用于特征提取的常用卷积网络。空间分辨率自下而上地下降。当检测到更高层的结构,每层的语义值增加。

FPN 中的特征提取(编辑自原论文)

SSD 通过多个特征图完成检测。但是,最底层不会被选择执行目标检测。它们的分辨率高但是语义值不够,导致速度显著下降而不能被使用。SSD 只使用较上层执行目标检测,因此对于小的物体的检测性能较差。

图像修改自论文 https://arxiv.org/pdf/1612.03144.pdf

FPN 提供了一条自上而下的路径,从语义丰富的层构建高分辨率的层。

自上而下重建空间分辨率(编辑自原论文)

虽然该重建层的语义较强,但在经过所有的上采样和下采样之后,目标的位置不较精确。在重建层和相应的特征图之间添加横向连接可以使位置侦测更加准确。

增加跳过连接(引自原论文)

下图详细说明了自下而上和自上而下的路径。其中 P2、P3、P4 和 P5 是用于目标检测的特征图金字塔。

FPN 结合 RPN

FPN 不单纯是目标检测器,还是一个目标检测器和协同工作的特征检测器。分别传递到各个特征图(P2 到 P5)来完成目标检测。

FPN 结合 Fast R-CNN 或 Faster R-CNN

在 FPN 中,我们生成了一个特征图的金字塔。用 RPN(详见上文)来生成 ROI。基于 ROI 的大小,我们选择最合适尺寸的特征图层来提取特征块。

困难案例

对于如 SSD 和 YOLO 的大多数检测算法来说,我们做了比实际的目标数量要多得多的预测。所以错误的预测比正确的预测要更多。这产生了一个对训练不利的类别不平衡。训练更多的是在学习背景,而不是检测目标。但是,我们需要负采样来学习什么是较差的预测。所以,我们计算置信度损失来把训练样本分类。选取较好的那些来确保负样本和正样本的比例最多不超过 3:1。这使训练更加快速和稳定。

推断过程中的非极大值抑制

检测器对于同一个目标会做出重复的检测。我们利用非极大值抑制来移除置信度低的重复检测。将预测按照置信度从高到低排列。如果任何预测和当前预测的类别相同并且两者 IoU 大于 0.5,我们就把它从这个序列中剔除。

Focal Loss(RetinaNet)

类别不平衡会损害性能。SSD 在训练期间重新采样目标类和背景类的比率,这样它就不会被图像背景淹没。Focal loss(FL)采用另一种方法来减少训练良好的类的损失。因此,只要该模型能够很好地检测背景,就可以减少其损失并重新增强对目标类的训练。我们从交叉熵损失 CE 开始,并添加一个权重来降低高可信度类的 CE。

例如,令 γ = 0.5, 经良好分类的样本的 Focal loss 趋近于 0。

编辑自原论文

这是基于 FPN、ResNet 以及利用 Focal loss 构建的 RetianNet。

原文链接

https://medium.com/@jonathan_hui/what-do-we-learn-from-region-based-object-detectors-faster-r-cnn-r-fcn-fpn-7e354377a7c9

https://medium.com/@jonathan_hui/what-do-we-learn-from-single-shot-object-detectors-ssd-yolo-fpn-focal-loss-3888677c5f4d

欢迎加入本站公开兴趣群

商业智能与数据分析群

兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识

QQ群:81035754

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/4762.html

相关文章

  • 10分钟学会使用YOLO及Opencv实现目标检测(下)|附源码

    摘要:摘要本文介绍使用和完成视频流目标检测,代码解释详细,附源码,上手快。将应用于视频流对象检测首先打开文件并插入以下代码同样,首先从导入相关数据包和命令行参数开始。 摘要: 本文介绍使用opencv和yolo完成视频流目标检测,代码解释详细,附源码,上手快。 在上一节内容中,介绍了如何将YOLO应用于图像目标检测中,那么在学会检测单张图像后,我们也可以利用YOLO算法实现视频流中的目标检...

    songze 评论0 收藏0
  • 增加检测类别?这是一份目标检测的基础指南

    摘要:我尽可能对深度学习目标检测器的组成做一个概述,包括使用预训练的目标检测器执行任务的源代码。当我们理解了什么是目标检测时,随后会概述一个深度学习目标检测器的核心模块。方法传统的目标检测技术路线第一个方法不是纯端到端的深度学习目标检测器。 目标检测技术作为计算机视觉的重要方向,被广泛应用于自动驾驶汽车、智能摄像头、人脸识别及大量有价值的应用上。这些系统除了可以对图像中的每个目标进行识别、分类以外...

    Honwhy 评论0 收藏0
  • 深度学习-LeCun、Bengio和Hinton的联合综述(上)

    摘要:三大牛和在深度学习领域的地位无人不知。逐渐地,这些应用使用一种叫深度学习的技术。监督学习机器学习中,不论是否是深层,最常见的形式是监督学习。 三大牛Yann LeCun、Yoshua Bengio和Geoffrey Hinton在深度学习领域的地位无人不知。为纪念人工智能提出60周年,的《Nature》杂志专门开辟了一个人工智能 + 机器人专题 ,发表多篇相关论文,其中包括了Yann LeC...

    DrizzleX 评论0 收藏0
  • 深度学习综述

    摘要:本文是杂志为纪念人工智能周年而专门推出的深度学习综述,也是和三位大神首次合写同一篇文章。逐渐地,这些应用使用一种叫深度学习的技术。监督学习机器学习中,不论是否是深层,最常见的形式是监督学习。 本文是《Nature》杂志为纪念人工智能60周年而专门推出的深度学习综述,也是Hinton、LeCun和Bengio三位大神首次合写同一篇文章。该综述在深度学习领域的重要性不言而喻,可以说是所有人入门深...

    NoraXie 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<