目标检测#第五期CV竞赛学习#Datawhale AI夏令营

第二期的时候没报上CV的课程,等了三期终于在第五期又有CV夏令营了~

本期的课程内容是目标检测

因为几年前曾经接触过目标检测,因此这篇博客准备写一下目标检测

参考文章:​

Object Detection in 20 Years:A Survey  

https://levir.buaa.edu.cn/publications/od_survey.pdf

目标检测究竟发展到了什么程度?| 目标检测发展22年 

https://zhuanlan.zhihu.com/p/382702930

yolo系列的发展史

http://t.csdnimg.cn/kWH1l

1.背景

目标检测领域发展至今已有二十余载,从早期的传统方法到如今的深度学习方法,精度越来越高的同时速度也越来越快,这得益于深度学习等相关技术的不断发展。

目标检测任务是找出图像或视频中人们感兴趣的物体,并同时检测出它们的位置和大小。不同于图像分类任务,目标检测不仅要解决分类问题,还要解决定位问题,是属于Multi-Task 的问题。

作为计算机视觉的基本问题之一,目标检测构成了许多其它视觉任务的基础,例如实例分割,图像标注和目标跟踪等等;从检测应用的角度看:行人检测、面部检测、文本检测、交通标注与红绿灯检测,遥感目标检测统称为目标检测的五大应用。

2.目标检测发展脉络

目标检测的发展脉络可以划分为两个周期:传统目标检测算法时期(1998年-2014年)和基于深度学习的目标检测算法时期(2014年-至今)。而基于深度学习的目标检测算法又发展成了两条技术路线:Anchor based方法(一阶段,二阶段)和Anchor free方法。下图展示 了从2001年至2021年目标检测领域中,目标检测发展路线图。

 2.1 传统目标检测算法

不同于现在的卷积神经网络可以自动提取高效特征进行图像表示,以往的传统目标检测算法主要基于手工提取特征。传统检测算法流程可概括如下:

 1. 选取感兴趣区域,选取可能包含物体的区域

 2. 对可能包含物体的区域进行特征提取

 3. 对提取的特征进行检测分类

 2.1.1 局限性

(因为目前基于深度学习的目标检测算法已经成为主流,因此这里只总结一下传统方法的局限性)

基于手工提取特征的传统目标检测算法主要有以下三个缺点:

1. 识别效果不够好,准确率不高

2. 计算量较大,运算速度慢

3. 可能产生多个正确识别的结果

 2.2 Anchor-Based中的Two-stage目标检测算法

基于手工提取特征的传统目标检测算法进展缓慢,性能低下。直到2012年卷积神经网络(Convolutional Neural Networks, CNNs)的兴起将目标检测领域推向了新的台阶。基于CNNs 的目标检测算法主要有两条技术发展路线:anchor-based和anchor-free方法,而anchorbased方法则包括一阶段和二阶段检测算法(二阶段目标检测算法一般比一阶段精度要高,但一阶段检测算法速度会更快)。

 二阶段检测算法主要分为以下两个阶段

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由Ross Girshick于2014年提出,RCNN首先通过选择性搜索算法Selective Search从一组对象候选框中选择可能出现的对象框,然后将这些选择出来的对象框中 的图像resize到某一固定尺寸的图像,并喂入到CNN模型(经过在ImageNet数据集上训练过 的CNN模型,如AlexNet)提取特征,最后将提取出的特征送入到分类器来预测该对象 框中的图像是否存在待检测目标,并进一步预测该检测目标具体属于哪一类。

 【性能】 RCNN算法在VOC-07数据集上取得了非常显著的效果,平均精度由33.7%(DPMV5, 传统检测的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提出了一种空间金字塔池化层(Spatial Pyramid Pooling Layer, SP P)。它的主要思路是对于一副图像分成若干尺度的图像块(比如一副图像分成1份,4份,8 份等),然后对每一块提取的特征融合在一起,从而兼顾多个尺度的特征。SPP使得网络在 全连接层之前能生成固定尺度的特征表示,而不管输入图片尺寸如何。当使用SPPNet网络 用于目标检测时,整个图像只需计算一次即可生成相应特征图,不管候选框尺寸如何,经过 SPP之后,都能生成固定尺寸的特征表示图,这避免了卷积特征图的重复计算。

【性能】 相比于RCNN算法,SPPNet在Pascal-07数据集上不牺牲检测精度(VOC-07, mAP=59.2%)的情况下,推理速度提高了20多倍。

【不足】 和RCNN一样,SPP也需要训练CNN提取特征,然后训练SVM分类这些特征,这需要巨大的存储空间,并且多阶段训练的流程也很繁杂。除此之外,SPPNet只对全连接层进行微调,而忽略了网络其它层的参数。

为了解决以上存在的一些不足,2015年R. Girshick等人提出Fast RCNN

2.2.3 Fast RCNN

 论文链接:

https://openaccess.thecvf.com/content_iccv_2015/papers/Girshic k_Fast_R-CNN_ICCV_2015_paper.pdf

代码链接:

https://github.com/rbgirshick/fast-rcnn

【简介】 Fast RCNN[6]网络是RCNN和SPPNet的改进版,该网路使得我们可以在相同的网络配置下同时训练一个检测器和边框回归器。该网络首先输入图像,图像被传递到CNN中提取特征,并返回感兴趣的区域ROI,之后再ROI上运用ROI池化层以保证每个区域的尺寸相同,最后这些区域的特征被传递到全连接层的网络中进行分类,并用Softmax和线性回归层同时返回边界框。

【性能】 Fast RCNN在VOC-07数据集上将检测精度mAP从58.5%提高到70.0%,检测速度比RCNN提高了200倍。

【不足】 Fast RCNN仍然选用选择性搜索算法来寻找感兴趣的区域,这一过程通常较慢,与RCNN不同的是,Fast RCNN处理一张图片大约需要2秒,但是在大型真实数据集上,这种速度仍然不够理想。

那么问题来了: “我们可以使用CNN模型来直接生成候选框吗?”,基于此,Faster RCNN的提出完美回答这一问题。

2.2.4 Faster 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-07,VOC-12和COCO数据集上实现了SOTA精度,其中COCO mAP@.5=42.7%, COCO mAP@[.5,.95]=21.9%, VOC07 mAP=73.2%, VOC12 mAP=70.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@.5=59.1%, COCO mAP@[.5,.95]=36.2%),再次成为当前的SOTA检测算法。此后FPN成为了各大网络(分类,检测与分割)提高精度最重要的技术之一。

2.3 Anchor-based中的one-stage目标检测算法

一阶段目标检测算法不需要region proposal阶段,直接产生物体的类别概率和位置坐标值,经过一个阶段即可直接得到最终的检测结果,因此有着更快的检测速度。

2.3.1 YOLO v1

【简介】 YOLO v1是第一个一阶段的深度学习检测算法,其检测速度非常快,该算法的思想就是将图像划分成多个网格,然后为每一个网格同时预测边界框并给出相应概率。例如某个待检测目标的中心落在图像中所划分的一个单元格内,那么该单元格负责预测该目标位置和类别。

【性能】 YOLO v1检测速度非常快,在VOC-07数据集上的mAP可达52.7%,实现了155 fps的实时性能,其增强版性能也很好(VOC-07 mAP=63.4%, 45 fps, VOC-12 mAP=57.9%),性能要优于DPM和RCNN。

【不足】 相比于二阶段的目标检测算法,尽管YOLO v1算法的检测速度有了很大提高,但精度相对教低(尤其是对于一些小目标检测问题)。

2.3.2 SSD

【简介】 SSD算法的主要创新点是提出了Multi-reference和Multi-resolution的检测技术。SSD算法和先前的一些检测算法的区别在于:先前的一些检测算法只是在网络最深层的分支进行检测,而SSD有多个不同的检测分支,不同的检测分支可以检测多个尺度的目标,所以SSD在多尺度目标检测的精度上有了很大的提高,对小目标检测效果要好很多。

【性能】 相比于YOLO v1算法,SSD进一步提高了检测精度和速度(VOC-07 mAP=76.8%, VOC-12 mAP=74.9%, COCO mAP@.5=46.5%, mAP@[.5,.95]=26.8%, SSD的精简版速度达到59 fps)。

2.3.3 YOLO v2

【简介】 相比于YOLO v1,YOLO v2在精度、速度和分类数量上都有了很大的改进。在速度上(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

【简介】 尽管一阶段检测算推理速度快,但精度上与二阶段检测算法相比还是不足。RetinaNet[13]论文分析了一阶段网络训练存在的类别不平衡问题,提出能根据Loss大小自动调节权重的Focal loss,代替了标准的交叉熵损失函数,使得模型的训练更专注于困难样本。同时,基于FPN设计了RetinaNet,在精度和速度上都有不俗的表现。

【性能】 RetinaNet在保持高速推理的同时,拥有与二阶段检测算法相媲美的精度(COCO mAP@.5=59.1%, mAP@[.5, .95]=39.1%)。

2.3.5 YOLO v3

【简介】 相比于YOLO v2,YOLO v3将特征提取网络换成了DarkNet53,对象分类用Logistic取代了Softmax,并借鉴了FPN思想采用三条分支(三个不同尺度/不同感受野的特征图)去检测具有不同尺寸的对象。

【性能】 YOLO v3在VOC数据集,Titan X上处理608×608图像速度达到20FPS,在COCO的测试数据集上mAP@0.5达到57.9%。其精度比SSD高一些,比Faster RCNN相比略有逊色(几乎持平),比RetinaNet差,但速度是SSD、RetinaNet和Faster RCNN至少2倍以上,而简化后的Yolov3 tiny可以更快。

【不足】 YOLO v3采用MSE作为边框回归损失函数,这使得YOLO v3对目标的定位并不精准,之后出现的IOU,GIOU,DIOU和CIOU等一系列边框回归损失大大改善了YOLO v3对目标的定位精度。

2.3.6 CornerNet

【简介】以往方法主要使用锚框提供分类和回归参考。物体经常在数量、位置、尺度、比例等方面表现出变化。为了实现高性能,不得不采取设置大量参考框以更好地匹配真实标注的路径。然而,这会导致网络面临更严重的类别不平衡、众多手工设计的超参数和较长的收敛时间。为解决这些问题,H. Law等人抛弃了先前的检测范式,将任务视作关键点(边界框的角点)预测问题。获得关键点后,利用额外的嵌入信息解耦并重组角点以形成边界框。

【性能】 CornerNet在当时超越了多数一阶段检测器(COCO mAP@.5=57.8%)。

2.3.7 YOLO v4

【简介】 相比于YOLO v4,YOLO v4在输入端,引入了Mosaic数据增强、cmBN、SAT自对抗训练;在特征提取网络上,YOLO v4将各种新的方式结合起来,包括CSPDarknet53,Mish激活函数,Dropblock;在检测头中,引入了SPP模块,借鉴了FPN+PAN结构;在预测阶段,采用了CIOU作为网络的边界框损失函数,同时将NMS换成了DIOU_NMS等等。总体来说,YOLO v4具有极大的工程意义,将近年来深度学习领域最新研究的tricks都引入到了YOLO v4做验证测试,在YOLO v3的基础上更进一大步。

【性能】 YOLO v4在COCO数据集上达到了43.5%AP(65.7% AP50),在Tesla V100显卡上实现了65 fps的实时性能,在COCO检测数据集上YOLO v4和其它SOTA检测算法的性能对比。

2.3.8 YOLO V5

【简介】 目与YOLO V4有点相似,都大量整合了计算机视觉领域的State-of-the-art,从而显著改善了YOLO对目标的检测性能。相比于YOLO V4,YOLO V5在性能上稍微逊色,但其灵活性与速度上远强于YOLO V4,而且在模型的快速部署上也具有极强优势。YOLOv5发布于2020年,但是没有论文,是以工程的方式发布的,至今在工业界都还有很多应用。

【性能】 在COCO检测数据集上YOLO v5和其它SOTA检测算法的性能对比。

2.3.9 DETR

【简介】近年来,Transformer深刻影响了整个深度学习领域,尤其是在计算机视觉领域。Transformer摒弃了传统的卷积运算,仅依赖注意力机制计算,以克服CNN的局限性并获得全局范围的感受野。2020年,N. Carion等人提出了DETR,他们将物体检测视为集合预测问题,并提出了基于Transformer的端到端检测网络。至此,物体检测进入了一个新时代,无需使用锚框或锚点即可进行检测。随后,X. Zhu等人提出了Deformable DETR,以解决DETR收敛时间长和小物体检测性能有限的问题。

【性能】 它在MSCOCO数据集上达到了最先进的性能(COCO mAP@.5=71.9%)。

2.3.10 YOLO V6

【简介】美团视觉智能部研发的一款目标检测框架,致力于工业应用,发表与2022年。

【论文摘要】多年来,YOLO系列一直是高效物体检测的事实上的工业级标准。YOLO社区以压倒性的优势丰富了它在众多硬件平台和丰富场景中的应用。在这份技术报告中,我们努力把它的极限推到一个新的水平,以坚定不移的心态向行业应用迈进。考虑到现实环境中对速度和准确性的不同要求,我们广泛地研究了来自工业界或学术界的最新的物体检测进展。具体来说,我们大量吸收了最近的网络设计、训练策略、测试技术、量化和优化方法的思想。在此基础上,我们整合了我们的想法和实践,建立了一套不同规模的可部署的网络,以适应多样化的用例。在YOLO作者的慷慨许可下,我们将其命名为YOLOv6。我们也表示热烈欢迎用户和贡献者的进一步改进。对于性能的表现,我们的YOLOv6-N在COCO数据集上达到了35.9%的AP,在NVIDIA Tesla T4 GPU上的吞吐量为1234 FPS。YOLOv6-S以495 FPS的速度达到了43.5%的AP,超过了其他相同规模的主流检测器(YOLOv5-S、YOLOX-S和PPYOLOE-S)。我们的量化版本YOLOv6-S甚至在869 FPS时带来了新的最先进的43.3%AP。此外,YOLOv6-M/L也比其他具有类似推理速度的检测器取得了更好的准确性表现(即49.5%/52.3%)。我们仔细进行了实验来验证每个组件的有效性。

2.3.11 YOLO V7

 【简介】 YOLOv7也是2022年发布的,是在v5的基础上改进了网络结构,使网络更加高效,发布时间与v6前后相距不久。其仍然是anchor-based的预测形式,没有做大改。yolov7的主要创新点有三个,分别是E-ELAN网络、Planned re-parameterized convolution和标签分配方式。

2.3.12 YOLO V8

【简介】YOLOv8发布于2023年,和YOLOv5一样都是Ultralytics创建并维护,也没有形成论文。但其readme里面链接了参考文档(https://docs.ultralytics.com/models/yolov8/),该文档非常丰富,包含如何快速运行、训练、验证、预测及导出其他格式模型,还包含除检测任务的其他任务的扩展如:分割、分类和姿态估计,同时也包含YOLO系列其他模型的汇总介绍。

3. 常用数据集及评价指标

3.1 常用数据集

3.1.1 四大公共数据集

Pascal VOCILSVRCMS-COCO,和OID数据集是目标检测使用最多的四大公共数据集:

  • PASCAL VOC数据集详细介绍可参考:https://arleyzhang.github.io/articles/1dc20586/   PASCAL视觉对象类别(VOC)挑战赛(2005年至2012年)[54, 55]是早期计算机视觉领域最重要的竞赛之一。在物体检测中,主要使用的Pascal-VOC版本有VOC07和VOC12,前者包含5千张训练图像及1万2千个标注对象,后者包含1万1千张训练图像及2万7千个标注对象。这两个数据集共标注了20种生活中常见的物体,如“人”、“猫”、“自行车”、“沙发”等。
  • ILSVRC数据集详细介绍可参考:https://cloud.tencent.com/developer/article/1747599  ImageNet大规模视觉识别挑战赛(ILSVRC)[56]极大地推动了通用物体检测技术的进步。ILSVRC从2010年至2017年每年举办,其中包含使用ImageNet图像的检测挑战。ILSVRC检测数据集包含200类视觉对象,其图像/对象实例的数量比VOC数据集高出两个数量级。
  • MS-COCO数据集详细介绍可参考:https://blog.csdn.net/qq_41185868/article/details/82939959   MS-COCO是目前最具挑战性的物体检测数据集之一。自2015年起,基于MS-COCO数据集的年度竞赛开始举行。它拥有的物体类别数量虽少于ILSVRC,但包含更多的对象实例。例如,MS-COCO-17包含16万4千张图像和89万7千个来自80个类别的标注对象。与VOC和ILSVRC相比,MS-COCO最大的进步在于除了边界框注释之外,每个对象还进一步进行了实例分割标注,以辅助精确定位。此外,MS-COCO包含更多小物体(面积小于图像总面积的1%)和密集分布的物体。就像其时代的ImageNet一样,MS-COCO已成为物体检测社区的实际标准。
  • Open Images(QID)数据集详细介绍可参考:https://bbs.easyaiforum.cn/thre  2018年,Open Images检测挑战问世,规模空前,紧跟MS-COCO的脚步。Open Images包含两项任务:1)标准物体检测,2)视觉关系检测,即检测特定关系中的配对物体。对于标准检测任务,数据集包含1910万张图像,拥有1544万个标注边界框,覆盖600个物体类别。

3.2 常用评价指标

目标检测常用的评价指标有:交并比准确率精度召回率FPRF1-ScorePR曲线-AP值ROC曲线-AUC值,和mAP值FPS

如何评估检测器的准确性?这一问题在不同的时间可能有不同的答案。在早期的检测研究中,没有广泛接受的检测精度评估指标。例如,在行人检测的早期研究中,常用“漏检率与每窗口假阳性(FPPW)”作为指标。然而,每窗口的测量方式可能存在缺陷,无法准确预测全图性能。2009年,Caltech行人检测基准被引入,从此评估指标从FPPW转变为每图像假阳性(FPPI)。

近年来,物体检测中最常用的评估指标是“平均精度(Average Precision, AP)”,这一指标最初在VOC2007中被引入。AP定义为在不同召回率下检测精度的平均值,通常按类别特定的方式进行评估。所有类别上的平均AP(mean Average Precision, mAP)通常被用作性能的最终度量标准。为了衡量物体定位的准确性,使用预测框与真实标注框之间的交并比(Intersection over Union, IoU)来判断其是否大于一个预设的阈值,比如0.5。如果大于这个阈值,则认为物体被“检测到”,否则视为“漏检”。由此,0.5-IoU mAP成为了物体检测事实上的评估标准。

2014年后,随着MS-COCO数据集的引入,研究人员开始更加重视物体定位的准确性。MS-COCO不再使用固定的IoU阈值,而是将AP在0.5到0.95之间的多个IoU阈值上进行平均,这一做法鼓励了更精确的物体定位,并可能对某些实际应用(例如,想象一个机器人试图抓取扳手的情景)具有重要意义。

4. 存在的六大难点与挑战

每一个检测任务都有其特有的检测难点,比如背景复杂,目标尺度变化大,颜色对比度低等挑战,这就导致某个检测算法在检测任务A上可能表现SOTA,但在检测任务B上表现得可能不尽如人意。因此,分析研究每一个检测任务存在的难点与挑战至关重要,这有利于我们针对不同的检测难点设计出不同的技术以解决该项问题,从而使得我们提出的算法能够在特定的任务上表现SOTA。

我们对大部分检测任务加以分析,概括出了以下几点在检测任务可能存在的检测难点与挑战:

  1. 待检测目标尺寸很小,导致占比小,检测难度大
  2. 待检测目标尺度变化大,网络难以提取出高效特征
  3. 待检测目标所在背景复杂,噪音干扰严重,检测难度大
  4. 待检测目标与背景颜色对比度低,网络难以提取出具有判别性的特征
  5. 各待检测目标之间数量极度不均衡,导致样本不均衡
  6. 检测算法的速度与精度难以取得良好平衡

以上六大检测难点基本覆盖检测任务中存在的所有挑战,对于我们所做过的每一份检测任务数据集,都可以在上述找到相应难点与挑战,并针对具体的检测难点提出相应的解决方案!

(未完待续……)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值