目标检测进展

深度学习在自然语言处理与计算机视觉中的应用 — UCAS ZhangYF

一、方法概述

1.目标检测

计算机视觉中的主要任务包括:

(1)分类:(指what)把不同类别区分,图片属于猫还是属于狗。
(2)识别:(指which)识别目标是个啥,既能识别是猫还是狗,又能识别是哪只特定的猫。
(3)定位(localization):(指where)除了需要预测出图片的类别,你还要定位出这个物体的位置,把这个物体框起来。
(4)检测:(指what+where)不仅要说图片里有什么,并且要确定每一个物体的具体位置(一般用bbox来表示)
(5)显著性检测:通过智能算法模拟人的视觉特点,提取图像中的显著区域(即人类感兴趣的区域)。
(6)分割:分为实例的分割(Instance-level)和场景分割(Scene-level),解决“每一个像素属于哪个目标物或场景”的问题。

如图1所示,与目标检测相关的识别问题,分别是目标分类,目标检测,语义分割和实例分割。
在这里插入图片描述
图1 目标检测相关识别问题

因此,目标检测就是找出图像中所有感兴趣的目标(物体),确定它们的位置和大小,是机器视觉领域的核心问题之一。由于各类物体有不同的外观,形状,姿态,加上成像时光照,遮挡等因素的干扰,目标检测一直是机器视觉领域最具有挑战性的问题。[1]

2.传统目标检测方法(2012年之前)

传统的目标检测与识别方法主要可以表示为:目标特征提取->目标识别->目标定位。 这里所用到的特征都是认为设计的,例如SIFT (尺度不变特征变换匹配算法)是Lowe在1999年提出的。

2001年,Viola and Jones提出Cascades思想,后期有了Haar特征+Adaboost+Cascade组合算法,Cascade级联思想可以快速抛弃没有目标的平滑窗(sliding window),因而大大提高了检测效率。但它有一个很大的缺点,它仅仅使用了很弱的特征,用它做分类的检测器也是弱分类器,仅仅比随机猜的要好一些,它的精度靠的是多个弱分类器来实行一票否决式推举(就是大家都检测是对的)来提高命中率,确定分类器的个数也是经验问题。[2]

2005年,Dalal and Triggs提出HOG算法,方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。HOG特征通过计算和统计图像局部区域的梯度方向直方图来构成特征。
HOG的优点:核心思想是所检测的局部物体外形能够被梯度或边缘方向的分布所描述,HOG能较好地捕捉局部形状信息,对几何和光学变化都有很好的不变性;HOG是在密集采样的图像块中求取的,在计算得到的HOG特征向量中隐含了该块与检测窗口之间的空间位置关系。

HOG的缺陷:很难处理遮挡问题,人体姿势动作幅度过大或物体方向改变也不易检测(这个问题后来在DPM中采用可变形部件模型的方法得到了改善);跟SIFT相比,HOG没有选取主方向,也没有旋转梯度方向直方图,因而本身不具有旋转不变性(较大的方向变化),其旋转不变性是通过采用不同旋转方向的训练样本来实现的;跟SIFT相比,HOG本身不具有尺度不变性,其尺度不变性是通过缩放检测窗口图像的大小来实现的;此外,由于梯度的性质,HOG对噪点相当敏感,在实际应用中,在Block和Cell划分之后,对于得到各个像区域中,有时候还会做一次高斯平滑去除噪点。[2]

2008年,Felzenszwalb et al提出DPM方法,DPM是一个非常成功的目标检测算法,连续获得VOC(Visual Object Class)07,08,09年的检测冠军。目前已成为众多分类器、分割、人体姿态和行为分类的重要部分。2010年Pedro Felzenszwalb被VOC授予"终身成就奖"。DPM可以看做是HOG(Histogrrams of Oriented Gradients)的扩展,大体思路与HOG一致。先计算梯度方向直方图,然后用SVM(Surpport Vector Machine )训练得到物体的梯度模型(Model)。有了这样的模板就可以直接用来分类了,简单理解就是模型和目标匹配。DPM只是在模型上做了很多改进工作。[3]

DPM特征+Latent SVM组合算法, DPM算法优点:方法直观简单;运算速度块;适应动物变形;DPM算法缺点:性能一般;激励特征人为设计,工作量大;这种方法不具有普适性,因为用来检测人的激励模板不能拿去检测小猫或者小狗,所以在每做一种物件的探测的时候,都需要人工来设计激励模板,为了获得比较好的探测效果,需要花大量时间去做一些设计,工作量很大;无法适应大幅度的旋转,稳定性很差。

如图2所示,从1999年SIFT出现到2011年Selective Search是传统的目标检测算法。
在这里插入图片描述
图2 传统目标检测算法发展

3.基于深度学习的目标检测方法

由于无需进行人工的特征设计、良好的特征表达能力及优良的检测精度,目前,基于深度学习的目标检测算法已经超越传统检测方法,成为当前目标检测算法的主流。[4] AlexNet是基于深度学习的目标检测的开端,是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计的,如图3为AlexNet网络结构。在2012年之后,更多的深度神经网络被提出,比如优秀的VGG,GoogLeNet等。2013年Sermanet等提出OverFeat,并发表在ICLR2014, OverFeat是用CNN统一来做分类、定位和检测的经典之作,作者是深度学习大神之一—Yann Lecun在纽约大学的团队。OverFeat也是ILSVRC 2013任务3(分类+定位)的冠军得主。OverFeat利用滑动窗口进行不同尺度的区域提名,然后使用CNN模型对每个区域进行分类,得到类别和置信度。统一用CNN来做分类和预测边框位置,模型与AlexNet类似。
在这里插入图片描述
图3 AlexNet网络结构

根据算法的设计思想,现阶段的目标检测方法主要分为两种,即以R-CNN,Faster R-CNN等为代表的two-stage算法和以YOLO,SSD等为代表的one-stage算法。

(1)Two-stage算法的发展
Two-stage方法是把目标检测任务分为两个阶段:提取RoIs,然后分类和回归RoIs。

Ross等人发表在CVPR2014的R-CNN突破了传统的目标检测算法的思想,为深度学习在目标检测领域的首次成功突破。R-CNN框架如图4所示,首先通过Selective Search从原始图片提取2000个左右区域候选框,然后把所有候选框所方程固定的大小,然后通过CNN网络来提取特征,最后在特征层的基础上添加两个全连接层,再用SVM分类来做识别,用线性回归来微调边框位置与大小,其中每个类别单独训练一个边框回归器。但是R-CNN还是存在很多问题,R-CNN虽然不再是穷举,但依然有两千个左右的候选框,这些候选框都需要进行CNN操作,计算量依然很大,其中有不少其实是重复计算,处理速度慢是个大问题。
在这里插入图片描述
图4 R-CNN框架

接下来的SPP-net最后一层卷积层后加了一个SPP层,将维度不一的卷积特征转换为维度一致的全连接输入。SPP-net解决了R-CNN区域提名时crop/warp带来的偏差问题,提出了SPP层,使得输入的候选框可大可小,但其他方面依然和R-CNN一样,因而依然存在不少问题,这就有了后面的Fast R-CNN。Fast R-CNN是要解决R-CNN和SPP-net两千个左右候选框带来的重复计算问题,其主要思想为使用一个简化的SPP层 —— RoI(Region of Interesting) Pooling层,操作与SPP类似,Fast R-CNN框架如图5所示。Fast R-CNN 在R-CNN的基础上,采用自适应尺度池化对整个网络进行优化,从而规避了R-CNN中冗余的特征提取操作,提高了网络识别的准确率。此外,使用感兴趣区域池化层,用以提取特征层上各个候选框的固定维度的特征表示;同时,使用 SoftMax 非线性分类器,以多任务学习的方式同时进行分类和回归。由于Fast R-CNN 无需存储训练和测试过程产生的中间值,因此其速度相较于 R-CNN 大为提升。
在这里插入图片描述
图5 Fast R-CNN框架

Faster R-CNN通过构建区域建议网络(Region Proposal Network,RPN)提取候选框,RPN结构如图6所示,取代时间开销大的选择性搜索方法,区域提名、分类、回归等操作一起共用卷积特征,进一步提升了速度。
在这里插入图片描述
图6 RPN

NeurIPS2016的R-FCN将最后的全连接层之类换为了一个位置敏感的的卷积网络,从而让所有计算都可以共享。CVPR2017DenseNet进一步完善ResNet。ICCV2017中何恺明提出的Mask R-CNN在Faster R-CNN基础上加上Mask分支进一步提高AP。后面在CVPR2018中Relation Network结合了attention机制,Cascade R-CNN通过IOU结合级联的思想,PANet考虑到当时实例分割最佳模型Mask-RCNN的信息传播还不够充分,具体地,低层特征到高层特征的传递路径过长,FPN中每个proposal只负责金字塔特定的一层,掩码预测只基于单一视角设计了改进,目前PANet的AP值排名较靠前。CVPR2019中来自香港中文大学的Hybrid Task Cascade,是COCO2018检测的冠军,mask AP为49是当前最高。Libra R-CNN解决了几个不平衡问题。另外CVPR2019 oral文章Mask scoring R-CNN进一步弥补了Mask R-CNN中的不足。Arxiv2019来自中国科学院自动化研究所的Scale-AwareTrident Networks for Object Detection文章COCO box AP达到48.4。现在NAS-FPN AP为48.3,HTC+DCN+ResNeXt-101-FPN可以达到AP50.7,CornerNet-Saccade+gt attetion AP为50.3,Learning Data Augmentation Strategies for Object Detection中AP可达50.7,强化版的Cascade R-CNN,High Quality Object Detection and Instance Segmentation其中AP为50.9,为目前目标检测方向性能最强算法。

(2)One-stage算法的发展
One-stage方法去掉了RoI提取过程,直接对box就行分类的回归。
2015年YOLO的出现,简化了目标检测的流程,其主要做法是先把图片做成S×S的格子,如果某个物体的中心落在这个格子里面,那么这个格子就负责检测这个物体。每个格子预测B个bbox和置信度得分,每个bbox包括5个预测量,x,y,w,h和置信度。x,y是box的中心,跟格子的边框有关。w,h跟整个图像有关。置信度代表了GT和预测的交并比。每个格子预测C个类别。YOLO结构如图7所示。YOLO假阳性(FP)错误率低。YOLO网络将整个图像的全部信息作为上下文,在训练的过程中使用到了全图信息,能够更好的区分目标个背景区域。端到端(end-to-end)的方法,速度快,如官网所说,具有实时性,45fps,在YOLO-tiny上可以达到155fps。但是YOLO性能表现比当时最先进的目标检测技术低。定位准确性差,对于小目标或者密集型群体object的定位效果不好。虽然每个格子可以预测出B个bounding box,但是最终只选择一个score最高的作为输出,即每个格子最多只得出一个box,如果多个物体的中心落在同一个格子,那么最终可能只预测出一个object。
在这里插入图片描述
图7 YOLO结构

由于 YOLO 网络的 S×S 网格的粗糙划分导致了回归的目标位置误差较大, ECCV2016中SSD: Single Shot MultiBox Detector借鉴了区域提名的思想作出改进,使用与 Faster R-CNN 类似的 RPN 网络,不同的是 SSD 在 CNN 的多个特征层上使用 RPN 之后再作分类和边框回归,原图上小物体的检测也能有较准确的检测结果。与 YOLO 相比,SSD 仍能保持快速的检测速度,并且改进了小物体的定位精确度。SSD与YOLO网络结构对比如图8所示。
在这里插入图片描述
图8 SSD和YOLO网络对比

DSSD 在SSD中引入了解卷积模块,以结合底层和高层特征。而R-SSD 在不同的特征层中使用pooling和反卷积操作来结合底层和高层特征。 RON 在有效提取多尺度特征之前提出了反向连接。RefineDet 将anchor的位置和大小细化两次,这继承了一阶段和两阶段方法的优点。ICCV2017最佳学生论文RetinaNet总结一阶段性能低于两阶段的原因,提出了focal loss思想。ECCV2018中Learning Region Features for Object Detection借鉴Relation Network和Deformble Convolutional Networks让物体检测器迈向完全可学习。ECCV2018中CornerNet是另外一个基于关键点的方法,通过一组角点直接预测物体,这也是anchor free的一个开端。在NeurIPS2018中MetaAnchor总结了anchor的不足,提出了把anchor配置做为输入来学习网络。在CVPR2019中的Feature Selective Anchor-Free中加上了anchor free分支来自己找特征层。另外,CVPR2019中Guided Anchoring(GA-RPN)通过图片自己学习位置和长宽来得到anchor。AAAI2019中DeRPN提出了一种基于维度分解的候选区域提取方法。MeatAnchor,GA-RPN和DeRPN都是为了自学习生成Anchor。

CornerNet把检测目标框变成一对关键点的问题,即左上角和右下角,这样就消除了锚框的设计麻烦。另外,采用的角点池化(corner pooling)技术帮助CNN更好地定位角点位置。基于CornerNet的启发,近期有ExtremeNet、CenterNet(Keypoint Triplets for Object Detection)、Object as Point、RepPoints及CornetNet-Lite等都是基于关键点检测的一阶段算法,性能也有了很大的提高。CenterNet(Keypoint Triplets for Object Detection)总结CornerNet存在很高的False Discovery进行改进,在CornerNet网络的基础上再加一个Center分支来进一步校正CornerNet,AP可以达到47。ExtremeNet是CVPR2019接收,通过四个极值点加上一个中心点来检测一个物体,将这几何校准的五个点组成一个目标框极值点在标注时也会省很多时间。Object as Points是另一种形式的CenterNet,只检测物体的中心点,然后回归到边界框的距离。RepPoints通过利用可变形卷积用一系列点来表示一个物体。
另外关于密集检测的相关的算法有FSAF、DuBox、FoveaBox及FCOS等等,通过回归来做检测。这些都是基于CVPR2015的DenseBox。FSAF基于特征金字塔网络(feature pyramid structure,FPN)的在线特征选择能力, 在训练时可以动态分配每个实例到最适合的特征层,在推理时能够和带锚的模块分支一起工作,最后并行地输出预测。FCOS是分割,不需要锚框也不需要区域提议。这样,避免了锚框在模型训练中涉及的重叠计算和性能敏感的参数设计环。FoveaBox直接学习目标存在的概率和目标框的坐标位置,其中包括预测类别相关的语义图和生成类别无关的候选目标框,目标框的大小和特征金字塔的表示相关。

3.目标检测现存问题及发展趋势

根据目标检测系列文章可以发现目标检测发展趋势从无Anchor(如R-CNN)到Anchor Based(如Faster R-CNN、RetinaNet等)再到Anchor Free(如CornerNet、FSAF、MetaAnchor等),后面的发展还会向Anchor Free发展,因为Anchor的设计是对检测结果影响很大的一个超参。
基于关键点的目标检测算法,现在已经有用左上和右下两个角点做目标检测,有用左上和右下两个角点加上中心点,有直接找中心点回归边界框,有检测极值点和中心点进行检测,用offset偏移一系列的点来生成伪框,所有能表示一个框的点都已经有应用了。还可以考虑用两个圆来表示一个框,但是相比上面的几种会更麻烦了。另外基于DenseBox方法的回归到边界框距离的方法从中心点到四个边界,从Fovea回归到边界的距离等。但是还没有从角点回归框的长和宽的算法。

目前One stage中Anchor Free算法中CenterNet在CornerNet的基础上改进,目前性能在Anchor Free中最高,但是还是存在一些问题,如图9所示,CenterNet还是会出现错误框,然而CornerNet没有出现这种框。另外CenterNet相比CornerNet还存在漏检。但是CenterNet的性能确实高于CornerNet。因为即使CenterNet性能达到AP为47仍存在很大地提升的余地。
在这里插入图片描述
图9 CenterNet与CornerNet在COCO2017Val结果对比

ref
[1]目标检测(一)——目标检测综述,
https://blog.csdn.net/qq_35451572/article/details/80249259.
[2]传统目标检测算法总结,
https://blog.csdn.net/qq_32742009/article/details/81388228.
[3]DPM(Deformable Parts Model)–原理(一),
https://blog.csdn.net/ttransposition/article/details/12966521.
[4] 基于深度学习的目标检测算法总结(Faster R-CNN,YOLO,SSD等),
https://baijiahao.baidu.com/s?id=1607376061341170953&wfr=spider&for=pc
[5] 目标检测领域还有什么可做的?19 个方向给你建议,
http://bbs.cvmart.net/articles/224/mu-biao-jian-ce-ling-yu-hai-you-shen-me-ke-zuo-de-19-ge-fang-xiang-gei-ni-jian-yi

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值