好用建站模板,如何让人帮忙做网站,网站远程数据库,朝阳企业网站建设方案目标检测综述 转自#xff1a;https://zhuanlan.zhihu.com/p/383616728 论文参考#xff1a;[Object Detection in 20 Years: A Survey][https://arxiv.org/abs/1905.05055] 引言
目标检测领域发展至今已有二十余载#xff0c;从早期的传统方法到如今的深度学习方法#x…目标检测综述 转自https://zhuanlan.zhihu.com/p/383616728 论文参考[Object Detection in 20 Years: A Survey][https://arxiv.org/abs/1905.05055] 引言
目标检测领域发展至今已有二十余载从早期的传统方法到如今的深度学习方法精度越来越高的同时速度也越来越快这得益于深度学习等相关技术的不断发展。本文将对目标检测领域的发展做一个系统性的介绍旨在为读者构建一个完整的知识体系架构同时了解目标检测相关的技术栈及其未来的发展趋势。由于编者水平有限本文若有不当之处还请指出与纠正欢迎大家评论交流
本文将从以下九大方面进行展开
背景目标检测算法发展脉络目标检测常用数据集及评价指标目标检测任务普遍存在的六大难点与挑战目标检测的五大技术及其演变目标检测模型的加速技术提高目标检测模型精度的五大技术目标检测的五大应用场景目标检测未来发展的七大趋势
1. 背景
目标检测任务是找出图像或视频中人们感兴趣的物体并同时检测出它们的位置和大小。不同于图像分类任务目标检测不仅要解决分类问题还要解决定位问题是属于Multi-Task的问题。如下图1-1所示 作为计算机视觉的基本问题之一目标检测构成了许多其它视觉任务的基础例如实例分割图像标注和目标跟踪等等从检测应用的角度看行人检测、面部检测、文本检测、交通标注与红绿灯检测遥感目标检测统称为目标检测的五大应用。
2. 目标检测发展脉络
目标检测的发展脉络可以划分为两个周期传统目标检测算法时期(1998年-2014年)和基于深度学习的目标检测算法时期(2014年-至今)。而基于深度学习的目标检测算法又发展成了两条技术路线Anchor based方法(一阶段二阶段)和Anchor free方法。下图2-1展示了从2001年至2021年目标检测领域中目标检测发展路线图。 2.1 传统目标检测算法
不同于现在的卷积神经网络可以自动提取高效特征进行图像表示以往的传统目标检测算法主要基于手工提取特征。传统检测算法流程可概括如下
选取感兴趣区域选取可能包含物体的区域对可能包含物体的区域进行特征提取对提取的特征进行检测分类
2.1.1 Viola Jones Detector
VJ[1] (Viola Jones)检测器采用滑动窗口的方式以检查目标是否存在窗口之中该检测器看起来似乎很简单稳定但由于计算量庞大导致时间复杂度极高为了解决该项问题VJVJVJ 检测器通过合并三项技术极大提高了检测速度这三项技术分别是1)特征的快速计算方法-积分图2)有效的分类器学习方法-AdaBoost以及3)高效的分类策略-级联结构的设计。
2.1.2 HOG Detector
HOG[2](Histogram of Oriented Gradients)检测器于2005年提出是当时尺度特征不变性(Scale Invariant Feature Transform)和形状上下文(Shape Contexts)的重要改进为了平衡特征不变性(包括平移尺度光照等)和非线性(区分不同的对象类别)HOGHOGHOG 通过在均匀间隔单元的密集网格上计算重叠的局部对比度归一化来提高检测准确性因此 HOGHOGHOG 检测器是基于本地像素块进行特征直方图提取的一种算法它在目标局部变形和受光照影响下都有很好的稳定性。 HOGHOGHOG 为后期很多检测方法奠定了重要基础相关技术被广泛应用于计算机视觉各大应用。
2.1.3 DPM Detector
作为VOC 2007-2009目标检测挑战赛的冠军DPM[3] (Deformable Parts Model)是目标检测传统算法中当之无愧的SOTA(State Of The Art)算法。DPMDPMDPM 于2008年提出相比于 HOGHOGHOGHOGHOGHOG 作了很多改进因此该算法可以看作的 DPMDPMDPM 延申算法。DPMDPMDPM 算法由一个主过滤器(Root-filter)和多个辅过滤器(Part-filters)组成通过硬负挖掘(Hard negative mining)边框回归(Bounding box regression)和上下文启动(Context priming)技术改进检测精度。作为传统目标检测算法的SOTADPMDPMDPM 方法运算速度快能够适应物体形变但它无法适应大幅度的旋转因此稳定性差。
2.1.4 局限性
基于手工提取特征的传统目标检测算法主要有以下三个缺点
识别效果不够好准确率不高计算量较大运算速度慢可能产生多个正确识别的结果
2.2 Anchor-Based中的Two-stage目标检测算法
基于手工提取特征的传统目标检测算法进展缓慢性能低下。直到2012年卷积神经网络(Convolutional Neural Networks, CNNs)的兴起将目标检测领域推向了新的台阶。基于CNNs的目标检测算法主要有两条技术发展路线anchor-based和anchor-free方法而anchor-based方法则包括一阶段和二阶段检测算法(二阶段目标检测算法一般比一阶段精度要高但一阶段检测算法速度会更快)。
二阶段检测算法主要分为以下两个阶段
Stage1从图像中生成region proposals Stage2从region proposals生成最终的物体边框。
2.2.1 RCNN 论文链接https://openaccess.thecvf.com/content_cvpr_2014/papers/Girshick_Rich_Feature_Hierarchies_2014_CVPR_paper.pdf 代码链接https://github.com/rbgirshick/rcnn 【简介】 RCNN[4] 由Ross Girshick于2014年提出RCNN首先通过选择性搜索算法Selective Search从一组对象候选框中选择可能出现的对象框然后将这些选择出来的对象框中的图像resize到某一固定尺寸的图像并喂入到CNN模型(经过在ImageNet数据集上训练过的CNN模型如AlexNet)提取特征最后将提取出的特征送入到 SVMSVMSVM 分类器来预测该对象框中的图像是否存在待检测目标并进一步预测该检测目标具体属于哪一类。
【性能】 RCNN算法在VOC-07数据集上取得了非常显著的效果平均精度由33.7%(DPM-V5, 传统检测的SOTA算法)提升到58.5%。相比于传统检测算法基于深度学习的检测算法在精度上取得了质的飞跃。
【不足】 虽然RCNN算法取得了很大进展但缺点也很明显重叠框(一张图片大2000多个候选框)特征的冗余计算使得整个网络的检测速度变得很慢(使用GPU的情况下检测一张图片大约需要14S)。
为了减少大量重叠框带来的冗余计算K. He等人提出了SPPNet。
2.2.2 SPPNet 论文链接https://link.springer.com/content/pdf/10.1007/978-3-319-10578-9_23.pdf 代码链接https://github.com/yueruchen/sppnet-pytorch 【简介】 SPPNet[5] 提出了一种空间金字塔池化层(Spatial Pyramid Pooling Layer, SPP)。它的主要思路是对于一副图像分成若干尺度的图像块(比如一副图像分成1份4份8份等)然后对每一块提取的特征融合在一起从而兼顾多个尺度的特征。SPP使得网络在全连接层之前能生成固定尺度的特征表示而不管输入图片尺寸如何。当使用SPPNet网络用于目标检测时整个图像只需计算一次即可生成相应特征图不管候选框尺寸如何经过SPP之后都能生成固定尺寸的特征表示图这避免了卷积特征图的重复计算。
【性能】 相比于RCNN算法SPPNet在Pascal-07数据集上不牺牲检测精度(VOC-07, mAP59.2%)的情况下推理速度提高了20多倍。
【不足】 和RCNN一样SPP也需要训练CNN提取特征然后训练SVM分类这些特征这需要巨大的存储空间并且多阶段训练的流程也很繁杂。除此之外SPPNet只对全连接层进行微调而忽略了网络其它层的参数。
为了解决以上存在的一些不足2015年R. Girshick等人提出Fast RCNN
2.2.3 Fast RCNN 论文链接https://arxiv.org/pdf/1506.01497.pdf 代码链接https://github.com/jwyang/faster-rcnn.pytorch 【简介】 Faster RCNN[7] 是第一个端到端最接近于实时性能的深度学习检测算法该网络的主要创新点就是提出了区域选择网络用于申城候选框能几大提升检测框的生成速度。该网络首先输入图像到卷积网络中生成该图像的特征映射。在特征映射上应用Region Proposal Network返回object proposals和相应分数。应用Rol池化层将所有proposals修正到同样尺寸。最后将proposals传递到完全连接层生成目标物体的边界框。
【性能】 该网络在当时VOC-07VOC-12和COCO数据集上实现了SOTA精度其中COCO mAP.542.7%, COCO mAP[.5,.95]21.9%, VOC07 mAP73.2%, VOC12 mAP70.4%, 17fps with ZFNet
【不足】 虽然Faster RCNN的精度更高速度更快也非常接近于实时性能但它在后续的检测阶段中仍存在一些计算冗余除此之外如果IOU阈值设置的低会引起噪声检测的问题如果IOU设置的高则会引起过拟合。
2.2.5 FPN 论文链接http://openaccess.thecvf.com/content_cvpr_2017/papers/Lin_Feature_Pyramid_Networks_CVPR_2017_paper.pdf 代码链接https://github.com/jwyang/fpn.pytorch 【简介】 2017年T.-Y.Lin等人在Faster RCNN的基础上进一步提出了特征金字塔网络FPN[8](Feature Pyramid Networks)技术。在FPN技术出现之前大多数检测算法的检测头都位于网络的最顶层(最深层)虽说最深层的特征具备更丰富的语义信息更有利于物体分类但更深层的特征图由于空间信息的缺乏不利于物体定位这大大影响了目标检测的定位精度。为了解决这一矛盾FPN提出了一种具有横向连接的自上而下的网络架构用于在所有具有不同尺度的高底层都构筑出高级语义信息。FPN的提出极大促进了检测网络精度的提高(尤其是对于一些待检测物体尺度变化大的数据集有非常明显的效果)。
【性能】 将FPN技术应用于Faster RCNN网络之后网络的检测精度得到了巨大提高(COCO mAP.559.1%, COCO mAP[.5,.95]36.2%)再次成为当前的SOTA检测算法。此后FPN成为了各大网络(分类检测与分割)提高精度最重要的技术之一。
2.2.6 Cascade RCNN 论文链接https://openaccess.thecvf.com/content_cvpr_2018/papers/Cai_Cascade_R-CNN_Delving_CVPR_2018_paper.pdf 代码链接https://github.com/zhaoweicai/cascade-rcnn 【简介】 Faster RCNN完成了对目标候选框的两次预测其中RPN一次后面的检测器一次而Cascade RCNN[9] 则更进一步将后面检测器部分堆叠了几个级联模块并采用不同的IOU阈值训练这种级联版的Faster RCNN就是Cascade RCNN。通过提升IoU阈值训练级联检测器可以使得检测器的定位精度更高在更为严格的IoU阈值评估下Cascade R-CNN带来的性能提升更为明显。Cascade RCNN将二阶段目标检测算法的精度提升到了新的高度。
【性能】 Cascade RCNN在COCO检测数据集上不添加任何Trick即可超过现有的SOTA单阶段检测器此外使用任何基于RCNN的二阶段检测器来构建Cascade RCNNmAP平均可以提高2-4个百分点。
2.3 Anchor-based中的one-stage目标检测算法
一阶段目标检测算法不需要region proposal阶段直接产生物体的类别概率和位置坐标值经过一个阶段即可直接得到最终的检测结果因此有着更快的检测速度。
2.3.1 YOLO v1 论文链接https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Redmon_You_Only_Look_CVPR_2016_paper.pdf 代码链接https://github.com/abeardear/pytorch-YOLO-v1 【简介】 YOLO v1[10] 是第一个一阶段的深度学习检测算法其检测速度非常快该算法的思想就是将图像划分成多个网格然后为每一个网格同时预测边界框并给出相应概率。例如某个待检测目标的中心落在图像中所划分的一个单元格内那么该单元格负责预测该目标位置和类别。
【性能】 YOLO v1检测速度非常快在VOC-07数据集上的mAP可达52.7%实现了155 fps的实时性能其增强版性能也很好(VOC-07 mAP63.4%, 45 fps, VOC-12 mAP57.9%)性能要优于DPM和RCNN。
【不足】 相比于二阶段的目标检测算法尽管YOLO v1算法的检测速度有了很大提高但精度相对教低(尤其是对于一些小目标检测问题)。
2.3.2 SSD 论文链接https://arxiv.org/pdf/1512.02325 代码链接https://github.com/amdegroot/ssd.pytorch 【简介】 SSD[11] 算法的主要创新点是提出了Multi-reference和Multi-resolution的检测技术。SSD算法和先前的一些检测算法的区别在于先前的一些检测算法只是在网络最深层的分支进行检测而SSD有多个不同的检测分支不同的检测分支可以检测多个尺度的目标所以SSD在多尺度目标检测的精度上有了很大的提高对小目标检测效果要好很多。
【性能】 相比于YOLO v1算法SSD进一步提高了检测精度和速度(VOC-07 mAP76.8%, VOC-12 mAP74.9%, COCO mAP.546.5%, mAP[.5,.95]26.8%, SSD的精简版速度达到59 fps)。
2.3.3 YOLO v2 论文链接https://openaccess.thecvf.com/content_cvpr_2017/papers/Redmon_YOLO9000_Better_Faster_CVPR_2017_paper.pdf 代码链接https://github.com/longcw/yolo2-pytorch 【简介】 相比于YOLO v1YOLO v2[12] 在精度、速度和分类数量上都有了很大的改进。在速度上(Faster)YOLO v2使用DarkNet19作为特征提取网络该网络比YOLO v2所使用的VGG-16要更快。在分类上(Stronger)YOLO v2使用目标分类和检测的联合训练技巧结合Word Tree等方法使得YOLO v2的检测种类扩充到了上千种。下图2-2展示了YOLO v2相比于YOLO v1在提高检测精度(Better)上的改进策略。 【性能】 YOLO v2算法在VOC 2007数据集上的表现为67 FPS时mAP为76.8在40FPS时mAP为78.6。
【不足】 YOLO v2算法只有一条检测分支且该网络缺乏对多尺度上下文信息的捕获所以对于不同尺寸的目标检测效果依然较差尤其是对于小目标检测问题。
2.3.4 RetinaNet 论文链接https://openaccess.thecvf.com/content_ICCV_2017/papers/Lin_Focal_Loss_for_ICCV_2017_paper.pdf 代码链接https://github.com/yhenon/pytorch-retinanet 【简介】 尽管一阶段检测算推理速度快但精度上与二阶段检测算法相比还是不足。RetinaNet[13] 论文分析了一阶段网络训练存在的类别不平衡问题提出能根据Loss大小自动调节权重的Focal loss代替了标准的交叉熵损失函数使得模型的训练更专注于困难样本。同时基于FPN设计了RetinaNet在精度和速度上都有不俗的表现。
【性能】 RetinaNet在保持高速推理的同时拥有与二阶段检测算法相媲美的精度(COCO mAP.559.1%, mAP[.5, .95]39.1%)。
2.3.5 YOLO v3 论文链接https://arxiv.org/pdf/1804.02767.pdf 代码链接https://github.com/ultralytics/yolov3 【简介】 相比于YOLO v2YOLO v3[14] 将特征提取网络换成了DarkNet53对象分类用Logistic取代了Softmax并借鉴了FPN思想采用三条分支三个不同尺度/不同感受野的特征图去检测具有不同尺寸的对象。
【性能】 YOLO v3在VOC数据集Titan X上处理 608×608608\times 608608×608 图像速度达到20FPS在COCO的测试数据集上mAP0.5达到57.9%。其精度比SSD高一些比Faster RCNN相比略有逊色(几乎持平)比RetinaNet差但速度是SSD、RetinaNet和Faster RCNN至少2倍以上而简化后的Yolov3 tiny可以更快。
【不足】 YOLO v3采用MSE作为边框回归损失函数这使得YOLO v3对目标的定位并不精准之后出现的IOUGIOUDIOU和CIOU等一系列边框回归损失大大改善了YOLO v3对目标的定位精度。
2.3.6 YOLO v4 论文链接https://arxiv.org/pdf/2004.10934 代码链接https://github.com/Tianxiaomo/pytorch-YOLOv4 【简介】 相比于YOLO v4YOLO v4[15] 在输入端引入了Mosaic数据增强、cmBN、SAT自对抗训练在特征提取网络上YOLO v4将各种新的方式结合起来包括CSPDarknet53Mish激活函数Dropblock在检测头中引入了SPP模块借鉴了FPNPAN结构在预测阶段采用了CIOU作为网络的边界框损失函数同时将NMS换成了DIOU_NMS等等。总体来说YOLO v4具有极大的工程意义将近年来深度学习领域最新研究的tricks都引入到了YOLO v4做验证测试在YOLO v3的基础上更进一大步。
【性能】 YOLO v4在COCO数据集上达到了43.5%AP(65.7% AP50)在Tesla V100显卡上实现了65 fps的实时性能下图2-3展示了在COCO检测数据集上YOLO v4和其它SOTA检测算法的性能对比。 2.3.7 YOLO V5 代码链接https://github.com/ultralytics/yolov5 【简介】 目前YOLO V5公布了源代码但尚未发表论文与YOLO V4有点相似都大量整合了计算机视觉领域的State-of-the-art从而显著改善了YOLO对目标的检测性能。相比于YOLO V4YOLO V5在性能上稍微逊色但其灵活性与速度上远强于YOLO V4而且在模型的快速部署上也具有极强优势。
**【性能】**如下图2-4展示了在COCO检测数据集上YOLO v5和其它SOTA检测算法的性能对比。 2.3.8 Anchor-based目标检测算法局限性
基于Anchor的目标检测算法主要有以下四大缺点
Anchor的大小数量长宽比对于检测性能的影响很大(通过改变这些超参数Retinanet在COCO benchmark上面提升了4%的AP)因此Anchor based的检测性能对于anchor的大小、数量和长宽比都非常敏感。这些固定的Anchor极大地损害了检测器的普适性导致对于不同任务其Anchor都必须重新设置大小和长宽比。为了去匹配真实框需要生成大量的Anchor但是大部分的Anchor在训练时标记为负样本所以就造成了样本极度不均衡问题(没有充分利用fore-ground)。在训练中网络需要计算所有Anchor与真实框的IOU这样就会消耗大量内存和时间。
2.4 Anchor-Free中的目标检测算法
基于Anchor的物体检测问题通常被建模成对一些候选区域进行分类和回归的问题在一阶段检测器中这些候选区域就是通过滑窗方式产生Anchor box而在二阶段检测器中候选区域是RPN生成的Proposal但是RPN本身仍然是对滑窗方式产生的Anchor进行分类和回归。基于Anchor的检测算法由于Anchor太多导致计算复杂及其所带来的大量超参数都会影响模型性能。近年的Anchor free技术则摒弃Anchor通过确定关键点的方式来完成检测大大减少了网络超参数的数量。
2.4.1 CornerNet 论文链接http://openaccess.thecvf.com/content_ECCV_2018/papers/Hei_Law_CornerNet_Detecting_Objects_ECCV_2018_paper.pdf 代码链接https://github.com/princeton-vl/CornerNet 【简介】 CornerNet[16] 是Anchor free技术路线的开创之作该网络提出了一种新的对象检测方法将网络对目标边界框的检测转化为一对关键点的检测(即左上角和右下角)通过将对象检测为成对的关键点而无需设计Anchor box作为先验框。
【性能】 实验表明CornerNet在COCO数据集上实现了42.1%AP该精度优于所有现有的单阶段检测网络。下图2-3展示了在COCO检测数据集上CornerNet和其它SOTA检测算法的性能对比。 【不足】 CornerNet只关注边缘和角点缺乏目标内部信息容易产生FP该网络还是需要不少的后处理比如如何选取分数最高的点同时用offset来微调目标定位也还需要做NMS。
2.4.2 CenterNet 论文链接https://openaccess.thecvf.com/content_ICCV_2019/papers/Duan_CenterNet_Keypoint_Triplets_for_Object_Detection_ICCV_2019_paper.pdf 代码链接https://github.com/Duankaiwen/CenterNet 【简介】 与CornerNet检测算法不同CenterNet[17] 的结构十分简单它摒弃了左上角和右下角两关键点的思路而是直接检测目标的中心点其它特征如大小3D位置方向甚至姿态可以使用中心点位置的图像特征进行回归是真正意义上的Anchor free。该算法在精度和召回率上都有很大提高同时该网络还提出了两个模块级联角池化模块和中心池化模块进一步丰富了左上角和右下角收集的信息并提供了
【性能】 相比于一阶段和二阶段检测算法CenterNet的速度和精度都有不少的提高在COCO数据集上CenterNet实现了47.0%的AP比现有的一阶段检测器至少高出4.9%。下图2-4展示了在COCO检测数据集上CenterNet和其它SOTA检测算法的性能对比。 【不足】 在训练过程中同一类别中的如果某些物体靠的比较近那么其Ground Truth中心点在下采样时容易挤到一块导致两个物体GT中心点重叠使得网络将这两个物体当成一个物体来训练(因为只有一个中心点了)而在模型预测阶段如果两个同类物体在下采样后的中心点也重叠了那么网络也只能检测出一个中心点。
2.4.3 FSAF 论文链接http://openaccess.thecvf.com/content_CVPR_2019/papers/Zhu_Feature_Selective_Anchor-Free_Module_for_Single-Shot_Object_Detection_CVPR_2019_paper.pdf 代码链接https://github.com/hdjang/Feature-Selective-Anchor-Free-Module-for-Single-Shot-Object-Detection 【简介】 FSAF[18] 网络提出了一种FSAF模块用于训练特征金字塔中的Anchor free分支让每一个对象都自动选择最合适的特征。在该模块中Anchor box的大小不再决定选择哪些特征进行预测使得Anchor的尺寸成为了一种无关变量实现了模型自动化学习选择特征。
【性能】 下图2-5展示了在COCO检测数据集上FSAF算法和其它SOTA检测算法的性能对比。 2.4.4 FCOS 论文链接https://openaccess.thecvf.com/content_ICCV_2019/papers/Tian_FCOS_Fully_Convolutional_One-Stage_Object_Detection_ICCV_2019_paper.pdf 代码链接https://github.com/tianzhi0549/FCOS 【简介】 FCOS[19] 网络是一种基于FCN的逐像素目标检测算法实现了无锚点(Anchor free)无提议(Proposal free)的解决方案并且提出了中心度Center ness的思想。该算法通过去除Anchor完全避免了Anchor的复杂运算节省了训练过程中大量的内存占用将总训练内存占用空间减少了2倍左右。
【性能】 FCOS的性能优于现有的一阶段检测器同时FCOS还可用作二阶段检测器Faster RCNN中的RPN并且很大程度上都要优于RPN。下图2-6展示了在COCO检测数据集上FCOS算法和其它SOTA检测算法的性能对比。 2.4.5 SAPD 论文链接https://arxiv.org/pdf/1911.12448 代码链接https://github.com/xuannianz/SAPD 【简介】 SAPD[20] 论文作者认为Anchor point的方法性能不高主要还是在于训练的不充分主要是注意力偏差和特征选择。因而作者提出了两种策略1)Soft-weighted anchor points对不同位置的样本进行权重分配 2)Soft-selected pyramid levels将样本分配到多个分辨率并进行权重加权。而在训练阶段作者前6个epoch采用FSAF的方式而后6个epoch会将特征选择的预测网络加入进行联合训练。
【性能】 下图2-6展示了在COCO检测数据集上SAPD算法和其它SOTA检测算法的性能对比。 3. 常用数据集及评价指标
3.1 常用数据集
3.1.1 四大公共数据集
Pascal VOC[21]ILSVRC[22]MS-COCO[23]和OID[24] 数据集是目标检测使用最多的四大公共数据集至于这四大数据集的介绍此处不一一展开大家可根据下方给出的链接了解
PASCAL VOC数据集详细介绍可参考https://arleyzhang.github.io/articles/1dc20586/ILSVRC数据集详细介绍可参考https://cloud.tencent.com/developer/article/1747599MS-COCO数据集详细介绍可参考https://blog.csdn.net/qq_41185868/article/details/82939959Open Images(QID)数据集详细介绍可参考https://bbs.easyaiforum.cn/thread-20-1-1.html
下图3-1展示了这四大检测数据集的样例图片及其标签 下表3-1展示了这四大检测数据集的数据统计结果 3.1.2 其它数据集
检测任务包含了很多种其中比较常见的检测任务有行人检测脸部检测文本检测交通灯与交通标志检测遥感图像目标检测。下表3-2至3-6分别列举了各检测任务下的常用公共检测数据集。
行人检测 脸部检测 文本检测 交通标志检测 遥感图像检测 3.2 常用评价指标
目标检测常用的评价指标有交并比准确率精度召回率FPRF1-ScorePR曲线-AP值ROC曲线-AUC值和mAP值和FPS。
3.2.1 交并比(IOU)
IOU 两个矩形交集的面积 / 两个矩形并集的面积 如上图3-2假设A是模型检测结果B为Ground Truth那么IOU (A ∩ B) / (A ∪ B)一般情况下对于检测框的判定都会存在一个阈值也就是IOU的阈值一般将IOU值设置为大于0.5的时候则可认为检测到目标物体。
3.2.2 准确率/精度/召回率/F1值/FPR True positives (TP,真正): 预测为正,实际为正 True negatives (TN,真负): 预测为负,实际为负 False positives(FP,假正): 预测为正,实际为负 False negatives(FN,假负): 预测为负,实际为正 AccuracyTPTNTPTNFPFNAccuracy\frac{TPTN}{TPTNFPFN} AccuracyTPTNFPFNTPTN
PrecisionTPTPFPPrecision\frac{TP}{TPFP} PrecisionTPFPTP
RecallTPTPFNRecall\frac{TP}{TPFN} RecallTPFNTP
F12×TP2×TPFPFNF1\frac{2\times TP}{2\times TPFPFN} F12×TPFPFN2×TP
FPRFPFPTNFPR\frac{FP}{FPTN} FPRFPTNFP
3.2.3 PR曲线-AP值
模型精度召回率FPR和F1-Score值无法往往不能直观反应模型性能因此就有了PR曲线-AP值 和 ROC曲线-AUC值
PR曲线就是Precision和Recall的曲线我们以Precision作为纵坐标Recall为横坐标可绘制PR曲线如下图3-3所示 评估标准如果模型的精度越高且召回率越高那么模型的性能自然也就越好反映在PR曲线上就是PR曲线下面的面积越大模型性能越好。我们将PR曲线下的面积定义为AP(Average Precision)值反映在AP值上就是AP值越大说明模型的平均准确率越高。
3.2.4 ROC曲线-AUC值
ROC曲线就是RPR和TPR的曲线我们以FPR为横坐标TPR为纵坐标可绘制ROC曲线如下图3-4所示 评估标准当TPR越大FPR越小时说明模型分类结果是越好的反映在ROC曲线上就是ROC曲线下面的面积越大模型性能越好。我们将ROC曲线下的面积定义为AUC(Area Under Curve)值反映在AUC值上就是AUC值越大说明模型对正样本分类的结果越好。
3.2.5 mAP
Mean Average Precision(mAP)是平均精度均值具体指的是不同召回率下的精度均值。在目标检测中一个模型通常会检测很多种物体那么每一类都能绘制一个PR曲线进而计算出一个AP值而多个类别的AP值的平均就是mAP。
评估标准mAP衡量的是模型在所有类别上的好坏属于目标检测中一个最为重要的指标一般看论文或者评估一个目标检测模型都会看这个值这个值(0-1范围区间)越大越好。
划重点
一般来说mAP是针对整个数据集而言的AP则针对数据集中某一个类别而言的而percision和recall针对单张图片某一类别的。
3.2.6 FPS
Frame Per Second(FPS)指的是模型一秒钟能检测图片的数量不同的检测模型往往会有不同的mAP和检测速度如下图3-5所示 目标检测技术的很多实际应用在准确度和速度上都有很高的要求如果不计速度性能指标只注重准确度表现的突破其代价是更高的计算复杂度和更多内存需求对于行业部署而言可扩展性仍是一个悬而未决的问题。因此在实际问题中通常需要综合考虑mAP和检测速度等因素。本小节参考目标检测中的评价指标有哪些[25]
4. 存在的六大难点与挑战
每一个检测任务都有其特有的检测难点比如背景复杂目标尺度变化大颜色对比度低等挑战这就导致某个检测算法在检测任务A上可能表现SOTA但在检测任务B上表现得可能不尽如人意。因此分析研究每一个检测任务存在的难点与挑战至关重要这有利于我们针对不同的检测难点设计出不同的技术以解决该项问题从而使得我们提出的算法能够在特定的任务上表现SOTA。
我们对大部分检测任务加以分析概括出了以下几点在检测任务可能存在的检测难点与挑战:
待检测目标尺寸很小导致占比小检测难度大待检测目标尺度变化大网络难以提取出高效特征待检测目标所在背景复杂噪音干扰严重检测难度大待检测目标与背景颜色对比度低网络难以提取出具有判别性的特征各待检测目标之间数量极度不均衡导致样本不均衡检测算法的速度与精度难以取得良好平衡
划重点
以上六大检测难点基本覆盖检测任务中存在的所有挑战对于我们所做过的每一份检测任务数据集都可以在上述找到相应难点与挑战并针对具体的检测难点提出相应的解决方案
5. 目标检测的五大技术及其演变
5.1 Multi-Scale检测技术的演变
不同尺度不同形状物体的检测是目标检测面临的主要挑战之一而多尺度检测技术是解决多尺度问题的主要技术手段。目标检测发展的几十年来多尺度检测技术的演变经历了以下过程
Feature pyramids and sliding windows(2014年前)Detection with object proposals(2010-2015年)Deep regression(2013-2016年)Multi-reference detection(2015年后)Multi-resolution detection(2016年后)
如下图5-1展示了多尺度检测技术的演变历程。 5.2 边框回归技术的演变
边框回归(The Bounding Box regression)是目标检测非常重要的技术。它的目的是根据初始设定的anchor box来进一步改进修正预测框的位置。目标检测发展的几十年来多尺度检测技术的演变经历了以下过程
Without BB regression(2008年之前)From BB to BB(2008-2013年)From feature to BB(2013年后)
如下图5-2展示了边框回归技术的演变历程。 5.3 上下文信息提取技术的演变
目标检测领域中每一个目标都被周围背景所包围而我们对于一个目标的认知会根据其周围的环境作出判断于是我们将目标周围的环境信息称作上下文信息。上下文可以作为网络判断目标类别和定位的重要辅助信息可大大提高网络检测的精度。为网络提取上下文信息有以下三种常用的方法
提取局部上下文信息用于目标检测提取全局上下文信息用于目标检测上下文信息交互提取高效上下文信息用于目标检测
如下图5-3展示了上下文信息提取技术的演变历程。 5.4 非极大值抑制技术的演变
目标检测的过程中在同一目标的位置上会产生大量的候选框这些候选框相互之间可能会有重叠此时我们需要利用非极大值抑制找到最佳的目标边界框消除冗余的边界框。非极大值抑制算法的流程如下
根据置信度得分进行排序选择置信度最高的比边界框添加到最终输出列表中将其从边界框列表中删除计算所有边界框的面积计算置信度最高的边界框与其它候选框的IoU。删除IoU大于阈值的边界框重复上述过程直至边界框列表为空。
非极大值抑制算法逐渐发展成为以下三条路线
Greedy selectionBounding box aggregationLearning to NMS
如下图5-4展示了非极大值抑制算法的技术演变历程。 5.5 难分负样本挖掘技术的演变
目标检测的训练过程本质上还是一个样本数据不平衡的学习过程因为检测算法中需要用到很多检测框而真正包含目标的检测框占比却极少。在网络训练过程中大量简单的负样本(背景)会主导学习方向而不利于网络往正确的方向加以优化因此这需要采取一定的策略来解决这一问题。难分负样本挖掘(Hard Negative Mining, HNM)技术正是解决训练过程中的数据不平衡问题的一项关键技术。
难分负样本挖掘技术的演变主要经历了以下过程
BootstrapHNM in deep learning based detectors
如下图5-5展示了难分负样本挖掘技术的演变历程。 6. 模型加速技术
目前卷积神经网络在移动端的部署仍然具有不小挑战一个高精度的模型若计算量大则在工业落地的时候需要购买昂贵的设备去运行该模型这会极大提高工业生产成本阻碍模型落地进程。因此模型在高精度的同时还需要速度快。学术界研究学者致力于研究出高精度的轻量化网络架构而工业界工程师则致力于从硬件的角度出发开发一系列模型压缩与量化技术来提高模型运算速度。近年来出现的一些加速技术大体可分为以下三类
轻量化网络设计模型压缩与量化模型数值加速
6.1 轻量化网络设计
设计轻量化网络架构可以使模型在轻量化的同时保持较高的精度在轻量化网络设计中除了降低网络通道数和卷积层数等一些通用的网络设计准则外一些其它的方法也被用于构建轻量化的网络
卷积分解分组卷积深度可分离卷积Bottle-neck设计神经架构搜索
6.1.1 卷积分解
卷积分解是最简单也最常用的用于构建轻量级网络的技巧卷积分解的方式主要有两种 第一种方法是将大卷积核分解为多个小卷积核。如上图所示可以将一个 7×77\times 77×7 的卷积核分解为 3 个 3×33\times 33×3 的卷积核。它们拥有相同的感受野。但是后者计算效率会更高。或者将 ab×bab\times bab×b 的卷积核分解为 ab×1ab\times 1ab×1 和 a×ba\times ba×b 的卷积核。 第二种方法是将一组大卷积在其通道维度上分解为两小组卷积如上图6-2所示我们可以用 d′dd′ 个卷积核将特征图的通道数从 ccc 降到 d′dd′。然后用 ddd 个卷积核将特征的通道数调整为 ddd。通过此种方式可以将复杂度从 O(dk2c)O(dk^2c)O(dk2c) 降到 O(d′k2c)O(dd′)O(dk^2c)O(dd)O(d′k2c)O(dd′) 。
6.1.2 分组卷积 分组卷积的目的是通过将特征通道分成多个不同的组来减少卷积层中的参数数量然后对每个组独立进行卷积如上图6-3所示。如果我们将特征通道平均划分成 mmm 组卷积的计算复杂度理论上会降低到之前的 1/m1/m1/m。 6.1.3 深度可分离卷积
如上图6-4所示深度可分离卷积是用于构建轻量化网络的一种常见方法当组数设置为通道数时可以将其视为组卷积的特例。假设我们有一个带有 ddd 个卷积滤波器的卷积层和一个具有 ccc 个通道数的特征图。每个卷积滤波器的大小是 k×kk\times kk×k。对于深度可分离卷积每个 k×k×ck\times k\times ck×k×c 的卷积滤波器首先分成大小为 k×k×1k\times k\times 1k×k×1 的切片然后在每个同道中人对滤波器的每个切片单独进行卷积使用多个 1×11\times 11×1 的滤波器进行维度变换以便最终输出相同的通道。通过使用湿度可分离卷积计算复杂度可以从 O(dk2c)O(dk^2 c)O(dk2c) 降低到 O(ck2)O(dc)O(ck^2)O(dc)O(ck2)O(dc) 。
6.1.4 Bottle-neck设计
Bottle-neck已被广泛用于设计轻量级网络Bottle-neck的核心思想就是运用少量的参数/计算量进行信息压缩。在Bottle-neck的设计中一种常见的方法是压缩检测器的输入层使得检测器在一开始就减少计算量另一种方法是压缩检测器的输出来降低通道数从而使其在后续检测阶段更加高效。
6.1.5 神经架构搜索NAS NAS技术已应用于大规模图像分类、对象检测和图像分割任务神经网络架构搜索主要有三大流程
定义搜索空间执行搜索策略采样网络对采样的网络进行性能评估
定义搜索空间是指待搜索网络结构的候选集合搜索空间大致分为全局搜索空间和局部搜索空间前者代表搜索整个网络结构后者只搜索一些小的结构通过堆叠、拼接的方法组合成完整的大网络执行搜索策略即如何在搜索空间进行选择根据方法不同搜索策略可大致分为1)基于强化学习的方法 2)基于进化算法的方法 3)基于梯度的方法而性能评估即在目标数据集上评估网络结构的性能好坏从而筛选出最优网络结构。
6.2 模型压缩与量化
模型压缩与量化是两种常用于加速CNN模型的技术这其中所涉及到的技术有模型剪枝量化与知识蒸馏。其中模型剪枝是指修剪网络结构或权重从而减小规模的一种技术模型量化则是指将模型一些浮点计算转成低Bit的定点计算的技术它可以有效降低模型计算强度、参数大小和内存消耗而知识蒸馏则是指将大网络所学习到的知识有效传递到小网络中的一种技术。
6.2.1 网络剪枝
网络剪枝最早可以追溯到1980年代而近年来的网络剪枝方法通常采用迭代训练的方式进行剪枝即在每个训练阶段后仅去除一小部分不重要的权重并重复此操作直到模型达到较小量级且精度满足落地要求。由于传统的网络剪枝只是简单的去除一些不重要的权重这可能会导致卷积滤波器连的连接变得稀疏因此不能直接用于压缩CNN模型。而解决这一问题的方案就是移除整个过滤器而不是独立的权重。
6.2.2 模型量化
近年来关于模型量化的工作主要集中在网络二值化其目的是通过将网络的参数权重量化为二进制变量(例如0或1)来进行网络加速以便将一些浮点运算转换为ANDORNOT等逻辑运算。模型参数的二值化可以显著加快其计算速度并减少网络存储从而使得网络更容易地部署在移动设备上。而实现以上思路的一种方法就是用最小二乘法通过二进制变量来近似卷积操作并使用多个二值化卷积的线性组合来不断提高模型精度。此外一些研究人员还进一步开发了用于二值化计算的GPU加速库并取得了更显著的模型加速效果。
6.2.3 知识蒸馏
知识蒸馏是一种将大型网络所学习到的知识有效传递到小网络中使得小网络接近于大网络预测能力的一种技术此处我们将大网络称作“Teacher Net”将小网络称作“Student Net”近年来这一技术成功用于目标检测算法的加速。使用知识蒸馏一个最直接的方法就是使用Teacher Net来指导轻量级的Student Net以便Student Net可以用于检测的加速而知识蒸馏的另一个方法就是对候选区域进行变换以最小化Student Net和Teacher Net之间特征的距离这种方法直接使得模型的检测速度提高了2倍而同时又保持了很高的检测精度。
6.3 数值加速技术
目标检测中常用的数值加速方法主要有以下四种具体实现方法此处就不一一展开了有兴趣的读者可自行搜索资料进行了解。
积分图像加速频域加速矢量量化降阶逼近
7. 提高目标检测模型精度的五大技术
接下来本小节带你简单回顾近几年年目标检测领域中用于提高模型精度的几大技术。
7.1 特征提取网络
特征提取网络(Backbone)对于目标检测模型性能的提升至关重要一些经典的特征提取网络对目标检测任务精度起到了重要的推动作用如AlexNet、VGG、GoogLeNet、ResNet、DenseNet、SENet等等。随着卷积神经网络的发展业界不断涌现出了一些新的特征提取网络性能更是步步攀升。一些先进的特征提取网络被应用于目标检测模型的特征提取Backbone使得目标检测模型的精度与速度不断提升比如STDNDSODTinyDSOD和DenseNet等等。作为当时实力分割的SOTA算法Mask RCNN采用了ResNeXt作为网络的Backbone。
7.2 高效的特征融合
高效的特征表示是提升目标检测性能的关键近年来许多研究学者在特征提取网络中加入一些Trick去提高网络的特征提取能力。而用于提高网络表征能力的两项最重要的方法便是1)高效的特征融合 和2)学习出具备大感受野的高分辨率特征表示。
7.2.1 为什么特征融合如此重要呢
平移不变性和等变性是图像特征表示中的两个重要特性特征的平移不变性有利于图像分类因为它旨在学习高级语义信息而特征的平移等变性更有利于目标定位因为它旨在区分位置和尺度变化。由于目标检测由图像识别和目标定位两个子任务组成因此目标检测算法需要同时学习特征平移不变性和等变性。
近年来特征融合在目标检测中得到了广泛的应用由于CNN模型由一系列卷积和池化层组成因此更深层的特征具有更强的平移不变性但缺乏一定的平移等变性这虽然更有利于物体识别但它对目标定位的精度低。相反较浅层的特征具有更强的平移等变性且包含更多的边缘轮廓信息这虽然有利于目标定位但由于缺乏一定的语义信息而不利于物体分类。因此CNN模型中深层和浅层特征的融合有助于提高特征的平移不变性和等变性这对提高目标检测的精度是非常重要的。
7.2.2 实现高效特征融合的一些方法 在目标检测中实现特征融合首先需要确定要融合哪些特征比如我们可以采取自底向上的特征融合将浅层特征通过跳跃连接融入到深层特征中如上图7-1(a)所示也可以采用自顶向下的特征融合将深层特征通过跳跃连接融入到浅层特征中如上图7-1(b)所示同样也可以采用的跨不同层进行特征融合的方式。确定要融合哪些特征之后再确定融合的方式比如逐元素求和如上图7-1©还是逐元素相乘如上图7-1(d)还是Concat融合如上图7-1(e)所示。
7.2.3 具备大感受野的高分辨率特征表示
特征的感受野和分辨率是CNN模型需要考虑的两个重要因素具有较大感受野的网络能够捕获更大尺度的上下文信息而具备较小感受野的网络可能更专注于图像的局部细节。高分辨率的特征有利于检测小物体由于感受野较小缺乏一定的语义信息因此不利于检测大尺寸物体而为了增大感受野最直接的办法是引入池化层但这会导致特征的分辨率降低而不利于检测小物体。为了解决这一矛盾在增加感受野的同时又丧失特征分辨率空洞卷积是一种比较好的解决办法空洞卷积无需额外的参数和计算成本即可有效提高检测算法的精度。
7.3 目标定位改进
为了改善检测算法对于目标定位的精度近年来出些的一些主要改进方法是1)边框微调2)设计新的损失函数用于更精准的定位。
7.3.1 边框微调技术
边框微调是对检测结果进行后处理。尽管边界框回归已经集成到大多数现代目标检测器中但仍有一些目标无法被Anchor box很好的锚定这导致边框的预测并不精确因此一些研究学者提出边界框微调技术通过将检测结果迭代输入BB回归器直到模型的预测收敛到正确的位置和大小。
7.3.2 改进损失函数以提高定位精度
目标定位被认为是一个坐标回归问题定位损失函数的演变经历了MSE-IOU-GIOU-DIOU-CIOU这一过程
7.4 语义分割促进目标检测
目标检测和语义分割是计算机视觉最基本的两大任务近年来一些研究发现语义分割可以促进目标检测性能的提升。
7.4.1 为什么分割可以改善检测性能呢
分割改善检测性能的原因主要有以下三点
分割可以帮助类别分类分割可以促进目标的精准定位分割可以作为一种上下文信息嵌入到检测网络
7.4.2 分割如何改善检测性能
通过分割改善检测性能主要有两种方法1)学习丰富的特征表示2)多任务损失促进网络的学习
学习丰富的特征表示
最简单的方法就是将分割网络视为固定的特征提取器嵌入到检测算法中这种方式的优点是容易实现缺点是分割网络会带来额外的计算。
多任务损失促进网络学习
另一种方法是在原始检测算法中引入一个额外的分割分支并使用多任务损失函数(分割损失 检测损失)来训练该模型。而在模型推理阶段将分割分支去除即可。这种方法的优点是检测速度不会受到影响缺点是该算法在训练时还需要像素级别的图像标注。在此基础上一些研究人员引入了弱监督学习的思想不基于像素级别的图像标注进行模型训练而是简单地基于边界框标注来训练该分割分支。
7.5 旋转和尺度变化的鲁棒性检测
物体的旋转和尺度变换是目标检测面临的重要挑战CNN的平移不变性使得越来越多人投入到该项挑战的研究当中。
7.5.1 旋转的鲁棒性检测
物体旋转在目标检测任务中非常常见而解决这一问题最直接方法就是数据增强使得任何方向的对象都可以被增强数据很好地覆盖而解决这一问题的另一个方案就是为每个方向训练独立的检测器除了这些方法外近年来还出现了一些新的改进方法。
旋转不变性损失函数旋转校准旋转ROI池化
7.5.2 尺度鲁棒性检测
近年来的一些研究也有从训练和检测阶段两个方面来改善尺度变换的鲁棒性检测
自适应尺度训练方法自适应尺度检测方法
8. 五大应用场景
在本节中我们将回顾过去几年中出现的一些重要检测应用行人检测、人脸检测、文本检测、交通信号和遥感目标检测。
8.1 行人检测
行人检测作为一种目标检测一项重要的应用在自动驾驶、视频监控、刑事侦查等诸多领域受到广泛关注。一些早期的行人检测方法(如HOG检测器和ICF检测器)在特征表示、分类器设计和检测加速方面为目标检测技术奠定了坚实的基础。近年来一些通用的目标检测算法例如Faster RCNN被用于行人检测这极大地推动了行人检测领域的进步。
8.1.1 难点与挑战 行人检测任务中存在的难点与挑战可简要概括为如下四点
小尺寸行人
上图8-1(a)展示了一些小尺寸行人的样例在Caltech数据集中据统计大约15%的行人其高度都小于30个像素点。
困难负样本
如上图8-1(b)所示由于场景图像中一些背景在视觉上与行人非常相似这导致网络很难将负样本进行正确分类往往会将一些很像行人的背景物体预测成为行人。
行人密集且遮挡情况
如上图8-1©所示由于图像中多存在行人密集且行人遮挡情况这导致网络难以精准检测出被遮挡的行人在Caltech数据集中据统计行人未遮挡的个体约占行人总数的29%。
固有的实时检测性能
由于一些自动驾驶和视频监控等应用需要检测算法能够实时提供检测结果以便系统快速做出决断因此视频的实时行人检测至关重要。
8.1.2 解决方法
改善小尺寸行人检测
即使Fast/Faster RCNN算法在当时表现SOTA但由于检测头所提取出的低分辨率特征导致它对小目标的检测效果并不理想。近年来针对这个问题的一些解决方案包括1)特征融合[26]2)引入超高分辨率手工提取的特征[27]以及3)在多个分辨率特征图上集成检测结果[28]。
改善困难负样本检测
近年来对于改善困难负样本的检测方法主要有决策树增强和语义分割[29](作为一种上下文信息引入)此外还引入了跨模态学习的思想通过使用RGB和红外图像的方式来丰富困难负样本的特征[30]。
改善行人密集且遮挡的检测
CNN中深层的特征具有更丰富的语义信息但对密集物体的检测是无效的为此一些研究学者通过考虑目标的吸引和目标周围背景的排斥关系设计了一种新的损失函数[31]。而目标遮挡则是伴随行人密集所出现的另一个问题部分检测器的集成[32]和注意力机制[33] 是解决行人遮挡问题最常见的方法。
8.2 人脸检测
早期的人脸检测(如VJ检测器)极大促进了目标检测的发展其中许多检测思想即使在今天的目标检测也仍然发昏这重要作用。目前人脸检测已应用到各行各业如数码相机中的微笑检测电子商务中的刷脸手机应用中的面部化妆等等。
8.2.1 难点与挑战 人脸检测任务中存在的难点与挑战可简要概括为如下四点
人脸姿态变化大
如上图8-2(a)所示人类脸部可能出现各种变化如表情肤色姿势和运动等变化。
脸部遮挡问题
如上图8-2(b)所示人脸可能被其它物体所遮挡。
多尺度检测问题
如上图8-2©所示在检测大尺寸人脸的时候也经常要检测小尺寸的人脸因此存在多尺度检测挑战。
实时检测要求
移动设备上的人脸检测应用还需要在CPU上实现实时检测的性能。
8.2.2 解决方法
人脸检测加速技术
级联检测[34] 是加速人脸检测最常用的一种方式。其它的一些加速方法则是通过在一张图片上预测出人脸尺度的分布[35]然后在选择某些尺度进行人脸检测。
改善人脸多姿态和脸部遮挡问题
通过估计校准后的参数或使用渐进校准技术可以实现人脸校准人脸校准是改善多姿态人脸检测的主要技术手段。为了改善脸部遮挡后的人脸检测近年来提出了两种方法第一个是结合注意力机制[36]以增强人脸特征第二个则是使用**Detection based on parts[37]**来解决人脸遮挡问题该项技术借鉴了DPM的思想。
改善多尺度人脸检测
改善多尺度人脸检测的解决方法主要是**多尺度特征融合[38]**与多分辨率检测。
8.3 文本检测
文本检测的任务是判断一张图片中是否存在文字若有文字则需要计算机对图片中的文字进行定位并识别文字的具体内容所以文本检测具有两个子任务文本定位与文本识别。文本检测可以帮助视障人士阅读路牌或货币在地理信息系统中门牌号和街道标值的检测与识别也使数字地图的构建变得更加容易。
8.3.1 难点与挑战 文本检测任务中存在的难点与挑战可简要概括为如下四点
字体与语言差异大
如上图8-3(a)所示图像中可能会出现不同字体颜色和不同语言的文本。
文本旋转与透视变化
如上图8-3(b)所示图像中可能会出现具有不同视角和方向的文本。
文本密集
如上图8-3©所示具有大宽高比和高密集文本的文字导致文本检测算法难以精确定位。
字体缺失与模糊 在街景图像中字体的缺失与模糊是经常存在的一个问题。
8.3.2 解决方法
改善文本旋转和透视变化
对此问题最常见的方法是在Anchor box中和通过旋转与透视变化分区[39] 的ROI引入额外的参数。
改善文本密集检测问题
基于分割的方法在密集型检测任务中展现了许多优势为了区分相邻的文本行近年来一些研究学者提出了两种解决方案第一个是段连接方法[40]其中段指的是字符热图而连接指的是两个相邻段之间的连接这表明它们属于同一单词或文本行第二个是增加一个额外的边界检测任务[41] 来帮助分离密集排列的文本。
改善字体缺失与模糊问题
处理字体缺失与模糊问题的最近解决方案是使用单词或句子级别的识别[42]而处理不同字体的文本最有效的方法是使用**合成样本[43]**进行训练。
8.4 交通信号检测
随着自动驾驶技术的发展交通标志和红绿灯的自动检测近年来备受关注。对于像交通灯和交通标志这样的固定场景的标志检测仍然具有不小的挑战。
8.4.1 难点与挑战 交通标志检测任务中存在的难点与挑战可简要概括为如下四点
照明变化
如上图8-4(a)所示当夜晚或者有强烈光照的时候交通标志的检测将变得异常困难。
标志模糊
如上图8-4(b)所示由于车辆在高速行驶的时候所拍摄出来交通标志照片会出现模糊的情况。
天气变化导致问题 如上图8-4©所示在一些雨雪天气车辆所拍摄的交通标志图片质量会大大下降导致检测困难。实时检测
交通标志的检测对于自动驾驶非常重要所以此任务需要有很高的实时性能。
8.4.2 解决方法
在深度学习时代一些经典的检测算法如Faster RCNN和SSD被应用于交通标志/灯光的检测任务而后在这些检测算法的基础上出现的一些新技术如注意力机制[44]和对抗性训练[45]已被用于改进复杂交通环境下的算法检测性能。
8.5 遥感目标检测
近年来随着遥感图像分辨率的提高遥感图像目标检测(如飞机、船舶、油罐等的检测)成为研究热点遥感图像目标检测具有广泛的应用如军事侦查、灾害救援、城市交通管理等等。
8.5.1 难点与挑战 交通标志检测任务中存在的难点与挑战可简要概括为如下四点
遥感图像分辨率巨大
如上图8-5(a)所示由于遥感图像分辨率巨大因此如何快速准确的检测出遥感目标仍然是一个挑战性的问题。
目标遮挡问题
如上图8-5(b)所示超过50%的目标被云雾所遮挡因此目标遮挡问题也是遥感图像目标检测所面临的一个挑战。
域适应问题
由不同传感器所捕获的遥感图像仍然存在很大差异。
8.5.2 解决方法
在2014年RCNN取得巨大成功后深度卷积神经网络很快便应用于遥感图像目标检测之后通用目标检测网络Faster RCNN和SSD的提出吸引了一大批研究学者将越来越多的注意力集中到遥感图像目标检测中。
为了检测不同方向的目标一些研究人员改进了ROI池化层[46]以获得更好的旋转不变性为了提高领域适应性一些研究人员会从**贝叶斯的角度[47]进行检测从而在检测阶段模型会基于测试图像的分布完成自适应更新。此外注意力机制和特征融合策略也被用于改进小目标检测[48]**问题。
9. 七大发展趋势
在过去的十几年里目标检测取得了显着的成就。本文不仅回顾了一些具备里程碑意义的检测算法(例如VJ检测器、HOG检测器、DPM、Faster-RCNN、YOLO、SSD等)、关键技术、加速方法、检测应用、数据集和指标还讨论了检测任务所遇到的几大挑战以及如何解决这几大挑战作了充分讨论。在未来的一些研究工作中目标检测领域可能主要呈现以下七大发展趋势
9.1 轻量型目标检测
为了加快目标检测的推理速度并使其能够在移动设备上快速流畅的运行比如在一些重要的应用增强现实、智能相机、人脸验证等等近年来一些研究学者为此做了大量的努力但目前的一些检测算法速度仍然较慢。这将导致工业界不得不花费更多的资金来购买算力更高的设备去运行该检测算法这在一定程度上阻碍了检测算法的落地进程。因此检测算法在未来的一个发展趋势中轻量快速且高精度是目标检测永恒的主题。
9.2 与AutoML结合的目标检测
近年来基于深度学习的检测算法变得越来越复杂且严重依赖于经验设计为了在使用神经架构搜索NAS技术设计检测算法时减少人为参与(如何设计检测算法的Backbone如何设计先验框等等)未来的一个发展方向就是将目标检测与AutoML技术结合因此AutoML可能是目标检测的未来。
9.3 领域自适应的目标检测
任何目标检测算法的训练过程本质上都可以看成数据在独立同分布(i.i.d.)下的似然估计过程而对于不满足(i.i.d.)的目标检测数据(特别是对于一些现实世界的应用程序)仍然是一个挑战GAN在领域自适应方面已经显示出 了强大的效果这对于目标检测技术来讲应该具有很大的促进作用。
9.4 弱监督目标检测
基于深度学习检测算法的训练通常依赖于大量高质量标注的图像数据集而标准过程通常比较耗时且效率低下。运用弱监督目标检测技术可以使检测算法使用部分边界框标注的数据集进行训练因此弱监督技术对于降低人力成本和提高检测灵活性非常重要。
9.5 小目标检测
在场景图像中检测小目标一直是目标检测领域长期以来所面临的一个挑战小目标检测研究方向的一些潜在应用包括利用遥感图像统计野生动物的数量和检测一些重要军事目标的状态因此如何解决小目标问题一直是研究者研究的热点。
9.6 视频检测
高清视频中的实时目标检测/跟踪对于视频监控和自动驾驶具有重要意义现有的目标检测算法通常是为单张图像的物体检测而设计的而忽略了视频帧与帧之间的相关性通过探索视频帧序列之间的空间和时间相关性来改善检测性能是一个重要的研究方向。
9.7 信息融合目标检测
具有多种数据源(多模态,例如RGB-D图像、3d 点云、激光雷达等)的目标检测对于自动驾驶和无人机应用非常重要一些未解决的问题包括如何将训练好的的检测模型迁移到不同模态的数据中如何通过信息融合以改进检测性能等也是未来发展的一个重要研究方向。
总结
本文介绍了传统目标检测算法到基于深度学习的目标检测算法发展进程详细介绍了基于CNN目标检测算法发展的三条技术路线一阶段、二阶段和Anchor free的检测算法同时分析了为了提高检测模型精度和速度近年来所出现的一些技术及其演变历程最后本文简单介绍了目标检测的几大应用场景及其未来发展的趋势。希望本文能帮助各位读者在目标检测领域构建一个清晰的知识体系架构并在目标检测发展的快车道上尽快找到属于自己的研究方向并有所建树
References [1] Rapid object detection using a boosted cascade of simple features [2] Histograms of oriented gradients for human detection [3] A discriminatively trained, multiscale, deformable part model [4] Rich feature hierarchies for accurate object detection and semantic segmentation [5] Spatial pyramid pooling in deep convolutional networks for visual recognition [6] Fast r-cnn [7] Faster r-cnn: Towards real-time object detection with region proposal networks [8] Feature pyramid networks for object detection [9] Cascade R-CNN: Delving into High Quality Object Detection [10] You only look once: Unified, real-time object detection [11] SSD: Single shot multibox detector [12] YOLO9000: better, faster, stronger [13] Focal loss for dense object detection [14] Yolov3: An incremental improvement [15] Yolov4: Optimal speed and accuracy of object detection [16] Cornernet: Detecting objects as paired keypoints [17] Centernet: Keypoint triplets for object detection [18] Feature selective anchor-free module for single-shot object detection [19] Fcos: Fully convolutional one-stage object detection [20] Soft Anchor-Point Object Detection [21] http://host.robots.ox.ac.uk/pascal/VOC/ [22] http://image-net.org/challenges/LSVRC/ [23] http://cocodataset.org/ [24] https://storage.googleapis.com/openimages/web/index.html [25] https://cloud.tencent.com/developer/article/1624811 [26] Is faster r-cnn doing well for pedestrian detection? [27] What can help pedestrian detection? [28] Pushing the limits of deep cnns for pedestrian detection [29] Pedestrian detection aided by deep learning semantic tasks [30] Learning cross-modal deep representations for robust pedestrian detection [31] Repulsion loss: Detecting pedestrians in a crowd [32] Jointly learning deep features, deformable parts, occlusion and classification for pedestrian detection [33] Occluded pedestrian detection through guided attention in cnns [34] Joint face detection and alignment using multitask cascaded convolutional networks [35] Scale-aware face detection [36] Face attention network: An effective face detector for the occluded faces [37] Faceless-net:Face detection through deep facial part responses [38] Faceless-net:Face detection through deep facial part responses [39] Arbitrary-oriented scene text detection via rotation proposals [40] Deep matching prior network: Towardtighter multi-oriented text detection [41] Multi-oriented scene text detection via corner localization and region segmentation [42] Attention-based extraction of structured information from street view imagery [43] Reading text in the wild with convolutional neural networks [44] Traffic signal detection and classification in street views using an attention model [45] Perceptual generative adversarial networks for small object detection [46] Rotated region-based cnn for ship detection [47] Random access memories: A new paradigm for target detection in high resolution aerial remote sensing images [48] Fully convolutional network with task partitioning for inshore ship detection in optical remote sensing images