目标识别 adaboost_精读一篇目标检测综述-Object Detection in 20 Years: A Survey

7d7de50763156e8caff7def58ec6d350.png

用了半天时间将这篇综述略读了一遍,作为刚入门的小白感觉还是有一些收货的,预计再用2,3天时间精度一遍,同时对提到的经典模型或者方法都做一个简单的介绍,引文400篇全部看完太浪费时间了,因此我搜了一些引文的中文简单的解释,另外加上我自己的理解,估计会写的比较长吧,加油!

Abstract:

Object detection 作为计算机视觉四大基础任务之一,是instance segmentation,object tracking等任务的基础,在最近这些年里受到了极大的关注。近期的目标检测主要得益于deep learning的强大力量。这篇文章的主要特点在于,他跨越了1990-2019超过25年的时间,涵盖了这期间很多比较有影响力的工作,包括一些里程碑式的工作,数据集,metrics,网络加速技术,还有近期sota的方法。除此之外,还对一些常见的应用进行了review,包括行人识别,面部识别,文本识别等等。如果真的可以将这篇文章消化,足够在脑海中建立起object detection的完整脉络。

INTRODUCTION

这一部分主要讲了这篇综述不同于其他综述的地方以及它的主要内容,总结如下:

1. A comprehensive review in the light of technical evolutions:

时间跨度长,不仅是focus最近效果好的工作,而是对较为完整的历史进行了回顾,了解这整个的时间线有助于构建完整的知识体系。

2. An in-depth exploration of the key technologies and the recent state of the arts:

Focus一些前沿而晦涩的概念,比如“multi-scale detection”,“hard negative mining”,“bounding box regression”,尝试着从三个部分为读者解答这些概念并留下深刻印象

  1. Where they come from?
  2. How did they evolve?
  3. What are the pros and cons of each group of methods?

毕竟是survey,篇幅不长,要想真正做到in-depth,还是要自己看原文

3. A comprehensive analysis of detection speed up techniques:

这一部分我觉得很适合入门,没有涉及深度的数学推导,简单的介绍了渗漏卷积,网络压缩,模型蒸馏,以及integral image, vector quantization等一些概念

4. Difficulties and Challenges in Object Detection

这一部分也总结得不错,看完之后至少会对目前前沿的研究方向和待解决的问题有个大致的认识。


2 OBJECT DETECTION IN 20 YEARS

主要从四个部分回顾了20年的发展历程,包括里程碑式的检测器,数据集,度量标准以及主要技术的发展。

c4f8e7a4dd6f3cc68a704ca9bbbbb036.png

从2014年为分割,之前的工作都是traditional detector,之后的都是DL-based detector。从以下三个方面介绍了相应的milestone detectors。

  1. Traditional detectors
  2. CNN based Two-stage Detectors
  3. CNN based One-stage Detectors

2.1.1 Milestones: Traditional Detectors

传统目标检测的发展受限于两个因素:一是没有有效的图像表示(image representation)的方式,二是计算资源有限。因此传统目标检测算法大多都是基于手工设计的特征(handcrafted features),而且需要设计各种各样的加速技巧来减少对计算资源的依赖。这是一个“冷兵器的时代”,主要的milestone 如下(这一节主要参考https://zhuanlan.zhihu.com/p/112942266,一些概念的地方我会给出相应的链接):

(1)Viola Jones Detectors:最初的 slide windows算法

建议文章:

lowkeyway:(四十八)Haar级联检测器​zhuanlan.zhihu.com
b89ec26a7dfd5817531313af540f00f9.png
白裳:OpenCV AdaBoost + Haar目标检测技术内幕(上)​zhuanlan.zhihu.com
a707e0fbd9bae271c0a4c2c32c4c1076.png

18年前,P. Viola和M. Jones在没有任何约束条件(如肤色分割)的情况下首次实现了人脸的实时检测。在700MHz Pentium III CPU上,在同等的检测精度下,检测器的速度是其他算法的数十倍甚至数百倍。这种检测算法,后来被称为“维奥拉-琼斯”(VJ)检测器”,在此以作者的名字命名,以纪念他们的重大贡献。

VJ检测器采用最直接的检测方法,即,滑动窗口:查看图像中所有可能的位置和比例,看看是否有窗口包含人脸。虽然这似乎是一个非常简单的过程,但它背后的计算远远超出了计算机当时的能力。VJ检测器结合了 “ 积分图像 ”、“ 特征选择 ” 和 “ 检测级联 ” 三种重要技术,大大提高了检测速度。
积分图像(integral image):这个部分我将在下文进行描述(建议Ctrl+F),原理其实很简单,上面的链接中也有。


特征选择:作者没有使用一组手动选择的Haar基过滤器,而是使用Adaboost算法从一组巨大的随机特征池 ( 大约180k维 ) 中选择一组对人脸检测最有帮助的小特征。


检测级联:在VJ检测器中引入了一个多级检测范例 ( 又称“检测级联”,detection cascades ),通过减少对背景窗口的计算,而增加对人脸目标的计算,从而减少了计算开销。(2)HOG Detector:方向梯度直方图用于描述特征

Jackpop:【动手学计算机视觉】第八讲:传统目标检测之HOG特征​zhuanlan.zhihu.com
3e8f0f02ddcfd21fa1843f94e474ebd8.png
人工智能LeadAI:图像学习-HOG特征​zhuanlan.zhihu.com
0ee3dbff421f641e336568e6ac215c6c.png
Jackpop:【动手学计算机视觉】第七讲:传统目标检测之SIFT特征​zhuanlan.zhihu.com
85ba2de8d1e7134b0f9856d812d0a6fd.png
特征点匹配--SIFT算法详解_lhanchao的博客-CSDN博客_特征点匹配​blog.csdn.net
8e9c2e9602abfd5c1e9b3f659e6969fe.png

2006:HOG (Histogram of Oriented Gradient)特征描述算子最早在2005年被提出,它对 SIFT(scale-invariant feature transform)算法做出了重大改进。在很长一段时间内,HOG Detector 都是很多目标检测算法的重要基础,而且为众多计算机视觉的应用提供了技术支持,可以说HOG的出现,奠定了2005之后的传统目标检测的基调和方向。SIFT和HOG都值得一看,我这里简单按照自己的理解提取一下主要内容:

SIFT(Scale Invariant Feature Transform)全称尺度不变特征变换,是1999年Lowe提出的一种局部特征描述算子,在2004年得到了改善。
SIFT算子是把图像中检测到的特征点用一个128维的特征向量进行描述,因此一幅图像经过SIFT算法后表示为一个128维的特征向量集,该特征向量集具有对图像缩放,平移,旋转不变的特征,对于光照、仿射和投影变换也有一定的不变性,是一种非常优秀的局部特征描述算法。
SIFT算法的流程分别为:

  1. 尺度空间极点检测
  2. 关键点精确定位
  3. 关键点的方向确定
  4. 特征向量的生成

HOG特征的主要思想是:图像中局部目标的表象和性状能够被梯度或边缘的方向密度很好的描述本(本质:梯度的统计信息,而梯度主要存在于边缘的地方)。在实际操作中,将图像分为小的细胞单元(cells),每个细胞单元计算一个梯度方向(或边缘方向)直方图。为了对光照和阴影有更好的不变性,需要对直方图进行对比度归一化,可以通过将细胞单元组成更大的(blocks)并归一化块内的所有细胞单元来实现。我们将归一化的块描述符叫做HOG描述子。将检测窗口中的所有块的HOG描述子组合起来就形成了最终的特征向量(敲黑板,HOG本质上是一个特征提取算法,特征提取!)

HOG特征的算法可以用一下几个部分概括,

  • 梯度计算
  • 单元划分
  • 区块选择
  • 区间归一化
  • SVM分类器

(3)Deformable Part-based Model (基于可变形部件的模型,DPM)

jie luo:DPM模型​zhuanlan.zhihu.com
b532e670afd87d08a7e63fa06da80c3c.png
Jackpop:【动手学计算机视觉】第九讲:传统目标检测之DPM模型​zhuanlan.zhihu.com
1b809c28ab75a30bb90ed849bb85b097.png

Deformable part model 为可形变部件模型,简称DPM模型。这种模型非常地直观,它将目标对象建模成几个部件的组合。比如它将人类视为头部/身体/手/腿的组合。尽管看起来DPM非常简单,但是如何将这种intuition转化为数学模型,是非常地考验内功的(SVM,convex optimization,坐标下降法,梯度下降法)。


DPM模型和前文讲到的HOG整体流程非常类似,HOG采用HOG特征加linear SVM,而DPM采用多尺度特征加latent SVM,此外,DPM在特征提取方面也是在HOG特征的基础上进行稍加改进。虽然从文中看上去两者差别并不大,但是其实DPM无论是在特征提取层面还是在机器学习层面都做了巨大的改进。

2.1.2 CNN based Two-stage Detectors

在深度学习时代,目标检测可以分为两类:“ two-stage detection ” 和 “ one-stage detection ”,前者将检测框定为一个 “ 从粗到细 ” 的过程,而后者将其定义为 “ 一步完成 ”。这一部分网上资料比较多,我主要写一些个人的理解,如果有错希望及时告知,谢谢!

(1)RCNN

https://www.cnblogs.com/hellocwh/p/8431802.html​www.cnblogs.com

CNN用于目标检测任务的鼻祖,原文挺难读的,但是主体思想不难懂,他的训练和预测阶段分别如下:

训练阶段主要训练三部分:CNN最后两层的微调,Linear SVM和bounding-box regressor。主要步骤如下:

  1. 候选框(ROI)生成:使用了selective search的方法,Selective search是一种比较好的数据筛选方式,首先对图像进行过分割切成很多很多小块,然后根据小块之间的颜色直方图、梯度直方图、面积和位置等基本特征,把相近的相邻对象进行拼接,从而选出画面中有一定语义的区域。
  2. 特征提取:使用一预训练的CNN网络提取每个ROI的特征,将CNN的最后一个FN层换成我们自己的,比如样本有100类,那我们最后一层输出维度101(1类是背景)。训练使用SGD,样本组成:所有与Groud Truth框的IoU大于0.5的视作该类的正样本,每次SGD随机选择32个正样本和96个背景样本进行训练。这就是一个典型的CNN分类网络,正常训练即可,但是我们并不会全连接之后softmax输出分类,原因见https://www.zhihu.com/question/54117650
  3. 类别预测:为每一个类别训练一个linear SVM分类器,为什么不用高维,思考一下?在这里使用了 hard negative mining(难例挖掘),即着重训练那些易错的样本。参考https://www.zhihu.com/question/46292829
  4. 候选框精修(Bounding-box regression ):首先用NMS对同个类的region proposals进行合并,因为SVM会给我们的每个ROI一个分数,因此我们选取得分最高而且与ground-truth重叠度超过阈值的ROI,记为P,然后丢弃与该被选框重叠度较高的那些,对剩下的高分ROI,每个P与其对应的ground-truth组成一个样本对
    ,我们使用他们作为样本让线性回归学习一个从预测框到ground-truth的映射关系。

预测过程基本一致,对输入图片产生ROI,CNN网络特征提取,SVM类别预测,然后NMS,对选择的那个预测框使用线性变化进行精修。

(2)SPPNet

SPP-Net论文详解_Cheese的博客-CSDN博客_spp论文​blog.csdn.net
27b1eee592398486040711158d75a310.png

2014年,K. He等人提出了空间金字塔池化网络( Spatial Pyramid Pooling Networks,SPPNet)。SPPnet的贡献主要有亮点

  1. region proposal之后不对每个ROI卷积提取特征,而是先对整个图片进行特征提取,在feature map上找到每个候选框的区域(将候选框从原图映射到特征图),再对各个ROI采用SPP层池化,提取出固定长度的特征向量。相比于RCNN对每个ROI进行特征提取,这样做无疑是非常节省时间的。
  2. SPPNet的主要贡献是引入了空间金字塔池化(SPP)层,它使CNN能够生成固定长度的表示,而不需要重新缩放图像/感兴趣区域的大小,黑色图片代表卷积之后的特征图,接着我们以不同大小的块来提取特征,分别是4*4,2*2,1*1,将这三张网格放到下面这张特征图上,就可以得到16+4+1=21种不同的块(Spatial bins),我们从这21个块中,每个块提取出一个特征,这样刚好就是我们要提取的21维特征向量。这种以不同的大小格子的组合方式来池化的过程就是空间金字塔池化(SPP)。比如,要进行空间金字塔最大池化,其实就是从这21个图片块中,分别计算每个块的最大值,从而得到一个输出单元,最终得到一个21维特征的输出。

a26b5e5fd53a5851670ee7f248fda14a.png

从整体过程来看,就是如下图所示:

e279c49fffd9e4ea163748cc5ece5889.png

SPPNet虽然有效地提高了检测速度,但仍然存在一些不足:第一,训练仍然是多阶段的,第二,SPPNet只对其全连接层进行微调,而忽略了之前的所有层。次年晚些时候,Fast RCNN被提出并解决了这些问题。

(3)Fast RCNN

Fast RCNN算法详解_AI之路-CSDN博客_fast rcnn​blog.csdn.net
0e2b72a08ece845d4d915d5b526a5434.png

2015年,R. Girshick提出了Fast RCNN检测器,这是对R-CNN和SPPNet的进一步改进。Fast RCNN使能够在相同的网络配置下同时训练检测器和边界框回归器。

d3625ed53faf11e07ed9a120138110cf.png

与SPPnet相同,这里也是先进卷积产生feature map,然后每个roi进入spp层(ROI pooling layer其实就是简化版的spp)进行尺寸的休整,不同之处在于经过fc层之后,直接接两个训练器,一个softmax用于分类,另一个regressor用于bounding box的精修。因为有两个任务,所以使用了多人损失将分类和回归损失结合起来,然后对整个网络进行训练即可。训练与预测图分别如下:

27a7484143d71b6a0c3a8a3dbd03c732.png

虽然Fast-RCNN成功地融合了R-CNN和SPPNet的优点,但其检测速度仍然受到提案/建议检测的限制。然后,一个问题自然而然地出现了:“ 能用CNN模型进行region proposal吗? ” 稍后,Faster R-CNN解决了这个问题。

(4)Faster RCNN

白裳:一文读懂Faster RCNN​zhuanlan.zhihu.com
d4b09fde11d919b7b23c5bd52dc47a2b.png

2015年,S. Ren等人提出了Faster RCNN检测器,在Fast RCNN之后不久。Faster RCNN 是第一个端到端的,也是第一个接近实时的深度学习检测器。

Faster RCNN的主要贡献是引入了区域建议网络 (RPN),使几乎cost-free的region proposal成为可能。从RCNN到Faster RCNN,一个目标检测系统中的大部分独立块,如region proposal、特征提取、边界框回归等,都已经逐渐集成到一个统一的端到端学习框架中。

da25d944a32286c17f2f13cbcbb64648.png
Faster RCNN基本结构(来自原论文)

最重要的贡献无疑是提出了anchor的概念和RPN网络了

0984adbdee1b20091e0eb98be99ef22f.png

上图展示了RPN网络的具体结构。可以看到RPN网络实际分为2条线,其实RPN在原图尺度上,设置了密密麻麻的候选Anchor。然后上面那条线用cnn去判断哪些Anchor是里面有目标的positive anchor,哪些是没目标的negative anchor,所以,仅仅是个二分类而已!下面那条线对anchor进行回归,因此上线输出的是W*H*2K(K是feature map上每个pixel生成的anchor的数目),下线输出的是W*H*4K(回归有四个参数)。

这些参数进入proposal(接受了分类信息以及预测框信息)就可以生成region proposal了,然后每个region proposal进入roopooling输出统一大小的特征向量,然后就是基本的网络结构了。

(5)Feature Pyramid Networks(FPN)

Jacqueline:【目标检测】FPN(Feature Pyramid Network)​zhuanlan.zhihu.com

2017年,T.-Y.Lin等人基于Faster RCNN提出了特征金字塔网络(FPN)。在FPN之前,大多数基于深度学习的检测器只在网络的顶层进行检测。虽然CNN较深层的特征有利于分类识别,但不利于对象的定位。为此,开发了具有横向连接的自顶向下体系结构,用于在所有级别构建高级语义。由于CNN通过它的正向传播,自然形成了一个特征金字塔,FPN在检测各种尺度的目标方面显示出了巨大的进步。在基础的Faster RCNN系统中使用FPN,在MSCOCO数据集上实现了最先进的单模型检测结果,没有任何附加条件(COCO mAP@.5=59.1%,COCO mAP@[.5,.95]= 36.2%)。FPN现在已经成为许多最新探测器的基本组成部分。

91bd79d9891c352876bf7caeabaf8624.png

建议看一下FPN在RPN网络和Fast-RCNN上的实现,还蛮有意思的,总之就是将原有网络的feature map变成了多个,然后根据不同的模型采取不同的处理方法。比如对于RPN,我们使用RPN网络依次处理产生的所有特征层。

69cc9dbdddbf01789f1564608693a243.png

而对于Fast-RCNN,它的feature map

2c319d12a9dc70befa2adb4b1809a31d.png

2.1.3 . CNN based One-stage Detectors

(1)You Only Look Once (YOLO)

YOLO(You Only Look Once)算法详解​blog.csdn.net
0e2b72a08ece845d4d915d5b526a5434.png
小小将:目标检测|YOLO原理与实现​zhuanlan.zhihu.com
ef657f4211ad5f98856b159fa4061b37.png

YOLO由R. Joseph等人于2015年提出。它是深度学习时代[20]的第一个单级检测器。YOLO非常快:YOLO的一个快速版本运行速度为155fps, VOC07 mAP=52.7%,而它的增强版本运行速度为45fps, VOC07 mAP=63.4%, VOC12 mAP=57.9%。YOLO是 “ You Only Look Once ” 的缩写。我简单说一说对他的理解

YOLO将object detection看作是一个回归问题(这大概是因为他的误差函数是平方和误差而非分类问题中的交叉熵之类的),他有几个重要的contribution:

  • 基于全局图像预测而不是region proposal或者slide window,因此对背景的检测性能远远超过前两种方法(context information比较全面)。
  • 快!泛化能力强

训练过程主要如下:

2c0614e6480cc7f259f16b0652e87e82.png

输入N个图像,每个图像包含M个object,每个object包含4个坐标(x,y,w,h)和1个label。然后通过网络得到7*7*30大小的三维矩阵。每个1*30的向量前5个元素表示第一个bounding box的4个坐标和1个confidence,第6到10元素表示第二个bounding box的4个坐标和1个confidence。最后20个表示这个grid cell所属类别。注意这30个都是预测的结果。然后就可以计算损失函数的第一、二 、五行。至于第二三行,confidence可以根据ground truth和预测的bounding box计算出的IOU和是否有object的0,1值相乘得到。真实的confidence是0或1值,即有object则为1,没有object则为0。 这样就能计算出loss function的值了。

8e94498a783ef1bccb3dcc6c91764096.png
YOLO损失函数

测试的时候:输入一张图像,跑到网络的末端得到7*7*30的三维矩阵,这里虽然没有计算IOU,但是由训练好的权重已经直接计算出了bounding box的confidence。然后再跟预测的类别概率相乘就得到每个bounding box属于哪一类的概率。

(2)Single Shot MultiBox Detector (SSD)

小小将:目标检测|SSD原理与实现​zhuanlan.zhihu.com
8c818cfc03d13738d1895d8b8dfc1f4a.png

相比Yolo,SSD采用CNN来直接进行检测,而不是像Yolo那样在全连接层之后做检测。其实采用卷积直接做检测只是SSD相比Yolo的其中一个不同点,另外还有两个重要的改变,

一是SSD提取了不同尺度的特征图来做检测,大尺度特征图(较靠前的特征图)可以用来检测小物体,而小尺度特征图(较靠后的特征图)用来检测大物体;

二是SSD采用了不同尺度和长宽比的先验框(Prior boxes, Default boxes,在Faster R-CNN中叫做锚,Anchors)。Yolo算法缺点是难以检测小目标,而且定位不准,但是这几点重要改进使得SSD在一定程度上克服这些缺点。

(3)RetainNet

我要鼓励娜扎:RetainNet​zhuanlan.zhihu.com

单级检测器速度快、结构简单,但多年来一直落后于两级检测器的精度(原因在于one-stage是在可能存在物体的位置进行密集采样的,造成了object与background样本的极度不均匀)。为此,在RetinaNet中引入了一个新的损失函数 “ focal loss”,通过对标准交叉熵损失的重构,使检测器在训练过程中更加关注难分类的样本。焦损耗使得单级检测器在保持很高的检测速度的同时,可以达到与两级检测器相当的精度。(COCO mAP@.5=59.1%,mAP@[.5, .95]=39.1% )。

  • 论文主要提出了一种新的loss,称为focal loss,解决了正负样本数目差距过大以及区分了样本的难易程度两个问题(也不能说解决了吧,找到了很好的优化方案)
  • 基于FPN提出了一个新的one stage目标检测框架,称为RetinaNet,当时在精度和速度方面达到了最好的平衡。

着重理解一下他提出的facal loss

842ed755bba7d40e54e651950ebf4eaa.png

通过

抑制正负样本的数量失衡,通过
控制区分难易样本带来的损失,比如
接近1,说明很好进行分类,那么这一项接近0,

顺便看一眼网络结构:

ac158bd0bf9f17aaf019705f1ca7e7b9.png

一种使用Focal Loss的全新结构RetinaNet,使用ResNet+FPN作为backbone,再利用一阶段的目标识别法+Focal Loss。这个结构在COCO数据集上达到了39.1的mAP。

这个结构要注意几点:

1、训练时FPN每一级的所有example都被用于计算Focal Loss,loss值加到一起用来训练;

2、测试时FPN每一级只选取score最大的1000个example来做nms;

3、整个结构不同层的head部分(c和d部分)共享参数,但分类和回归分支间的参数不共享;

4、分类分支的最后一级卷积的bias初始化成前面提到的

;

2.2 Object Detection Datasets and Metrics

建立具有更少的偏置的更大的数据集,是开发先进的计算机视觉算法的关键。在目标检测方面,在过去10年中,已经发布了许多著名的数据集和基准测试,包括PASCAL VOC挑战的数据集(例如,VOC2007, VOC2012)、ImageNet大尺度视觉识别挑战(例如,ILSVRC2014)、MS-COCO检测挑战等。下表1给出了这些数据集的统计数据。

56cc675ff1578445ae8e58437293a817.png

下图显示了这些数据集的一些图像示例:

43210d3db10407be6ddba4542f3fa3b3.png
(a)VOC,(b)ILSVRC,(c)COCO,(d)Open Images

具体介绍如下:

(1)Pascal VOC

PASCAL可视化对象类(Visual Object Classes,VOC)挑战(2005-2012)是早期计算机视觉界最重要的比赛之一。PASCAL VOC中包含多种任务,包括图像分类、目标检测、语义分割和动作检测。两种版本的Pascal-VOC主要用于对象检测:VOC07和VOC12,前者由5k tr. images + 12k annotated objects组成,后者由11k tr. images + 27k annotated objects组成。这两个数据集中注释了生活中常见的20类对象(Person: person; Animal: bird, cat, cow, dog, horse, sheep; Vehicle: airplane, bicycle, boat, bus, car, motor-bike, train; Indoor: bottle, chair, dining table, potted plant, sofa, tv/monitor)。近年来,随着ILSVRC、MS-COCO等大型数据集的发布,VOC逐渐淡出人们的视野,成为大多数新型检测器的试验台。

(2)ILSVRC

ImageNet大规模视觉识别挑战(Large Scale Visual Recognition Challenge,ILSVRC)推动了通用目标检测技术的发展。ILSVRC从2010年到2017年每年举办一次。它包含一个使用ImageNet图像的检测挑战。ILSVRC检测数据集包含200类视觉对象。它的图像/对象实例的数量比VOC大两个数量级。例如ILSVRC-14包含517k图像和534k带注释的对象。

(3)MS-COCO

MS-COCO是目前最具挑战性的目标检测数据集。自2015年以来一直保持一年一度的基于MS-COCO数据集的比赛。它的对象类别比ILSVRC少,但是对象实例多。例如,MS-COCO-17包含来自80个类别的164k图像和897k带注释的对象。与VOC和ILSVRC相比,MS-COCO最大的进步是除了边框标注外,每个对象都进一步使用实例分割进行标记,以帮助精确定位。此外,MS-COCO包含更多的小对象 ( 其面积小于图像的1% ) 和比VOC和ILSVRC更密集的定位对象。所有这些特性使得MSCOCO中的对象分布更接近真实世界。就像当时的ImageNet一样,MS-COCO已经成为对象检测社区的实际标准。

(4)Open Images

继MS-COCO之后,开放图像检测(OID)技术在2018年迎来了前所未有的挑战。在开放图像中有两个任务:1) 标准目标检测,2) 视觉关系检测,检测特定关系中成对的目标。对于目标检测任务,数据集由1,910k张图像和15,440k个带注释的边界框组成,这些边界框位于600个对象类别上。

2.2.1 Metrics

我们如何评估目标探测器的有效性? 这个问题甚至可能在不同的时间有不同的答案。

FPPW (False Positive per Window)

  • 基本含义:给定一定数目N的负样本图像,分类器将负样本判定为“正”的次数FP,其比率FP/N即为FPPW。
  • FPPW意义与ROC中的假阳率相同。FPPW中,一张图就是一个样本。

FPPI (False Positive per Image)

  • 基本含义:给定一定数目N的样本集,内含N张图像,每张图像内包含或不包含检测目标(每张图像均需要标注:(1)包含目标的个数;(2)目标的准确位置L)。
    然后在每张图像上运行分类器,检测目标并得到位置p。然后,检查每张图像内的检测结果是否“击中”标定的目标:
    a. 若图像内无目标,而分类器给出了n个“目标”检测结果,那么False Positive 次数 +n;
    b. 若图像内有目标,则判断p是否击中L(判断标准主要看p与L的重叠率)。若判断未击中,则False Positive 次数 +1。
    最后 FPPI = (False Positive 次数)/N

FPPI 相比于FPPW来说,更接近于分类器的实际应用情况

AP and MAP

希葛格的韩少君:目标检测中的AP,mAP​zhuanlan.zhihu.com
f3bec4426a78de9c0718f5f866b4a335.png

2.3 Technical Evolution in Object Detection

文章2.3这一部分的内容我兴趣不大,就不细写了。主要包含了object detection早期的一个发展状况。多尺度检测技术(multi-scale detection)的一个发展,2014年之前主要使用feature pyramids+sliding window,2010-2015主要是object proposal用的比较多,13-16又涌现出了用网络直接回归比如YOLO,15年之后到现在主要是用anchor box的手段,传统的基于anchor box的工作他的损失函数一般是一个多目标函数,即以交叉熵函数为主的分类损失+回归损失,一个general 的形式:

8217ea2cbbc8af65ed170be543a84325.png

这里

分别是预测框和ground truth,同理p和p*分别是预测的概率向量和真实的概率向量。需要注意的是
这个函数,限制了只有包含object的box才会计算位置上的损失。

2.3.4 Technical Evolution of Context Priming

我们要知道,物体总是被环境所包围的,物体周围的环境有着丰富的上下文信息,这些信息可以帮助我们进行感知。利用上下文促进检测质量的方法主要有三种,

  1. 利用局部的上下文信息:
  2. 利用全局的上下文信息:
  3. 上下文交互:

5939e4e482c41cf94a5e8ff720d98059.png

2.3.5 Technical Evolution of Non-Maximum Suppression

NMS是object dectection的一种重要工具,出发点在于:我们有大量的candidate bounding box,而相近的bounding box拥有类似的性能,如果我们可以合理的去除掉其中一部分,并且不影响最终的性能,那就计算资源而言无疑是一个巨大的提升。进行NMS目前主要有三种方式greedy selection, BB aggregation和learning

Greedy Selection

Greedy是最常用的方法,对一系列重叠在一起的bounding box,我们贪心的进行如下过程:选择score最大的,然后和他相邻的IOU>0.5(阈值)的都discard,重复上述过程即可。

Greedy实现很方便,但是他也存在很多问题

  1. 得分最高的可能并不是最合适的。
  2. 他会抑制周围的物体。
  3. NMS并不能抑制false positive的bounding box

ac3f3f5a2b2dfe134a9b213970ce7d98.png

BB aggregation

这是一种基于组合和聚类的方法,将多个重叠的bounding box聚合成一个最终的结果,这样做的好处是充分考虑了目标间的关系和他们的空间分布。比如VJ和OverFeat都使用了这个方法。

Learning to NMS

这类方法的主要思想是将NMS看作一个filter,以重新对所有原始检测进行评分,并以端到端方式将NMS作为网络的一部分进行培训。与传统的手工NMS方法相比,这些方法在提高遮挡和密集对象检测方面显示了良好的效果。

2.3.6 Technical Evolution of Hard Negative Mining

c5ee66d64cda0fc930813acfd572977c.png

HNM主要是为了处理正负样本数目差距过大的问题。

Bootstrap

文兄:【机器学习】Bootstrap详解​zhuanlan.zhihu.com
96d908d4d4f940db7344f60730805333.png

目标检测中的Bootstrap是指在训练过程中从一小部分背景样本开始训练,然后迭代地添加新的未分类背景的一组训练技术。在早期的object detector中,bootstrap最初被引入的目的是减少在数百万个背景样本上的训练计算量。后来它成为DPM和HOG检测器的标准训练技术,用于解决数据不平衡问题。

HNM in deep learning based detectors

随着算力的增长,bootstrap其实是被遗弃了一段时间,为了克服数据的imbalance,很多算法只是简单的balance一下正负样本对损失的权重(YOLO,RCNN),但是这个方法后来被发现不能完全解决imbalance的问题。2016年之后,bootstrap又被重新提出,在SSD或者OHEM中,只有比较少的一部分样本的梯度会被反向传播,这些样本都是loss很大的样本,即难以区分的样本,而简单样本的损失就忽略不计。在RefineDet中,一个“锚优化模块”被设计用来过滤容易的样本。另一种改进是设计新的损失函数,通过重塑标准交叉熵损失,使其将更多的注意力放在硬的、错误分类的例子上.

其中比较出名的几篇文章分别如下:

  • facol loss也就是我们上面说过的retainNet,通过设计损失函数高效地解决了正负样本imblance和寻找hard negative样本的问题。
  • SSD-Single Shot MultiBox Detector-上文也讲过,它是利用了如下损失函数,
    表示第i个bounding box与第j个ground truth匹配,并且ground truth的类别为
    ,从而保证了只有正样本的位置误差会进行计算。

b2dbd2a25f3210c5f2ef7f0078b7e488.png
  • OHEM:Online Hard Example Mining
醒了么:OHEM论文解读​zhuanlan.zhihu.com
fedf7c6be89cd6355d82ffb863473890.png

很有意思的一篇工作,网络架构是基于Fast-RCNN的,架构有两个相同 的RoI网络,不同的是其中一个只可读,另一个可读可写。我们看到(a) 是只可读的,只对所有RoI做前向计算,所以只需分配内存给前向计算 操作,(b)既可读也可写,对被选择的hard RoIs不仅做前向计算也做反向 传播计算。

对于一次SGD迭代,计算过程如下:先计算出特征图,可读RoI网络对所 有RoI执行前向计算并计算每个RoI的损失,然后选择hard RoIs。把这 些hard RoIs输入到可读可写的RoI网络中执行前向前向计算和反向传播更新网络,并把可读可写的RoI网络的参数赋值给只可读的网络,一次 迭代就完成了。

9d3094200123ca0fe8ef69ef7c50188c.png
  • RefineNet
胡孟:RefineDet(3)_总结_CVPR2018​zhuanlan.zhihu.com
d7f773644394ac8b501e54cc365c0d97.png

60465e811160739dddc380dd3373a748.png
图1:RefineDet 网络结构,为了可以更好的可视化,我们仅仅展示了检测所需要使用的层。灰绿色菱形代表和不同的特征层相联系的经过细化的 anchors。星形代表已定义的 anchors 的中心,这些 anchors在图像上并不按照一定规则铺设。

3 SPEED-UP OF DETECTION

目标检测算法的加速一直以来都是一个非常重要而又充满挑战的话题,过去20年发展出了各式各样的加速方法,这些方法可以大致分为三类

  1. speed up of detection pipeline
  2. speed up of detection engine
  3. speed up of numerical computation

将这些英文直接翻译让我感觉有点不合适,索性不翻译了,了解了内容就知道意思了

3.1 Feature Map Shared Computation

在目标检测器的不同计算阶段中,特征提取通常主导计算量。对于基于滑动窗口的检测器,计算冗余从position和scale两个方面入手,位置冗余是由于相邻尺度之间的重叠引起的,而尺度冗余是由于相邻尺度之间的特征相关性引起的。

3.1.1 Spatial Computational Redundancy and Speed Up

简单而言就是只计算feature map一次,像RCNN是对每个ROI都通过卷积网络计算feature map,而后来的fast,faster都是原图经过CNN网络生成feature map,不会进行重复计算。这样做的缺陷也很明显,因为图片resolution将会受到卷积网络的影响,很可能忽略掉其中一些小物体。

3.1.2 Scale Computational Redundancy and Speed Up

建立检测器金字塔是一个减少尺度冗余不错的方法,因为我们只需要在多个不同的feature map上进行计算即可,避免了对原图或者feature map的调整。

3.2 Speed up of Classifiers

传统的基于sliding window的检测器如HOG,DPM,都喜欢在最后用linear classifier来进行图片的分类,这是因为线性检测器的计算成本低,如果使用 kernel SVM,他并没有一个固定的时间复杂度,当我们训练集很大的适合,detector将变得尤其的慢。

在目标检测中,有很多方法可以提kernelized classifiers的速度,其中模型近似是最常用的。由于经典核SVM的决策边界只能由一小组训练样本(支持向量)来确定,因此推理阶段的计算复杂度将与支持向量的数量成正比。Reduced Set Vectors 是kernel SVM的一种近似方法,其目的是利用少量的合成向量获得等价的决策边界。另一种加速核kernel SVM检测目标的方法是将其决策边界近似为分段线性形式,从而获得恒定的推理时间。核方法也可以用稀疏编码方法来加速。

3.3 Cascaded Detection

级联检测需要一个粗到细的检测原理:用简单的计算过滤掉大多数简单的背景窗口,然后用复杂的窗口处理那些困难的窗口。VJ检测器是级联检测的代表。此后,许多经典的对象检测器如HOG检测器和DPM都使用该技术进行了加速

最近几年cascaded detection用的也很多,特别是一些“small objects in large scenes”的任务,像face detection,pedestrian detection等。

3.4 Network Pruning and Quantifification

3.4.1 Network Pruning

近年来的网络剪枝方法通常经过迭代训练和剪枝过程,即剪枝过程。,即在每一阶段训练后只去除一小部分不重要的权重,并重复这些操作。传统的网络剪枝只是去除不重要的权值,这可能会导致卷积滤波器中出现一些稀疏的连通性模式,因此不能直接应用于CNN模型的压缩。解决这个问题的一个简单方法是去除整个过滤器,而不是独立权重。

3.4.2 Network Quantification

最近关于网络量化的研究主要集中在网络二值化上,它的目的是通过量化它的激活或二进制变量的权重(比如0/1)来加速网络,这样浮点操作就可以被转换为和,或,而不是逻辑操作。网络二值化可以显著加快计算速度,减少网络存储,从而更容易部署到移动设备上。实现上述思想的一种可能方法是用最小二乘法用二元变量逼近卷积。使用多个二进制卷积的线性组合可以获得更精确的近似。此外,一些研究者进一步开发了用于二值化计算的GPU加速库,得到了更显著的加速结果。

3.4.3 Network Distillation

网络蒸馏是将一个大网络(“teacher network”)的知识压缩成一个小网络(“student network”)的一般框架。近年来,该思想已被应用于目标检测的加速中。这种想法的一种直接方法是使用教师网来指导(轻量级的)学生网的训练,这样学生网就可以用于加速检测。另一种方法是对候选区域进行变换,使学生网与教师网之间的特征距离最小。这种方法使检测模型速度提高了2倍,同时达到了相似的精度。

3.5 Lightweight Network Design

最后一种加速基于CNN的检测器的方法是直接设计一个轻量级的网络,而不是使用现有的检测引擎。研究人员长期以来一直在探索网络的正确配置,以便在有限的时间成本下获得准确性。除了一些一般的设计原则,如更少的通道和更多的层,其他一些方法近年来被提出:1)分解卷积,2)群卷积,3)深度可分离卷积,4)瓶颈设计,5)网络结构搜索。

19b1eb3641041c895cf2520b07040d39.png

3.5.1 Factorizing Convolutions

这个设计其实在之前的网络中是有过使用的,其实

的卷积实现的效果等价于三个
的卷积,他们的感受野相同,而且多个小卷积还引入了更加复杂的非线性变化,更加高效。VGG16就用了这种方法。

3.5.2 Group Convolution

群卷积旨在减少参数的数量在一个卷积层特性除以渠道分成不同的组,然后缠绕在每一组独立,如图所示(d)。如果我们平分特性渠道分成m组,而不改变其他配置,卷积的计算复杂性理论将减少到1 / m。

3.5.3 Depth-wise Separable Convolution

图(e)所示的深度可分离卷积是一种最近流行的构建轻量级卷积网络的方法。当组数与信道数相等时,可以看作是组卷积的一种特殊情况

3.5.4 Bottle-neck Design

与前一层相比,神经网络的瓶颈层包含的节点较少。它可以用于学习降维输入的有效数据编码,这在深度自动编码器中被广泛使用。近年来,瓶颈设计被广泛应用于轻量级网络的设计。在这些方法中,一种常见的方法是从检测管道开始压缩检测器的输入层来减少计算量]。另一种方法是压缩检测引擎的输出,使feature map变薄,从而使其在后续检测阶段更加高效,有点像我们用

的卷积核先进行降维再进行升维一样。

3.5.5 Neural Architecture Search

最近,人们对通过神经架构搜索(NAS)自动设计网络架构产生了极大的兴趣,而不是依赖于专家的经验和知识。NAS已被应用于大规模图像分类、目标检测和图像分割等任务。NAS最近在设计轻量级网络方面也显示出了很好的结果,其中在搜索过程中同时考虑了预测精度和计算复杂度的约束。

3.6 Numerical Acceleration

这一部分涉及的数学内容比较多,静下心来推导一下比较好,主要包含了四种在数值计算方面的加速手段。

3.6.1 Speed Up with Integral Image

积分图像是图像处理中的一种重要方法。它有助于快速计算图像子区域的总和。积分图像的本质是信号处理中卷积的积分微分可分性,这个方法其实很简单,打过ACM的应该不陌生,在CNN中其实就是一个二维的树状数组用于求二维矩阵任意一个方块的和

https://cnbluegeek.github.io/2020/04/21/BG92-leetcode-q1314/​cnbluegeek.github.io

3.6.2 Speed Up in Frequency Domain

这一部分和无线通信的知识点连接了起来,频域加速卷积的理论基础是信号处理中的卷积定理,即在适当的条件下,两个信号卷积的傅里叶变换是它们傅里叶空间中的点积

b2d7fe4d3764d5344a7bfffa5080deff.png

这里

即傅里叶变换,
是逆傅里叶变换,
是输入图像和filter,
是卷积运算,
是point wise product,上述的计算过程,我们很容易的就可以用FFT或者IFFT进行一个加速,下图是一个例子。

d34f282b44011164bbb3166a43bba4f0.png

3.6.3 Vector Quantization

矢量量化(VQ)是信号处理中的一种经典的量化方法,它的目的是通过一个小的原型向量集来近似大组数据的分布。它可以用于数据压缩和加速目标检测中的内积运算

3.6.4 Reduced Rank Approximation

在深度网络中,FCN计算本质上是两个矩阵的乘法。当参数矩阵W较大时,检测器的计算量较大。例如,在fast-RCNN中,近一半的前向传递时间花在计算全连接层上。Reduced Rank Approximation是一种加速矩阵乘法的方法。目的是对矩阵W进行低秩分解

6f688fe0f6769e9701737c5b6e5ed7c2.png

其实是用了截断SVD的方法,我就不翻译了,看看即可

9404a1a3beb9f3818b03dc31f9cf6a89.png

4 RECENT ADVANCES IN OBJECT DETECTION

这一节基本上回顾了16-19三年来SOTA的方法。

4.1 Detection with Better Engines

detector的精度很大程度上决定于他的特征采集网络,比如resnet,vgg等,这些网络被称之为backbone network,各个阶段SOTA的骨干网主要有以下几个:

  1. AlexNet
  2. VGG
  3. GoogleNet
  4. ResNet
  5. DenseNet
  6. SENet

之前写过一篇这几个CNN网络类似的介绍

yearn:你应该知道的几种CNN网络与实现​zhuanlan.zhihu.com
d112962e0dcf8685aa30f2ebbb421b36.png

4.2 Detection with Better Features

特征表示的质量是目标检测的关键。近年来许多研究者都想要提高图片特征的质量,主要有两种方法:

  1. 特征融合 feature fusion
  2. 学习高分辨率高感受野的特征

4.2.1 Why Feature Fusion is Important?

特征表达中有两个重要性质,不变性与等变性(Invariance and equivariance),分类的目的是学习高级语义信息,因此需要不变的特征表示。目标定位需要等变表示,因为它的目的是区分位置和比例的变化。由于目标检测由目标识别和定位两个子任务组成,因此同时学习不变性和等变形是检测的关键。

CNN网络越深层的特征具有更强的不变性,更弱的等变形,因此深层网络往往导致定位的不准确,而浅层网络语义信息不够丰富,深层和浅层的特征融合有助于解决这两个问题。

4.2.2 Feature Fusion in Different Ways

特征融合的方法很多。这里从两个方面介绍一些方法:1)处理流程和2)处理方式。

ef402dbe62b23109c253f6bda0a2f5eb.png
  • Processing Flow

这里主要分为两类,自底向上和自顶向下。不同层的feature map可能大小不太一样,因此这里会涉及一些下采样,上采样的方法,也会涉及一些插值的技巧

  • Element-wise operation

主要有三种操作方式,对应元素求和,对应元素求积,连接,求和是最常用的一种方式。求积有个好处是它可以抑制或者突出特定区域的的特征,对小型的目标检测更加有利。特征连接的好处在于它可以融合不同区域的上下文信息,他的坏处是增加了内存。

4.2.3 Learning High Resolution Features with Large Receptive Fields

感受野和feature map的分辨率是CNN网络的两个重要特征,大的感受野能获取到丰富的上下文信息,小的感受野则比较关注细节。而小的分辨率使得小物品的识别更加hard,提高特征分辨率最直接的方法是去除池化层或降低卷积降采样率。但这又带来了一个新的问题,即由于输出步幅的减小,接受野会变得太小。换句话说,这将缩小探测器的视野,并可能导致漏检一些大的目标。解决这一问题饿一个新兴的方法即dilated convolution

4.3 Beyond Sliding Window

虽然目标检测已经从使用手工特征发展到使用深度神经网络,但大多数网络都是基于sliding window的,最近有一些网络跳出了这个paradigm

  • Detection as sub-region search

子区域搜索提供了一种新的检测方法。一种最近的方法是将检测看作是从初始网格开始,最终收敛到所需的地面真值盒的路径规划过程。另一种方法是将检测视为迭代更新过程,对预测的边界框的角进行细化。这个方法的几个代表作品分别如下:

TeddyZhang:目标检测:Grid R-CNN Plus(2019)​zhuanlan.zhihu.com
527c52bc52440280586040953a0c1197.png

AZ-Net:将小物体所在的区域不断放大然后进行识别,类似的工作也挺多的,下面是大会上的演讲

https://www.youtube.com/watch?v=aToPrMdLX0g​www.youtube.com
  • Detection as key points localization

关键点定位是一项重要的计算机视觉任务,具有广泛的应用,如面部表情识别、人体姿态识别(pose估计)等。由于图像中的任何一个目标都可以通过ground truth box的左上角和右下角唯一地确定,因此可以将检测任务等价地框定为一对关键点定位问题。这个想法最近的一个应用是cornernet。该方法的优点是可以在语义分割框架下实现,不需要设计多尺度的anchor。

陈泰红:CornerNet:目标检测算法新思路​zhuanlan.zhihu.com

4.4 Improvements of Localization

定位精度的提升一般有两种方法:一种是bounding box的精修,一种是设计新的loss function。

4.4.1 Bounding Box Refinement

尽管bounding box regression已经集成到大多数现代对象检测器中,但是必然会有些物品无法被提前设置的anchor捕获,这就会造成这些位置上的不精确。为此,最近引入了迭代边界框细化,迭代地将检测结果输入BB回归器,直到预测收敛到正确的位置和大小。但也有研究者认为该方法不能保证定位精度的单调性,即BB回归多次使用会使定位退化。

使用这种方法比较出名的工作即Cascade R-CNN,简单来说就是使用三个级联的refinement网络,并不断调高IOU阈值,

扬之水:目标检测论文阅读:Cascade R-CNN: Delving into High Quality Object Detection​zhuanlan.zhihu.com

4.4.2 Improving Loss Functions for Accurate Localization

在大多数现代探测器中,目标定位被认为是一个坐标回归问题。然而,这个paradigm有两个缺点。首先,回归损失函数不对应最终的定位评价。例如,我们不能保证一个较低的回归误差总是会产生一个较高的IoU预测,特别是当对象具有非常大的长宽比时。其次,传统的边界盒回归方法不能提供定位的置信度。当多个BB相互重叠时,可能会导致NMS失效。

通过设计新的损耗函数可以缓解上述问题。最直观的设计是直接使用IoU作为局部化损失函数。还有一些研究者进一步提出了iou引导的NMS,以提高训练和检测阶段的定位能力。此外,一些研究者也尝试在概率推理框架下改进定位。与以往直接预测盒坐标的方法不同,该方法预测了一个边界盒位置的概率分布。

4.5 Learning with Segmentation

目标检测和语义分割是计算机视觉中的重要任务。最近的研究表明,通过学习语义分割可以提高目标检测

4.5.1 Why Segmentation Improves Detection?

主要有2个原因

  • 计算机视觉中物体被区分的一个重要依据是被识别物体通常有一个封闭而且well-defined的边界框,比如人,猫的身体曲线等。而segmentation的主要任务之一就是学习物体的boundary。
  • 日常生活中的物体被不同的背景所包围,如天空、水、草等,这些元素构成了一个物体的上下文。结合上下文的语义分割将有助于目标检测,例如,飞机更有可能出现在天空而不是水

4.5.2 How Segmentation Improves Detection?

主要有两种手段利用segmentation来提升目标检测

  • 将segmentation network视作一个特征提取器然后将它融入我们的backbone作为额外的特征。这样做很容易实现但是额外增加很多计算量。
  • 另一种方法是在原始检测框架的基础上引入一个额外的branch,用多任务丢失函数(分割loss+检测loss)来训练该模型。在大多数情况下,分割的branch将在inference阶段被删除。优点是检测速度不会受到影响,缺点是训练需要像素级的图像标注。

4.6.2 Scale Robust Detection

如何对各种尺度的物体都能进行很好的检测?

621e73d91fcadbebf77eab8ebb59d5e6.png
  • Scale adaptive training

多数现代探测器将输入图像重新缩放到一个固定的尺寸,并将所有尺度下的物体损失反向传播,但是,这样做的一个缺点是会有一个尺度不平衡的问题。在检测过程中建立一个图像金字塔可以缓解这个问题,但不能从根本上解决问题。最近的改进是尺度归一化的图像金字塔,并不是所有的尺度都会反向传播损失,而是选择一些固定范围内的scale进行反向传播。

Scale adaptive detection

自适应的放大小物品的大小

5 APPLICATIONS

这一部分主要是应用的内容,权当扩展视野即可

包括行人检测、人脸检测、文本检测、交通标志/灯光检测、遥感目标检测等。

5.1 Pedestrian Detection

行人检测作为一种重要的目标检测应用,在自动驾驶、视频监控、刑事侦查等领域得到了广泛的关注

5.1.1 Diffificulties and Challenges

fb3b013b247cbe307d337724c418fa0f.png
  • Traditional pedestrian detection methods

由于计算资源的限制,Haar小波特征在早期行人检测中得到了广泛的应用。为了提高对闭塞行人的检测,当时一个流行的想法是通过组件检测,可以将检测看作是对不同人体部位(如头、腿和手臂)进行单独训练的多部分检测器的集合。除了特征表示之外,还考虑了一些领域知识,如外观一致性和形状对称和立体信息。

  • Deep learning based pedestrian detection methods

改进小型行人检测:虽然fast/faster-R-CNN等深度学习对象检测器在一般目标检测方面表现出了最先进的性能,但由于其卷积特征的分辨率较低,它们在检测小型行人方面的成功率有限。针对这一问题的一些近期解决方案包括特征融合,引入高分辨率的手工制作特征,以及多分辨率的综合检测结果。

对于稠密和闭塞行人检测的改进:正如我们在2.3.2节中提到的,CNN的更深层次的特征具有更丰富的语义,但对于稠密物体的检测并不有效。为此,一些研究者考虑到目标的吸引和周围其他物体的排斥,设计了新的损失函数。目标遮挡是行人密集时经常出现的另一个问题。部分检测器集合和注意机制是改善行人遮挡检测最常见的方法。

5.2 Face Detection

5.2.1 Diffificulties and Challenges

79551247bba5e3463f3d495fe33c6110.png

Early time’s face detection (before 2001)

早期的人脸检测算法可以分为三大类:1)基于规则的检测方法。这组方法对典型脸的构成要素的人类知识进行编码,并捕捉面部元素之间的关系。2)基于子空间分析的方法。这组方法在底层线性子空间中分析人脸分布。特征面就是这组方法的代表。3)基于学习的方法:将人脸检测帧为滑动窗口+二分类(目标vs背景)过程。这类模型常用的有神经网络模型和支持向量机模型。

  • Traditional face detection (2000-2015)

这一时期有两组人脸检测器。第一组方法是基于提升决策树构建的。这些方法计算简单,但在复杂场景下检测精度较低。第二组基于早期卷积神经网络,使用特征的共享计算来加速检测

  • Deep learning based face detection (after 2015)

深度学习时代,大多数人脸检测算法都遵循了一般物体检测器的检测思想,如Faster RCNN和SSD。

提高人脸检测速度:级联检测(详见3.3节)是深度学习时代提高人脸检测速度最常用的方法,另一种加速方法是预测图像中人脸的尺度分布,然后在选定的尺度上进行检测

改进多位姿和遮挡人脸检测:通过估计标定参数或通过多个检测阶段进行渐进标定,人脸标定的思想被用于改进多位姿人脸检测。为了改善遮挡人脸检测,最近提出了两种方法。第一种是加入注意机制,突出底层人脸目标的特征。第二种是基于零件的检测,它继承了DPM的思想。

为了改进多尺度人脸检测:最近的多尺度人脸检测研究使用了与一般目标检测相似的检测策略,包括多尺度特征融合和多分辨率检测(详见2.3.2和4.2.2节)。

5.3 Text Detection

最基本的应用即某个文字是否出现在了某个图片里。如果有,进行定位和识别。文本检测具有非常广泛的应用。它帮助视障人士阅读路标和货币。在地理信息系统中,门牌号和路牌的检测和识别使得建立数字地图变得更加容易

5.3.1 Diffificulties and Challenges

99124ff43bad986ce34c280825d92bf9.png

5.3.2 Literature Review

文本检测由两个相关但相对独立的任务组成:1)文本定位和2)文本识别。现有的文本检测方法可以分为两类:逐级检测和综合检测

  • Step-wise detection vs integrated detection

步进检测方法由字符分割、候选区域验证、字符分组和单词识别等一系列处理步骤组成。这组方法的优点是在粗分割步骤中可以过滤大部分背景,大大减少了后续处理的计算量。缺点是需要仔细设置所有步骤的参数,错误会在每一个步骤中出现并累积。

集成方法将文本检测作为一个联合概率推理问题,在统一框架下处理字符定位、分组和识别步骤。这些方法的优点是避免了累积错误,易于集成语言模型。缺点是,在考虑大量字符类和候选窗口时,推理的计算成本会很高

  • Traditional methods vs deep learning methods

大多数传统的文本检测方法都是以无监督的方式生成候选文本,其中常用的技术包括最大稳定极值区域(Maximally Stable Extremal region, MSER)分割[341]和形态学滤波[346]。这些方法还考虑了一些领域的知识,如文本的对称性和笔画的结构

近年来,文本定位问题的研究越来越受到重视,而非识别问题。最近提出了两组方法。第一组方法将文本检测作为一般目标检测的一个特例[251,348 357]。这些方法都有统一的检测框架,但对于有方向和大纵横比的文本检测效果较差。第二组方法将文本检测框架作为图像分割问题[336,337,358 360]。这些方法的优点是对文本的形状和方向没有特殊的限制,缺点是不容易根据分割结果区分排列密集的文本行。近年来基于深度学习的文本检测方法对上述问题提出了一些解决方案

对于文本旋转和透视变化:最常见的解决方案是在锚框和RoI池化层中引入额外的参数,这些参数与旋转和透视变化相关[351 353,355 357]。

改进密集文本检测:基于分割的方法在密集文本检测方面表现出更大的优势。为了区分相邻的文本行,最近提出了两组解决方案。第一种是线段和链接,线段指字符热图,链接指相邻的两个线段之间的连接,表明它们属于同一单词或同一文本行[336,358]。第二组是引入一个额外的角/边界检测任务来帮助分离排列密集的文本,其中一组角或一个封闭边界对应于单独的文本行。

为了改进破碎和模糊文本检测:一个处理破碎和模糊文本的最新想法是使用词级识别[77,361]和句子级识别[335]。对于不同字体的文本,最有效的方法是利用合成样本进行训练

5.4 Traffific Sign and Traffific Light Detection

随着自动驾驶技术的发展,交通标志和交通信号灯的自动检测近年来引起了人们的极大关注。

5.4.1 Diffificulties and Challenges

0df2675ea9fd9fb35441fdcb0d962307.png

5.4.2 Literature Review

现有的交通标志/信号灯检测方法可以分为两类:1)传统的检测方法和2)基于深度学习的检测方法。-

  • Traditional detection methods

基于视觉的交通标志/灯光检测的研究可以追溯到20年前[362,363]。由于交通标志/灯具有特殊的形状和颜色,传统的检测方法通常基于颜色阈值[364 368]、视觉显著性检测[369]、形态滤波[79]和边缘/轮廓分析[370,371]。由于上述方法仅仅是基于低水平视觉设计的,在复杂环境下往往会失效(如图23所示),因此,一些研究者开始寻找基于视觉方法之外的其他解决方案,如将GPS与数字地图相结合进行交通灯检测[372,373]。虽然功能金字塔+滑动窗口已经成为当时通用目标检测和行人检测的标准框架,除了极少数的工作[374],主流的交通标志/灯光检测方法直到2010年才遵循这个范式[375 377]。

  • Deep learning based detection methods

在深度学习时代,一些著名的检测器如Faster RCNN和SSD被应用于交通标志/灯光检测任务[83,84,378,379]。在此基础上,采用了注意机制和对抗性训练等新技术,提高了复杂交通环境下的检测能力

5.5 Remote Sensing Target Detection

遥感成像技术为人们更好地了解地球打开了一扇门。近年来,随着遥感影像分辨率的提高,遥感目标检测(如飞机、船舶、油锅等的检测)成为研究热点。遥感目标检测在军事侦查、灾害救援、城市交通管理等领域有着广泛的应用。

5.5.1 Diffificulties and Challenges

0ffa42a92f185b3517679a9500feff73.png

由于遥感影像与日常影像之间存在巨大差异,一些研究者对CNN深度特征对遥感影像的有效性进行了研究[406 408]。人们发现,尽管deep CNN取得了巨大的成功,但它并不比传统的光谱数据方法好[406]。为了检测不同方向的目标,一些研究者改进了ROI池化层,以获得更好的旋转不变性[272,409]。为了提高区域自适应能力,一些研究者从贝叶斯的角度提出了检测方法,即在检测阶段,模型根据测试图像的分布自适应地更新[91]。此外,注意机制和特征融合策略也被用于改进小目标检测[410,411]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值