电脑基础 · 2023年3月31日

基于深度学习的目标检测算法发展综述(2022.6.16第二版)

目录

  • 一、 摘要
  • 二、基本概念
    • (一)目标检测
    • (二)发展阶段
    • (三)评价标准
      • 1、精度指标
      • 2、速度指标
    • (四)公开数据集
      • 1、Pascal VOC
      • 2、ILSVRC
      • 3、Microsoft COCO
      • 4、Open Image
      • 5、比较
        • 数据倾斜/偏差问题
    • (五)目标分类网络介绍
  • 三、目标检测算法分类详细说明
    • (一)传统目标检测算法
      • 1、三个过程
        • (1)区域建议
        • (2)特征抽取
        • (3)区域分类及边框回归
      • 2、缺点
    • (二)基于深度学习的目标检测算法
      • 1、是否存在显式的区域建议分类
        • (1)两阶段目标检测算法
          • 1)R-CNN算法
            • ①算法思路梗概
            • ②改进
            • ③缺点
          • 2)SPP-Net算法(R-CNN 的一种改进)
            • ①改进
            • ②优点
            • ③缺点
          • 3)Fast R-CNN 算法(SPP-Net改进)
            • ①具体改进
            • ②缺点
          • 4)Faster R-CNN 算法
            • ①改进
            • ②缺点
          • 5)Mask R-CNN
            • ①特点
          • 6)FPN
          • 7)R-FCN 算法
            • ①创新改进
          • 8)DetectoRS
          • 8)总结
        • (2)一阶段目标检测算法
          • 1)基于二进制掩膜的目标检测算法(早期的一阶段目标检测算法)
            • 缺点
          • 2) Overfeat 算法
            • ①改进
            • ②缺点
          • 3)YOLO 算法(最早具有实际应用价值的)
            • YOLO v1
            • YOLO v2(YOLO 9000)
            • YOLO v3
            • YOLO v4
          • 4)SSD算法
          • 5)DSSD 算法
          • 6)FSSD算法
          • 7)RetinaNet 算法
          • 8)EfficientDet
          • 9)Swin Transformer
          • 8)总结
      • 2、是否定义先验锚框分类
        • 基于锚框的目标检测算法
          • 基于锚框算法的优点
          • 缺点总结
        • 无锚框目标检测算法
          • 基于中心域(center-based)的目标检测算法
            • 1)DenseBox 算法(早期的基于中心域的算法)
            • 2)YOLO 算法(特指v1,早期的基于中心域的目标检测算法)
            • 3)FCOS 算法
            • 4)FoveaBox 算法
          • 基于关键点(keypoint-based)的目标检测算法
            • 1)CornerNet算法
            • 2)CenterNet算法
            • 3)CenterNet(Object as Point)算法
          • 总结
      • 基于深度学习的目标检测算法总结
  • 四、算法性能比较与分析
    • (一)目标检测算法在 VOC 2007 数据集中的性能
    • (二)目标检测算法在 COCO 2018 数据集中的性能
    • (三)结论
  • 五、未来发展方向以及解决思路
    • (一)如何获取高质量的目标检测数据集。
      • 解决思路
    • (二)如何提升骨干网络的性能。
      • 解决思路
    • (三)如何提升算法对异常尺度目标的检测精度
      • 解决思路
    • (四)如何实现面向开放世界的目标检测。
      • 解决思路
    • (五)如何基于深度学习进行其他形式的目标检测。
    • (六)一些细节点
      • 1、对于小尺寸目标检测精度低的问题
      • 2、对于训练时正负样本不均衡的问题
      • 3、对于训练样本较少问题
  • 五、参考资料

写在前面

  自己学了一些,结合一些中文期刊希望梳理一下自己的思路,整理了这个博客,结构和内容都有待改进,希望各位多指正,后面会不断精简的

一、 摘要

  在深度学习出现之前,传统目标检测算法都是以手工设计特征为主,如 Sobel边缘检测特征、Haar特征、Hog特征等,这些特征的泛化能力较弱,在复杂场景中性能表现较差。

  基于深度学习的目标检测算法使用的是卷积神经网络 (Convolutional Neural Networks,CNN)学习特征的方式,这种特征学习方式能自动发现检测及分类目标所需要的特征,同时通过卷积神经网络将原始输入信息转化成更抽象、更高维的特征,这种高维特征具有强大的特征表达能力和泛化性,所以其在复杂场景下的性能表现较好,可满足工业界的大部分应用需求。

  基于深度学习的目标检测算法根据其算法流程特点大致可以分为两类:

  •   两阶段(Two-Stage)目标检测算法和单阶段(One-Stage)目标检测算法。Two-Stage目标检测算法的主要代表是 Regions with Convolutional Neural Networks Features (R-CNN)系列,此类检测算法检测精度较高,但是检测速度较慢。
  •   One-Stage目标检测算法的代表有 Single Shot MultiBox Detector (SSD) 系列、You Only Look Once(YOLO)系列和 Anchor-Free系列,此类检测算法精度一般,但是检测速度很快,在工业界应用广泛。

  2014年Two-Stage目标检测算法 R-CNN的提出,目标检测算法正式进入深度学习时代,但是算法耗时严重,无法实际应用。通过对算法的深入理解和改进,SPP-Net、Fast R-CNN及 Faster R-CNN等算法被相继提出,算法速度提升上百倍,基本达到应用需求。随着算法应用增多,算法缺点也随之暴露出来,对小目标的检测效果不理想是其中之一,研究人员通过对特征融合方法的研究,提出了 FPN、Cascade R-CNN、M2Det等算法,大幅改善了小目标的检测效果,大大提升了算法精度。

  为了从方法论上解决 Two-Stage目标检测算法的耗时问题,以 YOLO系列为基础的 One-Stage目标检测算法被提出,YOLO v2、YOLO v3、YOLO v4逐步解决了 YOLO v1算法的检测框定位不准、小目标检测效果差及算法精度低等问题。但其从 YOLO v2开始引入了 Two-Stage目标检测算法的 Anchor机制,为算法带了新的问题,如 Anchor参数设置麻烦、正负样本比例严重失衡等。
  为了解决这些问题,研究人员提出了 Anchor-Free系列算法,如ConerNet、CenterNet、FCOS、FoveaBox等,通过设计更加合适的特征表达形式,同时提升目标检测算法的精度和速度。

二、基本概念

(一)目标检测

对图像中的感兴趣目标进行识别和定位的技术,解决了图像中物体在哪里和是什么的问题。主要对输入图像中的目标进行识别和定位。

图像目标检测是计算机视觉领域的基础任务,其性能好坏将直接影响后续的目标跟踪、动作识别以及行为理解等中高层任务的性能,进而决定了人脸检测、行为描述、交通场景物体识别、基于内容的互联网图像检索等后续AI 应用的性能。

(二)发展阶段

  • 第一阶段:基于滑动窗口和人工特征提取的方法(2000年前后)

缺点:普遍存在计算复杂度高和在复杂场景下鲁棒性差的缺陷。
改进思路:研究者不得不寻找更加精巧的计算方法,对模型进行加速同时设计更加多元化的检测算法以弥补手工特征表达能力上的缺陷。
代表性成果:Viola-Jones 检测器、HOG 行人检测器等。

  • 第二阶段:R-CNN算法作为开端(2014 年至今)

核心思想:利用深度学习技术自动的抽取输入图像中的隐藏特征,从而对样本进行更高精度的分类和预测
优点:相比传统的目标检测算法,具有速度快、准确性强、在复杂条件下鲁棒性强的优势

(三)评价标准

1、精度指标

这些指标反映了目标检测算法检测到的物体边界框的准确程度。

  • IOU交并比

目标检测任务中
b
gt
b_{\text {gt}}
bgt

b
pred
b_{\text {pred}}
bpred
分别表示物体的真实边界框和检测到的边界框。
b
gt
b_{\text {gt}}
bgt

b
pred
b_{\text {pred}}
bpred
的交并比(intersection-over-union,IoU)被用来评价所预测的边界框的准确程度:(即交区域面积与并区域面积比值)

IoU

(
b
pred 
,
b
g
t
)
=
 Area 
(
b
pred 

b
g
t
)
 Area 
(
b
p
r
e
d

b
g
t
)
\operatorname{IoU}\left(b_{\text {pred }}, b_{g t}\right)=\frac{\text { Area }\left(b_{\text {pred }} \cap b_{g t}\right)}{\text { Area }\left(b_{p r e d} \cup b_{g t}\right)}
IoU(bpred ,bgt)= Area (bpredbgt) Area (bpred bgt)

  • 正负样本

交并比阈值(IoU Threshold)是一个预定义的常数,表示为
Ω
Ω
Ω


IoU

(
b
pred 
,
b
g
t
)
>
Ω
\operatorname{IoU}\left(b_{\text {pred }}, b_{g t}\right)>Ω
IoU(bpred ,bgt)>Ω
,认为
b
pred
b_{\text {pred}}
bpred
(检测到的边界框)中的图像为正样本(包含物体),否则为负样本(背景)。

  • 目标检测的精确率(Precision)和召回率(Recall)

基于交并比IOU和交并比阈值
Ω
Ω
Ω
可以计算目标检测的精确率(Precision)和召回率(Recall)。
其中,TP是真阳率(True Positive)表示正样本被预测正确的数量。
FP是假阳率(False Positive)表示负样本被预测为正样本的数量。
FN是假阴率(False Negative)表示背景被错误检测为正样本的数量。计算精确率和召回率时,一般取交并比阈值
Ω
=
0.5
Ω=0.5
Ω=0.5


P
r
e
c
i
s
i
o
n
=
T
P
T
P
+
F
P
Precision = {{TP} \over {TP + FP}}
Precision=TP+FPTP


R
e
c
a
l
l
=
T
P
T
P
+
F
N
Recall = {{TP} \over {TP + FN}}
Recall=TP+FNTP

上述为原论文中解释,自行百度搜索理解,FP假的正样本,即预测为正实际为负,FN假的负样本,预测为负但是实际为正。所以这里的背景即指负样本,因此个人认为这里的FN解释错了。
参考资料:目标检测的评价指标(TP、TN、FP、FN、Precision、Recall、IoU、mIoU、AP、mAP) - Geoffreygau - 博客园 (cnblogs.com)

  • 平均精确率(Average Precision,AP)

是目标检测中常用的指标,其计算公式如下:(其中被积分式是表示交并比阈值
Ω
=
t
Ω=t
Ω=t
时的精确率)。

A
P
=

1
P
r
e
c
i
s
i
o
n
(
t
)
d
t
AP = \int_0^1 {} Precision(t)dt
AP=01Precision(t)dt

  • 平均精确率均值(Mean Average Precision,mAP)

多类别的目标检测任务,由于待检测物体可能存在不同的所属类别,通常用平均精确率均值(Mean Average Precision,mAP)作为评价指标,其计算如下(其中,N为物体类别的数量,
 
A
P
n
{\ A {P_n}}
 APn
表示算法对第n个类别的物体的评价精确率):

m
A
P
=

n
=
1
N
A
P
n
N
m A P=\frac{\sum_{n=1}^{N} A P_{n}}{N}
mAP=Nn=1NAPn

2、速度指标

最常用的描述目标检测算法速度的评价指标是每秒检测帧数(Frames Per Second,FPS),即算法平均每秒能够检测的图像数量

(四)公开数据集

目标检测算法的训练和评价一般在特定的数据集上进行。目标检测领域最重要的数据集有PASCAL VOC、ILSVRC和Microsoft COCO等。

1、Pascal VOC

2005 年至 2012 年举办的一项计算机视觉领域的竞赛,其中包含了目标检测任务。
VOC 2007 数据集是该竞赛于2005 至2007 年使用的数据的集合,VOC 2012 则包含了该竞赛2008 年至2012 年使用的全部数据。
对四个目标类别进行分类和检测,不过VOC的两个版本主要用作基准测试集。VOC2007有5K个训练图像以及超过12K的标注目标;VOC2012将训练图像增加到11K,并拥有超过27K个标注目标,目标类别也扩展到了20类,同时也增加了语义分割、动作识别的任务。
该数据集中的物体包含了人类、动物、车辆和室内物品4个大类以及包括背景在内的21 个小类的物体。
Pascal VOC引入了mAP@0.5IoU作为评价指标,来评估模型性能。
由于该数据集中的检测任务相对简单,近年来提出的目标检测算法逐渐不再采用 VOC 数据集对算法的性能进行评估
基于深度学习的目标检测算法发展综述(2022.6.16第二版)

2、ILSVRC

ImageNet Large Scale Visual Recognition Challenge (ILSVRC),是2010~2017期间的年度挑战赛,如今其已经成为了评估模型性能的基准集。数据集的规模扩展到了包含了1000个类别、超过100万个图像,其中精选了200个类别、超500K个图像被用于目标检测。该目标检测数据集包含了来自ImageNet、Flikr在內的多种数据源。ILSVRC还放宽了IoU的限制,以将小目标检测纳入其中。
常用的 LISVRC 数据集有 LISVRC 2014 和 LISVRC 2017。
基于深度学习的目标检测算法发展综述(2022.6.16第二版)

3、Microsoft COCO

The Microsoft Common Objects in Context(MS-COCO),是目前最具挑战的数据集之一。其包含了自然环境中发现的、四岁儿童可以轻易识别的共91种常见目标。MS-COCO字2015年提出,自此其热度只增不减。其包含了超过200万个实例,且平均每张图像中有3.5个类别、7.7个实例,也包含了多种视角的图像。MS-COCO引入了更为严格的方法来评价检测器,不像VOC和ILSVCR,COCO在IoU从0.5到0.95的范围内没隔0.5计算一次mAP,然后平均这十个mAP,得到AP。除此之外,它还将AP分别用于小型、中型和大型对象,以在不同的尺度上比较性能。
包括 COCO 2005 和COCO 2018 两个常用版本
基于深度学习的目标检测算法发展综述(2022.6.16第二版)

4、Open Image

谷歌的Open Images数据集由920万张图像组成,使用图像级标签、对象边界框和分割掩码等进行标注。它于2017年推出,并已进行6次更新。对于目标检测,Open Images有1600万个包围框,包含190万张图像上的600个类别,这使它成为最大的目标定位数据集。它的创作者格外小心地选择了有趣、复杂和多样的图像,每张图像有8.3个对象类别。对Pascal VOC中引入的AP做了一些更改,比如忽略未注释的类,需要检测类和子类等。
基于深度学习的目标检测算法发展综述(2022.6.16第二版)

5、比较

列出了不同数据集的训练集、验证集和测试集中图像数量和标注的物体数量。括号内的数字表示数据集中经过标注的物体数量,括号外的数字是数据集中的图像数量
基于深度学习的目标检测算法发展综述(2022.6.16第二版)

数据倾斜/偏差问题

通过观察前几张数据集的图片分布,可以发现不同类别的图片数量差别很大,上述四种数据集中,有三种(Pascal VOC、MS-COCO、Open Image)数据集中,除了前五类,后面类的图片数量显著下降。比如Pascal VOC所展示的,有13775张图像被标注为“person”、2829张被标注为“car”,剩下的18个类别的图像数量几乎直线下降,直到“绵羊”类只有55张图像。
类似地,对于MS-COCO数据集,类“person”有262465张图像,其次最频繁的类“car”有43867张图像,这种下降趋势一直持续到只有198张图片“吹风机”。
类似的现象在Open Images 也存在,其中“Man”最常见,有378077张图片,“Paper Cutter”只有3张图片。这清楚地表示了数据集中的一种倾斜,并且必然会在任何目标检测模型的训练过程中产生一种偏差。
因此,在这些倾斜数据集上训练的目标检测模型,对于训练数据中图像数量较多的类,几乎可以表现出更好的检测性能。虽然这个问题仍然存在,但在ImageNet数据集中稍微不那么明显,从ILSVRC中可以看出,使用频率最高的类别考拉有2469张图片,使用频率最低的类别cart有624张图片。然而,这导致了ImageNet中另一个引人关注的点:该数据集中出现频率最高的类(考拉、键盘)并非是现实世界中最常见的目标(人、车、交通标志等)。

(五)目标分类网络介绍

贴链接

三、目标检测算法分类详细说明

(一)传统目标检测算法

传统的目标检测框架中包含了 3个阶段。下图框架
基于深度学习的目标检测算法发展综述(2022.6.16第二版)

1、三个过程

(1)区域建议

目的是找出输入图像中可能存在目标的区域,这些区域被称为候选区域或感兴趣区域(Regions of interest, ROI)。由于目标可能有不同的尺寸,且可能出现在任何位置,传统方法大多使用不同尺度的滑动窗口,对输入图像进行多次遍历得到大量的候选区域。

(2)特征抽取

常用尺度不变特征(Scale invariant feature transform, SIFT)、局部二值模式特征(Local binary pattern, LBP)、梯度直方图特征(Histogram of oriented gradient, HOG)等人工特征抽取方法,将感兴趣区域中的图像转换为特征向量。抽取到的特征向量作为第三阶段的输入。

(3)区域分类及边框回归

预训练的分类器,预测感兴趣区域中物体的所属类别,并输出目标检测的结果。级联学习、集成学习等机器学习方法常被应用于这一阶段以提升目标检测的精度。

2、缺点

  • 在区域建议阶段,不同尺度的滑动窗口对输入图像进行多次遍历产生大量的感兴趣区域。后续步骤中,算法对这些区域进行特征抽取和分类的过程存在大量冗余计算开销,影响算法的运行速度。另外,滑动窗口只有几种固定的尺寸,通常不能与目标完美匹配。
  • 特征抽取阶段仅能获取图像的低级特征。这些特征表达能力不足而且特征的有效性高度依赖具体任务。一旦检测目标有重大变动就要重新设计算法。
  • 整个目标检测过程被割裂为独立的3个阶段,无法找到算法的全局最优解。算法的设计依赖设计者对检测目标和具体任务的先验知识。为了弥补这些缺陷,研究者不得不寻找更加精巧的计算方法对算法进行加速使算法能够满足实时性的要求同时设计更多元化的检测算法以弥补人工特征表达能力不足的缺陷。

(二)基于深度学习的目标检测算法

深度学习是一类能够通过监督、半监督或无监督的训练方法自动学习训练数据中隐藏的数据内部结构的一类多层神经网络算法。相比人工抽取低级特征,深度学习能够将输入图像中的像素数据转化为更高阶、更抽象化的层级特征。因此深度学习抽取到的特征比传统方法具有更强的表征能力和鲁棒性。这一优势使深度学习在计算机视觉领域的研究和应用中体现出不可替代的优越性。
基于深度学习的目标检测算法发展综述(2022.6.16第二版)

  • 图片来自https://zhuanlan.zhihu.com/p/382702930

1、是否存在显式的区域建议分类

(1)两阶段目标检测算法

又叫做基于区域建议的目标检测算法或基于感兴趣区域的目标检测算法。这类算法通过显式的区域建议将检测问题转化为对生成的建议区域内局部图片的分类问题。代表性的两阶段目标检测算法有R-CNN、Fast R-CNN 等。
基于深度学习的目标检测算法发展综述(2022.6.16第二版)
细化来说如下图
基于深度学习的目标检测算法发展综述(2022.6.16第二版)

1)R-CNN算法

在 2014年,Girshick R等人提出了 R-CNN模型并在 Pascal VOC 2007数据集上实现了 58.5%的平均精度(mean Average Precision,mAP),在 Pascal VOC 2012上,平均精度(mean average precision,mAP)提升到了 53.3%。该成果比这以前的最好结果提升了30%,引起了学术界的广泛关注。
基于深度学习的目标检测算法发展综述(2022.6.16第二版)

①算法思路梗概

R-CNN算法的具体流程(正向传播)为:

(1)通过选择搜索( selective search)网络对图像的纹理、颜色等特征进行分析,选取出2 000个大小不同的候选区域
(2)对特征向量进行归一化处理(对其进行缩小处理);
(3)通过深度网络对输入的候选区域进行前向计算获得特征;
(4)训练支持向量机(support vector machine,SVM)分类器进行分类;
(5)使用回归器精细修正每个候选框的位置

②改进

相较于传统的目标检测算法,主要有以下3点改进

1)在区域建议阶段使用了选择性搜索(Selective search),解决了使用滑动窗口生成候选框导致计算量过大的问题;
2)使用卷积神经网络对感兴趣区域进行特征提取,解决了传统方法中特征表达能力不足的问题;
3)使用SVM分类器进行分类,同时借助回归算法对目标边界进行补偿和修正,以减小感兴趣区域与实际目标的偏差。

在 Pascal VOC 2007 数据集上的 mAP 达到了 58.5%,远高于此前传统方法在该数据集上获得的最好结果(SegDPM,40.4%)。

③缺点

1)选择性搜索依赖低级的视觉信息,在背景复杂时很难生成有效的候选框。另外,该过程无法通过 GPU 等并行计算设备进行加速;
2)在特征抽取将图像缩放、裁切至固定尺寸,造成信息丢失;
3)深度学习方法分别提取每个感兴趣区域中图像的特征,每一个候选区域都需要输入到 CNN中提取特征,占用大量磁盘空间,时间复杂度高,该过程产生大量重复计算;
4)R-CNN 中各个部分依旧是割裂的,训练步骤繁琐、耗时,且很难找到全局最优解。

在数据集 Pascal VOC2007中,基于 VGG卷积神经网络模型的 R-CNN算法,检测一张图像的平均时间高达 47 s

2)SPP-Net算法(R-CNN 的一种改进)

  在 2014年,何凯明等人在R-CNN模型的基础上进行改进提出了 SSP-Net模型。
  主要是为了解决 R-CNN重复对图像进行特征提取的问题,首先通过 CNN对原始图像进行特征提取,随后将候选框坐标映射至 CNN最后一层特征图上,直接获取候选区域的特征图并将其送入第二阶段的分类器训练和坐标精修。
  由于分类器的训练要求输入的特征尺寸必须统一,其在全连接层前接入了金字塔池化(spatial pyramid pooling,SPP)层来适应任何尺寸的图像输入,解决了R-CNN模型由于归一化导致的信息缺失问题。

  • 在 VOC 2007 数据集上的mAP 达到了 60.9%。
  • 由于 SPP-Net 仅需要进行一次卷积操作,其运行速度相对 R-CNN 得到了明显的提升。在达到与 R-CNN 近似甚至更高精度的前提下,SPP-Net 的运行速度是 R-CNN 的 24~102 倍。

基于深度学习的目标检测算法发展综述(2022.6.16第二版)

①改进

1)算法借鉴了金字塔空间匹配算法(Spatial Pyramid Matching,SPM),在第二阶段引入了金字塔空间池化层( Spatial Pyramid Pooling,SPP)。
2)对 R-CNN的特征提取步骤进行了修改,这样特征提取不再需要每个候选区域都经过 CNN,只需要将整张图片输入。感兴趣区域(region of interest,ROI)特征可以直接从特征图获取,使得运行速度得到了极大的提高。

②优点

1)与 R-CNN 相比,SPP-Net 通过骨干网络直接得到整个输入图像的特征图,而非分别抽取每个感兴趣区域的特征,减少了计算冗余。
2)SPP-Net 引入金字塔空间池化层将特征图中与感兴趣区域对应的部分转化为固定尺寸的特征。避免了对感兴趣区域中的图像进行缩放和裁切等操作造成的信息丢失。

③缺点

1)其感兴趣区域中图像的特征仍然需要单独保存,存在较大空间开销。
2)与 R-CNN 类似,SPP-Net 中的特征提取、分类、回归依旧是割裂的。

3)Fast R-CNN 算法(SPP-Net改进)

基于深度学习的目标检测算法发展综述(2022.6.16第二版)
在 2015年,Girshick R团队在之前的基础上提出了Fast R-CNN算法,解决了之前存在的问题。Fast R-CNN结合了 SPP-Net网络的优点,将 R-CNN网络进行改进。

  • 在同样使用最大规模的网络的情况下,在数据集 PASCAL VOC 2007上进行测试发现,Fast R-CNN相较于 R-CNN的准确率相似,但在训练和测试时间上有了明显的缩短。
  • 初步实现了端到端的目标检测。

基于深度学习的目标检测算法发展综述(2022.6.16第二版)

①具体改进

1)对整张待测图像进行卷积操作,减少重复计算。
2)整张待测图像归一化后送入深度网络,通过最后少数几层处理每个候选框,提升了运行速度
3)使用感兴趣池化层(ROI Pooling layer)代替了 SPP-Net 的金字塔空间池化层。感兴趣池化层与金字塔空间池化层具有类似的功能,能够将不同尺寸的感兴趣区域对应的特征划分为相同尺寸的特征向量。但感兴趣池化层更为简洁;
4)提出了新的多任务损失函数。该函数将分类任务与边框回归任务整合到主干卷积神经网络中,使这两个任务能够共享主干卷积神经网络的参数,从而进一步降低了目标检测所需的计算资源,减少内存占用。

②缺点

区域建议阶段依旧使用选择性搜索生成感兴趣区域。由于选择性搜索无法使用 GPU进行加速,制约了目标检测的训练和运行速度。

4)Faster R-CNN 算法

基于深度学习的目标检测算法发展综述(2022.6.16第二版)
在 2015年,Ren S Q团队在之前的基础上提出了Faster R-CNN算法,该算法在简单网络的目标检测速度达到 17 fps,在 PASCAL VOC上准确率为 59.9%,而复杂网络
下达到 5 fps,准确率 78.8%。

①改进

用区域预测网络(Region Proposal Network,RPN)代替传统的感兴趣区域预测方法。由于提取候选区域网络是基于深度学习的方法,因此可以借助 GPU 加速,提升 Faster R-CNN 算法训练和运行的速度。
使用骨干网络获取输入图像的特征。骨干网络通常是多个卷积层的堆叠,虽然能够获取图像的高级特征,但这些特征具有平移不变性,不利于对目标框的检测。为了解决这一问题,该算法在第二阶段使用全连接层消除所抽取到特征的平移不变性

②缺点

由于在第二阶段使用全连接层消除所抽取到特征的平移不变性引起

1)第二阶段无法实现对多个感兴趣区域进行计算时的参数共享,产生额外的计算开销,影响算法速度;
2)全连接层的加入消除了特征的平移不变性的同时也造成了信息的丢失,影响算法的精度。

5)Mask R-CNN

2017年 He K M等人在基于 Faster R-CNN的基础上进行改进提出了Mask R-CNN,该算法可以精确到像素级输出,高质量完成分割任务。此外两者的输出也有所不同。Faster R-CNN输出为种类标签和 box坐标,而 Mask R-CNN则会增加一个输出,即物体掩膜(object mask)。
基于深度学习的目标检测算法发展综述(2022.6.16第二版)

①特点

1)通过引入感兴趣区域聚集(RoI Align)层来替代 Faster R-CNN采用的高校池以解决仅通过池化直接采样导致特征图谱在原图的对应位置与真实位置有所偏差的问题;
2)多任务损失函数包括分类误差、回归误差、分割误差,即将识别预测和分割预测分割,掩膜分支针对每个 RoI产生一个 K×M×M二值的掩膜输出,其中K为分类物体的类别数目。该算法在 COCO数据集上测试效果都略优于 Faster R-CNN。

6)FPN

2017年,为了降低计算量 LIN等人提出特征金字塔(Feature Pyramid Network,FPN)。
  在这之前基于深度学习的检测算法都是通过CNN来进行特征学习和提取的,但如 R-CNN系列算法都是从CNN的最后一层特征图上提取特征,该层经过多次的下采样操作,虽具有很强的特征表达能力,但其分辨率已经变得很小,小尺寸目标在此层上已基本无信息保留,所以仅使用此层特征会导致对小目标的检测精度较差。
  若使用浅层分辨率较大的特征层来进行目标检测,虽然浅层保留了小尺寸目标的信息,但浅层特征表达能力较差,小目标检测召回率增加的同时也会导致误检率大幅增加。为了解决以上问题,提升小尺寸目标的检测效果,提出了FPN算法。

结构特点

1)自底向上连接CNN下采样通道,可以得到不同分辨率的特征图;
2)自顶向下连接,不同分辨率的特征图无法直接进行特征融合,需要进行上采样操作,使需要融合的特征层保持一致的分辨率;
3)侧向连接,将上采样后的深层特征层和浅层特征层进行融合,可提取的语义信息更多,增强浅层特征的表达能力。

FPN结构采用了多尺度特征融合的方式,增强了浅层特征层的特征表达能力。随后,通过对浅层大分辨率特征层进行特征提取和目标检测,大幅提升了算法对小尺寸目标的检测能力。

7)R-FCN 算法

基于深度学习的目标检测算法发展综述(2022.6.16第二版)

①创新改进

1)将全卷积网络(Fully Convolutional Network,FCN)应用于 Faster R-CNN,使算法第二阶段的计算也实现了参数共享,提升了检测速度;
2)提出了位敏得分图(position-sensitive score maps)和位敏池化层(position-sensitive pooling)对目标检测任务中的平移不变性和平移可变性进行权衡,使 R-FCN 在提升了检测速度的基础上达到和 Faster R-CNN 接近的精度。

8)DetectoRS

许多当代的两阶段探测器采用的是多看多想的机制,即先计算对象proposals,然后提取特征来检测对象。DetectoRS在网络的宏观和微观层面都使用了该机制。

  • 在宏观层面,其提出了递归特征金字塔(RFP)。

这是由多个特征金字塔(FPN)堆叠而成、且带有从FPN的自顶向下层级到自底向上层之间的额外反馈连接。FPN的输出经过空洞空间金字塔池化层(ASPP)处理,然后送入下一个FPN层。
然后,通过一个融合模块创建一个注意力map,将不同模块的FPN的输出联合起来。

  • 在微观层面,Qiao等人提出了可切换的Atrous卷积(SAC),以调节卷积的扩张率。

利用具有5x5滤波器和1x1卷积的平均池化层作为交换函数来决定atrous卷积的速率,帮助backbone动态检测各种尺度的目标。他们还把SAC放在两个全局上下文模块之间,因为这有助于实现更稳定的切换。

递归特征金字塔和可切换Atrous两种技术的结合卷积产生检测器。作者将上述带有混合任务级联(HTC)的技术作为baseline,并和ResNext-101骨干结合起来。

DetectoRS结合了多个系统,以提高探测器的性能,并设置了最先进的两级探测器。其RFP和SAC模块具有很好的通用性,可用于其它检测模型。但是,由于它只能处理数据,不适合实时检测(每秒4帧)。

8)总结
  • 1)实现参数共享以提升算法运行速度;
  • 2)提出新的训练策略使算法从多个割裂的步骤逐步向端到端演化。

二阶段缺陷:两阶段目标检测算法在第一阶段生成区域建议,在第二阶段仅针对感兴趣区域中的内容进行分类和回归,丢失了局部目标在整幅图像中的空间信息。研究者提出了一阶段目标检测算法来解决这一缺陷。

(2)一阶段目标检测算法

又叫做基于回归的目标检测算法。这类算法不直接生成感兴趣区域而将目标检测任务看做是对整幅图像的回归任务。代表性的一阶段目标检测算法有YOLO、SSD 等。
基于深度学习的目标检测算法发展综述(2022.6.16第二版)
细化来说如下图
基于深度学习的目标检测算法发展综述(2022.6.16第二版)

1)基于二进制掩膜的目标检测算法(早期的一阶段目标检测算法)

基于深度学习的目标检测算法发展综述(2022.6.16第二版)
采用了 AlexNet作为骨干网络,但将网络的最后一层替换成回归层。通过回归预测目标的二进制掩膜并以此为依据提取目标边界框。

缺点

由于单一掩膜难以区分识别的目标是单一的物体还是多个相邻的物体,算法需要输出多个掩膜。这使网络训练变得困难,也导致该算法很难应用于对多个类别目标的检测。

2) Overfeat 算法

基于深度学习的目标检测算法发展综述(2022.6.16第二版)

  • 针对分类、定位、检测 3 个不同的任务将骨干网络的最后一层替换成不同的分类或回归层。这些任务共享骨干网络的参数。
  • 骨干网络由 AlexNet 实现,但该算法用偏置池化(offset pooling)代替了原本的最大池化(maxpooling)以消除特征粒度不足的问题。
①改进

该算法借助卷积层代替了滑动窗口的操作,大大提升了目标检测的速度

②缺点

该算法难以实现对小尺寸目标的检测。

3)YOLO 算法(最早具有实际应用价值的)

在 2016年,Redmon J等人提出 YOLO算法使得基于深度学习的目标检测算法有了单阶段和两阶段的区分。
YOLO舍弃候选框提取,直接采用回归的方法进行物体分类和候选框预测。这样的改进简化了网络结构,将检测速度提升至了 Faster R-CNN的 10倍左右。
基于深度学习的目标检测算法发展综述(2022.6.16第二版)

YOLO v1

骨干网络采用了类似 GoogLeNet的结构,直接基于整幅输入图像预测图像中物体的类别和边界框的位置、尺寸等信息。

  • 首先将待测图像进行归一化处理
  • 然后将处理后的图像输入CNN中进行特征提取以及边界框置信度的预测,
  • 最后采用非极大值抑制(non-maximum suppression,NMS)算法过滤边界框获得最
    优结果。
    (通俗来说就是,对输入图像进行缩放,统一大小为
    44
    8
    2
    {448^2}
    4482
    ,其次进行卷积处理,最后根据置信度对结果进行筛选,去除误差较大的部分)

但是算法只针对最后特征图进行分析,使得它对小目标的检测效果不佳,当多个目标出现在一个网格单元时不容易区分。

优点

1)划分网格的方法,避免了大量的重复计算,使 YOLO 算法达到了较快的检测速度,在 VOC 2007 数据集中达到了每秒 45 帧的检测速度。
2)YOLO 算法基于整个输入图像进行检测而非基于局部进行推断,这使其背景误检率只有 13.6%,远小于已有的两阶段目标检测算法。

缺点

1)精度相对较差。在 VOC 2007上的精确性只有 63.4%,低于 Faster R-CNN 等同时期的两阶段目标检测算法;
2)对于成群的小目标、多个相邻的目标或具有异常尺寸的目标检测效果较差。

YOLO v2(YOLO 9000)

2017年,edmon J等人在 YOLO v1的基础上进行改进提出了 YOLO9000,该算法的检测速度远远超过其他检测算法,代表着当时业界最先进的检测水平。

改进
相较于 YOLO v1做出了以下改进:

1)对网络结构进行了优化,使用卷积层代替YOLO v1中的全连接层。应用了批量正则化(batch normalization)、提高了收敛性,有利于参数的优化;
2)为了适应高分辨率输入,使用新的高分辨率分类器;
3)使用卷积层预测边界框位置,并用标准欧氏距离的 K-means聚类方法产生的 Anchor代替 Faster R-CNN和 SSD手工设计的 Anchor,以提高置信分数;
4)使用新的骨干网络(特征提取能力更强的 Darknet-19)和联合训练方法等技术来获得更高的精确度。
5)可以检测目标类别的种类达到了 9000种。
6)优化了损失函数中位置回归损失部分,增强了网络模型训练时的稳定性。
7)引入多尺度训练策略,有效提升了网络模型对不同尺寸目标的感知能力

YOLO v3

2018年,Redmon J等人[26]在 YOLO v2的基础上提出了效果更佳的 YOLO v3算法

改进

1)调整了网络结构,使用了更加复杂的骨干网络。使用残差网络模型Darknet—53进行特征提取,提升了算法的整体性能,该网络参考了 Resnet101但运行速度更快;
2)采用多尺度的特征融合进行目标检测,借鉴特征金字塔网络( feature pyramid net-works,FPN)思想,通过采用了 3个不同尺度的特征图能获得细粒度的特征,以获取更多小目标的有用信息从而提升算法对小目标检测的精确度;
3)进行分类时,采用多个单独的Logistic分类器取代了SoftMax,主要是为了解决训练集目标可能存在着重叠类别标签的问题 。提升了检测速度与精度。

优缺点
YOLO v3算法提升了 YOLO系列算法的小尺寸目标检测精度,同时拥有很快的检测速度和较低的背景误检率。
但其对目标坐标的预测精准性较差。

YOLO v4

  ALEXEY等人在 2020年提出了 YOLO v4算法,其算法本质上是将当前多种先进方法融合到 YOLO v3算法中,对 YOLO v3算法的性能进行进一步提升。
  在 COCO测试集上输入尺寸为 608×608的 YOLO v4算法达到了 43.5%的平均精度均值(Mean Average Precision, mAP)指标,而同样输入的 YOLO v3算法在相同测试集上的 mAP为33.0%,并且在同一型号的 GPU上 2种算法的检测速度相差不大。综合来看,YOLO v4算法不仅在保证检测速度的同时达到了更高的检测精度,而且其对目标坐标的回归精度也有较大的改善。

改进

  1)图像增强方面,YOLO v4算法在训练时使用了 Mosaic数据增强方法,此方法是基于 CutMix数据增强方法进行的改进,CutMix数据增强方法使用了2张图片进行拼接,而Mosaic数据增强方法则采用了4张图片,并且以随机缩放、随机裁剪、随机排布的方式进行拼接,该数据增强方法不仅丰富了训练集,而且使用单个或少量GPU训练就可以达到较好的效果。
  2)在基础网络里加入了 CSP模块、Mish激活函数、SPP模块、PAN结构等,这些方法的加入进一步提升了网络的特征提取能力。(Mish函数用来解决梯度消失问题,路径聚合网络(Path Aggregation Network,PAN)进行特征融合从而获得更高的性能)
  3)损失函数方面,加入了比 IoU Loss和GIoU Loss优化能力更强的 CIoU Loss,使得预测框回归的速度和精度更高。

总结
  从 YOLO算法被提出至今,一直在不断地改进提升,但依旧存在着物体定位准确度低、召回率差等问题需要解决。
  尽管存在一些问题,但是,这些方法都为新的一阶段目标检测算法的设计提供了借鉴,证明了骨干网络设计、高效特征融合等技术对提升目标检测性能具有重要意义。

4)SSD算法

  在 2016年,Liu W等人提出了 SSD算法,解决了同时期 YOLO v1算法存在的定位精度低、难以检测小目标等问题。

  采用了与 YOLO 算法类似的网格划分的方法,通过对 Faster R-CNN算法和 YOLO算法的优点结合,利用特征的金字塔结构充分挖掘卷积层的特征信息,使得其在满足检测精度的同时保证了算法的速度,在一定程度上克服了YOLO算法难以检测小目标、定位不准的缺点。
在 VOC07上实现了 76.8%的 mAP,检测速度则达到了 59帧 /s

基于深度学习的目标检测算法发展综述(2022.6.16第二版)

改进(与YOLO相比)

1)使用了多尺度特征进行检测,通过快速检测不同尺度特征图的准确度,明确区分预测;
2)舍弃了 YOLO 算法中的全连接层,改用全卷积网络,避免了 YOLO方法在全连接之后再进行检测的操作;
3)结合 Faster R-CNN算法中的 Anchor机制,为每个网格设定多个具有不同长宽比的先验边界框,通过大小不同的先验框在特征图中获取候选区域,提高了召回率;
4)使用了数据扩增 ( data augmentation)技术

  使 SSD 算法在运行速度媲美 YOLO 算法的同时达到了媲美 Faster R-CNN 的性能。
其在 VOC 2007 数据集中的 mAP达到了 74.3%。

缺点

1)先验边界框的尺度需要人工设置而非从数据中学习而来,导致该算法的训练非常依赖经验;
2)对小目标的检测效果依旧弱于两阶段目标检测算法。

  SSD 的改进算法还有 FSSD,RefineDet,M2Det等,这些改进均为 SSD 算法的性能带来了提升

5)DSSD 算法

2017年,Fu C Y等人对 SSD算法进一步优化提出了 DSSD(deconvolutional single shot detector)算法。
基于深度学习的目标检测算法发展综述(2022.6.16第二版)

改进

1)将 SSD 算法的骨干网络替换为 Resnet101 以增强算法的特征提取能力。
2)引入了反卷积层(deconvolutional layer)。将 SSD中的融合模块采用反卷积,代替传统的双线性插值上采样,将抽取到的低级特征转化为较高层次的语义信息。
3)在上一条改进的基础上,提出了一种特征融合方法,将反卷积得到的语义信(高层语义)息与卷积获得的低级特征融合,从而提升了算法的检测精度,尤其是对小目标的检测精度。

与此同时,随着网络的复杂度增加,算法的检测速度有所下降。

在 VOC 2007 数据集中的 mAP 达到了 81.5%,高于 SSD 算法。其在 COCO 2018 数据集中对小目标检测的 AP 值也达到了 13.0%,高于 YOLO 算法的 10.2%。

6)FSSD算法

同年(2017年),Li Z X等人提出了 FSSD( feature fusion single shot multibox detector)算法,通过借鉴 FPN算法思想,将多尺度特征与信息融合,虽然对小目标的检测精度有所下降,检测速度得到了明显的提升。
基于深度学习的目标检测算法发展综述(2022.6.16第二版)

7)RetinaNet 算法

由于检测模型在训练时会遇到前景-背景类别失衡的问题,因此造成了 One-stage方法的准确率一直没有较大提高。

2017年,LIN等人提出 RetinaNet算法,通过重塑标准交叉熵损失,提出了 Focal Loss,对类别失衡做了较好的处理。Focal Loss使 One-stage检测器达到与 Two-stage检测器相当的准确率,同时保持极高的检测速度。
基于深度学习的目标检测算法发展综述(2022.6.16第二版)

概述

生成的候选框中的内容存在类别不均衡,是已有的一阶段目标检测算法精确度普遍低于两阶段目标检测算法的一个重要原因。
基于标准交叉熵损失改进得到焦点损失(focal loss)函数。焦点损失的应用可以使算法根据候选框中的内容自动的调节正负样本对损失的贡献度使算法更关注于低置信度的样本,从而减小类别不均衡对算法精确度的影响。

该算法在多个数据集上达到了接近两阶段目标检测算法的精确度。

缺点

运行速度明显低于 YOLO、SSD 等一阶段目标检测算法

8)EfficientDet

EfficientDet构建了具有更高精度和效率的可扩展检测器的思想,引入了有效的多尺度特征、BiFPN和模型缩放。

  • BiFPN是一种具有可学习权值的双向特征金字塔网络,

用于不同尺度下输入特征的交叉连接,它在NAS-FPN的基础上,通过删除一个输入节点,增加一个额外的横向连接,改进了需要大量训练和复杂网络的NAS-FPN,这消除了低效节点,增强了高级特征融合。与现有的探测器不同的是,它可以根据更大、更深的骨干网络或堆叠FPN层进行放大

  • EfficientDet引入了一个复合系数,可用于“联合放大骨干网络、BiFPN网络、类/盒网络和分辨率的所有维度”。
  • EfficientDet利用EfficientNet作为backbone,该backbone是一种具有多个BiFPN的堆叠的特征提取网络,最终BiFPN层的每个输出被发送到类和边框预测网络。
  • 该模型使用SGD优化器和同步BN进行训练,并使用swish激活,而不是标准的ReLU激活,后者可区分,效率更高,性能更好。

EfficientDet比以前的检测器具有更好的效率和准确性,同时体积更小,计算成本更低。它易于扩展,可以很好地应用于其他任务,并且是当前(截止到论文发表日期2021年4月)单阶段对象检测的SOTA模型。

9)Swin Transformer

Transformer从一开始就在自然语言处理(NLP)领域产生了深远的影响。它在语言模型中的应用,如BERT(Bidirectional Encoder Representation from Transformers),GPT(Generative Pre-trained Transformer),T5(Text-To-Text Transfer Transformer)等,推动了这一领域的技术进步。transformer使用注意模型来建立序列元素之间的依赖关系,并且可以比其他顺序架构关注更长的上下文。在自然语言处理中的成功引起了人们对其在计算机视觉中的应用的兴趣。而cnn一直是CV的支柱,不过其有一些固有的缺点,如缺乏全局上下文的重要性,固定的训练后权重等。

Swin Transformer旨在为计算机视觉任务提供基于Transformer的backbone,它将输入图像分割成多个不重叠的patch,并将其转换为token。然后将大量Swin Transformer块应用于4个阶段的patch,每个后续阶段减少patch的数量,以保持分层表示。Swin Transformer块由局部多头自注意(MSA)模块组成,在连续块中基于交替移位的patch窗口。在局部自注意中,计算复杂度与图像大小成线性关系,而移动窗口可以实现跨窗口连接。作者还显示了移动的Windows如何在开销很小的情况下提高检测精度。

Transformers提供了一个不同于CNN的范式,不过其在CV领域的应用仍处于初级阶段,它在这些任务中取代卷积的潜力是非常大的。 Swin Transformer在MS-COCO上达到了新的SOTA,不过其参数量相比CNN模型更高。

8)总结

1)构建具有更强表征能力的骨干网络以提升算法的精度;
2)提出新的损失函数以解决目标检测过程中遇到的样本不均衡等问题。

2、是否定义先验锚框分类

基于锚框的目标检测算法

  • 通过显式或隐式的方式,创建一系列具有不同尺寸、长宽比的检测框(锚框),然后对锚框中的内容进行分类或回归。
  • R-CNN,Faster R-CNN,SSD 均是基于锚框的目标检测算法。
  • 基于锚框的两阶段目标检测算法利用选择性搜索等方法,显式的创建一系列锚框;
  • 基于锚框的一阶段目标检测算法在骨干网络提取输入图像特征的同时,按照预定义的锚框属性隐式的获取检测框中图像的特征。
基于锚框算法的优点

超参数的选取

  • 应用锚框不但依赖先验知识也使算法缺乏泛化能力

基于锚框的目标检测算法需要根据物体的尺寸、长宽比在训练数据中的分布确定锚框的尺度(scale)、长宽比(aspect ratio)、生成锚框数量、交并比阈值等超参数。这些超参数的值的选取会影响算法精度。例子是锚框超参数的选取对RetinaNet算法在COCO数据集中的精确度造成至少4%的改变。这种影响使基于锚框的算法在更换应用场景后往往无法达到令人满意的性能。

训练过程中

  • 锚框的应用提升了算法的计算复杂度,降低了目标检测算法的训练速度

算法的训练过程中,基于锚框的目标检测算法分别计算每个锚框与物体的真实边界框的交并比。该过程增加了算法的计算量且无法借助 GPU 等并行计算设备提升速度。

获取检测结果
两阶段算法:对锚框内的图像分类,然后通过回归等方式调整锚框边界得到物体边界框
一阶段算法:直接基于生成的锚框预测目标的边界框

  • 生成锚框的过程忽略了锚框中前景(物体)与背景的比例。导致训练样本中负样本(只包含背景的锚框)的数目明显多于正样本(包含物体的锚框),存在严重的类别不平衡问题,这是限制目标检测算法精度的一个主要原因。
  • 锚框难以检测到异常物体。这导致基于锚框的算法检测尺度、长宽比异常的物体时召回率过低。因此,限制了目标检测算法的精度。
缺点总结

1)锚框的设计依赖先验知识,缺乏泛化能力;一些超参数的设置(如尺寸、比率、IoU阈值等)会对检测效果产生影响。
2)训练过程大量计算锚框与真实边界框的交并比,造成冗余计算,增加算法运算复杂度;
3)基于锚框生成的训练样本中正负样本失衡,影响检测精度;
4)对异常物体检测精度较差。

无锚框目标检测算法

针对基于锚框的目标检测算法的缺陷,研究者们提出了无锚框目标检测算法。这类算法移除了预设锚框的过程,直接预测物体的边界框。

优点

1)锚框的参数从数据中学习而来,鲁棒性强;
2)训练过程中无需大量重复计算锚框与真实边界框的交并比,节省训练时间;
3)可以避免训练过程中样本失衡的问题。

基于中心域(center-based)的目标检测算法

直接预测物体的中心区域坐标和边界框的尺度信息

1)DenseBox 算法(早期的基于中心域的算法)
  • 将每一个像素作为中心点分别预测该点到其所在的物体上下左右边界的距离以及物体属于不同类别的概率。即,对输入图像的每一个像素预测一个边界框 。
  • 然后通过非极大值抑制( Non-Maximum Suppression,NMS)对这些边界框进行筛选。

优点

在人脸检测等小目标检测任务的精度明显高于基于锚框的算法

缺点

被证实不适用于通用目标检测且对重叠物体检测效果不好

2)YOLO 算法(特指v1,早期的基于中心域的目标检测算法)

缺点

1)YOLO 算法只检测离中心点距离最近的物体,导致其召回率偏低,算法的精度低于同时期基于锚框的一阶段目标检测算法
2)无锚框方法在其后续版本的 YOLO v2 和YOLO v3 没有被继续采用

3)FCOS 算法
  • 采用了与DenseBox 算法类似的逐像素预测边界框的思想,但是提出了一种基于多尺度特征的重叠物体检测方法。
  • 该方法中,骨干网络可以提取输入图像的多尺度特征:浅层特征包含更多细节,对小目标检测有利;深层特征包含更多语义信息,偏向大目标检测。
  • 作者假设重叠的物体具有较大尺度差异,使用不同层次的特征预测不同尺度的物体边界框从而实现对同一区域重叠物体的检测

缺点

在当所预测的像素与物体实际的中心点存在较远距离时检测结果容易受到重叠物体语义交叠的影响

4)FoveaBox 算法
  • 使用了与 FCOS 算法相同的思路解决物体重叠的问题,但是引入了可调节的正负样本衰减机制增强了训练过程中正负样本之间的判别度从而避免重叠区域语义交叠的影响
  • 该算法并非直接预测中心点与边界框各边的距离,而是从数据中学习所预测中心点与边界框各边的映射关系从而实现了更强的鲁棒性。
基于关键点(keypoint-based)的目标检测算法

一般以热力图的方式预测输入图像中各个点是边界框中的关键点的概率,然后将多组热力图组合得到物体边界框。

1)CornerNet算法

CornerNet算法主要是借鉴热力图的思想,使用左上角点和右下角点来定义目标框,以预测一组角点(Corner)的方式来预测目标坐标。

  • 使用骨干网络抽取输入图像的特征,
  • 然后基于这些特征生成两组不同的热力图分别预测图像中各个像素是锚框的左上角点和右下角点的概率、角点对应物体的所属类别信息以及锚框的误差信息
  • 最后根据这些信息配对预测的角点得到物体边界框。

优点

完全摆脱了锚框的约束,仅依靠关键点预测物体的边界框且取得了不错的精度

缺点

算法使用了 Corner Pool的方法,该方法融入了更多目标边的信息,但也不可避免地导致网络对边更加敏感,忽略了待检测物体本身的特征,对物体的分类不够准确

2)CenterNet算法

  与 CornerNet算法相比较,CenterNet算法通过对特征表达形式进行了修改和优化,从而获得了更高的算法精度。
  在 CornerNet 基础上加入了对物体中心点的预测。这项改进使算法在预测边界框时考虑到边界框内部物体的特征,使网络能够获取到目标的内部特征,从而提升算法的精度。

改进

  1)在 Corner Pool的基础上进行改进,提出了 Cascade Corner Pool,使得角点也能编码一些内部的信息,增强了网络的表征力。
  2)提出了 Center Pool,获得水平方向以及竖直方向上的最大值,也能够表示更多的信息,从而提升了算法的检测精度

3)CenterNet(Object as Point)算法
  • 以上算法都需要在算法的最后使用非极大值抑制去除冗余的边界框,影响算法速度。因此提出本算法,不再需要去除冗余边框。
  • 采用了基于关键点的思想,使用热力图预测物体的中心点。
  • 然后,采用了基于中心预测的思想利用所预测中心点处获取的特征预测边界框的长度和宽度从而得到检测结果。

优点

这种混合方法的应用使算法不需要借助非极大值抑制去除冗余结构,因此计算比已有的目标检测算法更加简洁。

总结
  • 无锚框目标检测算法的出现是为了弥补基于锚框的目标检测算法在小目标检测的缺陷,在特定场景的小目标检测中的表现优于基于锚框的目标检测算法。
  • 但许多无锚框算法也被指出不适合应用于通用目标检测。
  • 由于这类算法出现较晚,仍有较大潜力实现进一步提升。

基于深度学习的目标检测算法总结

基于深度学习的目标检测算法发展综述(2022.6.16第二版)

四、算法性能比较与分析

一些代表性的基于深度学习的目标检测算法的性能进行比较
注释为“”的算法为两阶段目标检测算法,未使用“”注释的算法为一阶段目标检测算法。注释为“†”的算法为无锚框目标检测算法,未使用“†”注释的算法为基于锚框的目标检测算法。为了保证所列出数据的参考价值,表中给出的结果尽量选择了已有文献中算法在近似条件下的性能。

(一)目标检测算法在 VOC 2007 数据集中的性能

基于深度学习的目标检测算法发展综述(2022.6.16第二版)

(二)目标检测算法在 COCO 2018 数据集中的性能

基于深度学习的目标检测算法发展综述(2022.6.16第二版)
补充

算法 基础网络 速度(fps) VOC2007(mAP@IoU=0.5) VOC2012(mAP@IoU=0.5) MSCOCO(mAP@IoU=0.5:0.95)
D2Det ResNet-101 6 45.4%
YOLO v4 CSPDarknet-53 33 43.5%

(三)结论

  • 1)尽管两阶段目标检测算法的运行速度在不断演化中得到提升,依旧明显慢于一阶段目标检测算法;
  • 2)借助更复杂的骨干网络以及一些高级深度学习技术,一阶段目标检测算法的精度能够接近甚至超过两阶段目标检测算法。说明骨干网络的设计对一阶段目标检测算法精度的提升具有重要意义;
  • 3)一阶段目标检测算法中,DSSD 和 ASSD 的精度明显高于其他算法,但速度也明显慢于其他算法。类似的,YOLO及其衍生算法速度较快,但精度低于其他一阶段目标检测算法。说明算法的速度和精度依旧难以兼得;
  • 4)由于引入了大量小目标物体,增大了目标检测的难度,所有算法在 COCO 2018 数据集中的精度均有所降低。说明小目标检测是目前目标检测的一个重要挑战;
  • 5)无锚框目标检测算法在 COCO 2018 数据集中的精度,尤其是对小物体检测的精度要高于基于锚框的算法。这证明了无锚框目标检测算法是未来重要的发展方向。

五、未来发展方向以及解决思路

(一)如何获取高质量的目标检测数据集。

基于深度学习的目标检测算法是一类数据驱动的算法,算法的精度和鲁棒性依赖于数据集的规模和质量。目标检测数据集的构建依赖于人工标注,工作量极大而且成本高昂。

解决思路

  • 提升对已有数据集的利用效率,如同时使用多个数据集中的数据训练算法或借助数据增强、迁移学习等技术对算法进行训练。
  • 借助半自动标注技术低数据标注的成本。
  • 但这些方法都不能从根本上解决缺乏大规模目标检测训练数据的问题。随着深度学习技术的发展,半监督和无监督的深度学习方法在目标检测领域的应用能够大大降低目标检测数据集的标注成本。

(二)如何提升骨干网络的性能。

深度学习强大的特征提取能力是基于深度学习的目标检测算法取得成功的关键。

解决思路

  • 骨干网络对目标检测算法性能的影响主要体现在精度和性能两个方面。

一方面,更加复杂的骨干网络通常具有更强的特征抽取能力,使目标检测算法具有更高的精度。文献[64]通过实验证明了骨干网络的深度、宽度和输入图像的分辨率都会对算法的精度产生影响。另外,卷积、反卷积、残差网络等深度学习基本模块和 Transformer、图神经网络(Graph neural network,GNN)等新的神经网络架构在目标检测领域的应用都能提升算法的精度。

  • 另一方面,骨干网络的速度决定了目标检测算法的检测速度。

SqueezeNet、MobileNet、ShuffleNet等轻量化骨干网络在目标检测领域的应用提升了算法的速度。这些骨干网络存在的共同点是它们都是研究者手工设计的。设计的过程非常耗时且设计的结果并非全局最优。基于神经网络架构搜索(Neural Architecture Search,NAS)的自动化网络设计和基于 AutoML的自动网络压缩能够在较少人工干预下自动求解最优的网络结构。这些技术在目标检测领域的应用有助于构建出具有更高性能的骨干网络。

(三)如何提升算法对异常尺度目标的检测精度

已有的目标检测算法在检测异常尺度目标,尤其是成群的小目标时存在检测精度偏低的问题。

解决思路

  • 已有的算法大多采用特征金字塔等多尺度的特征抽取方法和精心构造的损失函数提升算法对异常尺度目标的检测精度。这些方法均缺乏对图像中内容的理解。虽然在一定程度上使问题得到了改善,但都没有从根本上解决这一问题。
  • 上下文学习是一种通过算法学习输入图像中“目标与场景”、“目标与目标”之间存在的共存关系的机器学习技术。在未来,借助基于类别语义池的上下文记忆模型、图推理和知识图谱等技术,上下文学习能使算法根据抽取到的特征推断目标的存在从而提升检测精度。

(四)如何实现面向开放世界的目标检测。

已有的目标检测算法大多基于封闭的数据集进行训练,仅能实现对数据集中所包含的特定类别的目标检测。在现实应用中,目标检测算法需要检测的目标的类别往往是动态化和多样化的。如在自动驾驶、植物表型分析、医疗保健和视频监控的场景下,算法在训练时无法全面了解推理时预期的类别,只能在部署后学习新的类别。大部分已有的算法无法解决这些需求。

解决思路

  • 面向开放世界的目标检测能够在没有明确监督的前提下,将未知的目标识别为“未知”类别,并且能够在逐步获得这些“未知”类别的标签后逐步对新的类别进行学习而不遗忘旧的类别。这类方法的研究将使基于深度学习的目标检测算法在现实中得到更多的应用。

(五)如何基于深度学习进行其他形式的目标检测。

目前对目标检测的研究主要集中在图像目标检测,对于其他形式的目标检测如 3D 目标检测、视频目标检测涉及较少。这些目标检测任务对自动驾驶、工业机器人等领域具有重要意义。这些领域由于安全性、实时性的要求导致对目标检测算法的精度和速度有更高的要求,因此难度较高。这些领域背后蕴含着巨大的市场和经济效益使这些形式的目标检测算法的研究具有较好的发展前景。

(六)一些细节点

1、对于小尺寸目标检测精度低的问题

  基于 Anchor的算法主要是由于设置的Anchor跟小目标无法较好匹配,导致无法较好地提取到小目标的特征。D2Det算法通过引入密集局部回归的方法提升了小目标与Anchor的匹配效果,从而提升了小目标的检测效果,未来还可以在此基础上对密集局部回归进行改进,进一步提升小目标的检测精度。

2、对于训练时正负样本不均衡的问题

  OHEM、Focal Loss、GHM等算法通过手工抑制负样本损失的方式来平衡正负样本给网络带来的损失反馈,未来可以通过线上自适应的方式更加合理地平衡正负样本损失,进一步提升算法效果。

3、对于训练样本较少问题

  部分应用领域由于保密或难获取等原因,导致训练样本量较少,可以通过模拟场景的方式增加样本量,也可以通过 GAN系列算法对样本做一些增强和扩充,还可以进一步研究小样本学习的相关方法,提升小样本集的训练效果。

五、参考资料

[1]李柯泉,陈燕,刘佳晨,牟向伟.基于深度学习的目标检测算法综述[J/OL].计算机工程:1-17[2022-06-09].DOI:10.19678/j.issn.1000-3428.0062725.
[2]包晓敏,王思琪.基于深度学习的目标检测算法综述[J].传感器与微系统,2022,41(04):5-9.DOI:10.13873/J.1000-9787(2022)04-0005-05.
[3]王树贤,翟远盛.基于深度学习的目标检测算法综述[J].信息与电脑(理论版),2022,34(06):67-69.
[4]吕璐,程虎,朱鸿泰,代年树.基于深度学习的目标检测研究与应用综述[J].电子与封装,2022,22(01):72-80.DOI:10.16257/j.cnki.1681-1070.2022.0114.
[5]2021深度学习目标检测综述-叶舟-CSDN
[6]Zaidi, Syed Sahil Abbas, Mohammad Samar Ansari, Asra Aslam, Nadia Kanwal, Mamoona Asghar和Brian Lee. 《A Survey of Modern Deep Learning Based Object Detection Models》. arXiv, 2021年5月12日. http://arxiv.org/abs/2104.11892.
[7]目标检测究竟发展到了什么程度?| 目标检测发展22年