1.1 目标检测发展简史
在深度学习时代到来之前,研究者们对目标检测的研究路线基本可以划分为两个阶段,先从图像中提取人工视觉特征(如HOG),再将这些视觉特征输入一个分类器(如支持向量机)中,最终输出检测结果。
以现在的技术眼光来看,这种做法十分粗糙,但是已经基本能够满足那时实时检测的需求,并且已经在一些实际场景的业务中有所应用,但那主要得益于人体结构本身不算太复杂、特点鲜明,尤其是行走中的人的模式几乎相同,鲜有“奇行种”。不过,想做出一个可靠的通用目标检测器,识别更多、更复杂的物体,则存在很大的困难,在作者看来,造成这种困难的最根本的原因是我们难以用一套精准的语言或数学方程来定义世间万物。显然,要检测的物体种类越多,模型要学会的特征就越多,仅靠人的先验所设计出的特征算子似乎无法满足任务需求了。
直到2014年,一道希望之光照射进来,拨开了重重迷雾。
2014年,著名的R-CNN[4]问世,不仅大幅提升了当时的基准数据集PASCAL VOC[12] 的mAP指标,同时也吹响了深度学习进军基于视觉的目标检测(object detection)领域的号角。从整体上来看,R-CNN的思路是先使用一个搜索算法从图像中提取出若干感兴趣区域(region of interest,RoI),然后使用一个卷积神经网络(convolutional neural network,CNN)分别处理每一个感兴趣区域,提取特征,最后用一个支持向量机来完成最终的分类,如图1-1所示。
图1-1 R-CNN检测流程
通常,搜索算法会先给出约2000个感兴趣区域,然后交给后续的CNN去分别提取每一个感兴趣区域的特征,不难想象,这一过程会十分耗时。为了解决这一问题,在R-CNN工作的基础上,先后诞生了Fast R-CNN[13]和Faster R-CNN[14]这两个工作,如图1-2所示,迭代改进了R-CNN这一检测框架的各种弊端,不断完善R-CNN “先提取,后识别”的检测范式。这一检测范式后被称为“两阶段”(two-stage)检测,即先提取出可能包含目标的区域,再依次对每个区域进行识别,最后经过处理得到最终的检测结果。
图1-2 R-CNN家族图谱
而在2015年,又一个革命性的工作—YOLO(You Only Look Once)[1]问世。不同于R-CNN的两阶段检测范式,YOLO的作者团队认为,提取候选区域(定位)和逐一识别(分类)完全可由一个单独的网络来同时完成,无须分成两个阶段,不需要对每一个特征区域进行依次分类,从而能够减少处理过程中的大量冗余操作,如图1-3所示。
图1-3 YOLOv1检测流程
显然,在这一技术理念下,YOLO只需对输入图像处理一次,即可获得最终的检测结果,因而YOLO在检测速度上具有天然的优势。YOLO所采用的这种端到端的检测方式将定位和分类耦合在一起,同步完成,因此,这类工作被称为“单阶段”(one-stage)检测。显然,相较于以R-CNN为代表的两阶段检测范式,YOLO这类单阶段检测框架理应更加高效、简洁。
在这样的设计理念下,YOLO凭借着其在TITAN X型号的GPU上以每秒处理超过40张图像的检测速度(即40 FPS)超越了当时所有的通用目标检测器。尽管YOLO的检测性能要略逊于当时最新的Faster R-CNN检测器,但其显著的速度优势使其成为一个可以满足实时检测需求的通用目标检测器,许多研究者看到了这一检测器背后所蕴含的性能潜力和研究价值。此后,YOLO以其在检测速度和模型架构上的显著优势一鸣惊人,掀开了目标检测领域的新篇章。
也正是在YOLO框架大火之后,目标检测领域正式诞生了以下两大流派:
● 以R-CNN为代表的two-stage流派;
● 以YOLO为首的one-stage流派。
通常情况下,two-stage框架往往检测精度较高而检测速度却较慢,one-stage框架则恰恰相反,往往检测精度较低但检测速度较快。在很多计算机视觉任务中,精度和速度总是矛盾的,因而促使研究者尝试从二者的矛盾中寻求一个较为平衡的解决方案。随着后续研究者们的不断思考、探索和尝试,如今的one-stage检测框架几乎兼具了性能和速度两方面的优势,实现了极为出色的性能上的平衡。
纵观科学发展史,“大道至简”和“奥卡姆剃刀”原理往往是有效的。也许正因如此,广大研究者和工程师才更加青睐one-stage框架,投入更多的科研精力和资源去优化这一框架,使其得到了长足的发展。这一点从每年发表在计算机视觉顶级会议的目标检测工作中可见一斑,one-stage框架相关工作占据了很大的比重,如SSD[16]、RetinaNet[17]和FCOS[18]等。近来,这一套框架又由方兴未艾的基于Transformer[5]的DETR系列[6,7]做了一次大幅度的革新。可以认为,目标检测的one-stage框架以其更简洁、更具潜力等优势已经成为这一领域的主流框架。
因此,在入门目标检测领域时,学习one-stage框架相关工作是更为契合主流的选择。
注意:
尽管基于深度学习的方法成为了这一领域的主流,但我们不难发现,基于深度学习的方法仍旧延续着传统方法的工作框架,即先提取特征,再进行分类和定位。只不过这两部分现在都被神经网络代替了,无须人工设计。因此,虽然传统计算机视觉方法在许多方面被基于深度学习的方法所超越,但其思想仍值得我们借鉴和思考。