基于深度学习的目标检测算法研究
摘 要:基于深度学习的目标检测作为目前的计算机科学的研究热门方向之一,已经涌现了大量优秀的算法。通常来说,基于深度学习的目标检测[1,2]分为两阶段算法和单阶段算法[3]。本文详细介绍了第一个基于深度学习的两阶段目标检测算法R-CNN[4],以及其后续衍生算法包括SPP-Net[5],FastR-CNN[6],FasterR-CNN[7]算法,两阶段算法虽然检测精度高,但是效率较低,因此在2016年诞生了第一个基于深度学习的单阶段目标检测算法YOLO[8],提高了检测效率。本文对YOLO系列算法进行了介绍。
关键词:目标检测;R-CNN;YOLO
Abstract: Object detection based on deep learning, as one of the hot research directions in computer science, has emerged a large number of excellent algorithms. Generally speaking, object detection based on deep learning can be divided into two stage algorithm and one stage algorithm. This paper introduces R-CNN, the first two-stage target detection algorithm based on deep learning, and its subsequent derivative algorithms including SPP-Net,Fast R-CNN and Faster R-CNN. Although the two-stage algorithm has high detection accuracy, it is less efficient. Therefore, YOLO, the first deep-learning-based single-stage target detection algorithm, was born in 2016 to improve detection efficiency. This paper introduces the YOLO series algorithm.
Key word: Object detection,R-CNN,YOLO
1基于深度学习的目标检测
1.1 研究背景
自从目标检测问世之后[9],随着计算机技术的不断发展,如今目标检测已经成为计算机领域的热门话题。2012年以前,目标检测采用基于手工特征的传统算法。自从2012年以来,随着深度学习的不断发展,目标检测已经逐渐转为基于深度学习方法的算法[10]。同时随着移动设备的发展,目标检测算法也逐渐可以移植向移动端。
所谓目标检测就是对输入的图像进行检测,判断图像中是否存在待检测的目标,并对结果进行输出。随着计算机技术的发展,传统的目标检测方法逐渐退出舞台,基于深度学习的目标检测已经成为现在的热点。两阶段的目标检测的思路是先找出输入图像中候选的一些区域,再对区域进行调整分类。而单阶段的目标检测的思路是采用一个网络一步到位,输入图片,输出有哪些物体,物体在什么位置。通常来说,两阶段目标检测和单阶段目标检测各有优劣,两阶段算法具备更高的检测精度,而单阶段算法在效率上更有优势,但是目前各种类型的算法也在相互借鉴,取长补短。
1.2相关概念介绍
基于深度学习的目标检测主要包括训练和测试两个部分。模型训练也就是利用数据集对模型进行训练,使其进行参数学习。
训练阶段的主要过程包括数据预处理、检测网络以及标签匹配与损失计算等部分。其中数据预处理,也就是对数据集进行相应的处理,其目的是为检测网络提供符合要求的输入数据,同时提高数据的多样性,进而也能提高网络的泛化能力。而检测网络也就是对输入的图像进行特征提取,然后根据实际需要进行特征融合,以便于进行后续的分类或者回归网络,最后再执行相关分类和回归任务。此外,根据预测结果和真实值,采用相应的损失函数计算分类或回归任务的损失,然后进行反向传播,进而更新模型中的权重参数信息。
在测试阶段中,使用训练阶段得到的模型,对输入的图像进行目标检测,输出存在的类别以及位置信息等。
2基于深度学习的目标检测框架
2.1两阶段目标检测算法
2.1.1 R-CNN
R-CNN属于是目标检测中第一款两阶段算法,同时也是第一款基于深度学习的目标检测算法。其最终迭代版本——FasterR-CNN也成为了两阶段目标检测算法的典型。
R-CNN是RossGirshick[4]在2014年提出的一种简单并且具有拓展性的目标检测算法。得益于成功应用深度学习,R-CNN算法在检测精度上有了显著提升,这也使得R-CNN算法成为第一个可靠度较高的目标检测算法。相较于传统的目标检测算法,R-CNN算法在候选区域(Region proposal)上提取特征以及数据集较小等方面具有较大优势。对于图像特征的提取,R-CNN算法不再使用SIFT[11,12]、HOG[13]等,而是使用一个CNN[14]网络来自顶而下的提取候选区域的特征,用于目标检测和分割物体;此外当数据集的规模较小时,采用其他辅助任务的预训练迁移学习,性能能够获得很大的提升。
也正是因为RossGirshick将候选区域(Region proposal)上的特征提取和卷积神经网络结合起来,因此该算法被称为R-CNN算法。
R-CNN主要解决了传统检测方法中特征需要人为设定和提取的弊端,改用CNN特征是用深度解决检测问题的先驱。但是R-CNN存在以下几个缺点:
(1)由于R-CNN仍然按照传统目标检测的思路,因此对于每一张图片中由选择性搜索算法得出的约2000个推荐区域都需要经过变形处理后再提取深度特征,这约2000个推荐区域可能出现大量重复区域,产生了大量重复计算,导致对图像的处理效率不高。
(2)此外R-CNN的训练过程不是连续的,分成了两个部分。一个是模型参数的微调,另一个是SVM[15,16]的训练和边界框回归的训练。这样就导致无法共享权重,训练过程不连续。同时训练过程的不连续必然导致特征存储和磁盘空间浪费的情况。
(3)对于每一张图像,R-CNN算法都要计算不同的CNN选框,这也就导致每张图像都要进行独立的处理,彼此之间无法共享CNN特征,进而导致训练效率低下。
2.1.2 SPP-Net
SPP-Net[5]之前的算法都是需要输入固定尺寸的图片。这样当我们希望检测各种大小的图片的时候,需要对输入的图像进行分辨率的相应处理,使图像满足检测网络的输入尺寸要求,这必然会导致一定程度上的图像内容丢失。从而导致最终的检测效果精确度下降。而且,从生理学角度出发,当人类看到一张图像时,主观意识上会从整体出发,而不会进行裁剪(crop)和包裹(warp)操作,所以更有可能的是,我们的大脑通过搜集一些浅层的信息,在更深层才识别出这些任意形状的目标。
2014年,HeK[5]等人提出了SPP-Net解决了R-CNN只能接受固定大小的输入,SSP-Net对R-CNN算法中存在的部分缺点进行了改进,基本思想是:只从整个图像中提取一次特征图(可能是多个尺度)。然后,在特征映射的每个候选窗口上应用空间金字塔池,得到固定长度表示,提取各个推荐区域的特征。相比于R-CNN提取2000个推荐区域,SPP-Net因为耗时的卷积仅应用一次,所以该方法可以以几个数量级的提升更快地运行,这样操作速度提升了100倍左右。但是SPP-Net的分类器还是SVM,不能端到端训练,同时仍未分阶段训练,训练步骤复杂。
对于SPP-Net[17]而言,其流程为将整张图片输入CNN,进行一次特征提取,得到featuremap;在featuremap中找到每个候选框对应的特征区域,即存在2000个特征区域;针对各个特征区域,执行金字塔池空间池化层,提取出固定尺度长度的特征向量,接入全连接层。
简而言之,空间金字塔池化的意义就在于,当一张任意尺寸的图片输入到网络中时,在输出网络,也即是与全连接层连接之前,可以不断地进行卷积和池化操作,而即将连接的时候,则要使用金字塔池化,从而使任意大小的图像都能输出成固定大小的特征向量。
2.1.3 Fast R-CNN
Fast R-CNN 是由 Girshick[6]于 2015 提出的,与 SPP-Net 类似,Fast R-CNN 也在网络结 构中添加了类似 SPP 层的层次结构 ROI Pooling 层,使得通过特征提取可以获得固定尺寸的特 征向量。
据上文,我们发现R-CNN的存在以下几个问题:
(1)网络训练和测试的过程非常繁琐而且不连续,区域提名,特征提取和后续的分类回归任务均不连续,而且过程中产生的数据都需要存放在磁盘中,不但耗费大量的存储,而且读取时也占用大量时间。
(2)需要进行大量重复计算:R-CNN算法虽然不再和传统算法一样采用穷举,但是仍然会生成大量的候选框,对于每一个候选框都需要进行单独的卷积操作,不但计算量大,而且具有大量重复计算。
(3)SVM模型还是线性模型,在一些情况下检测效果较差。
此相比于R-CNN,FastR-CNN在以下这些方面进行了较大的改进:
(1)FastR-CNN仍然使用选择性搜索选取2000个建议框,相比于R-CNN,FastR-CNN不再对每一个regionproposal进行CNN特征提取,而是先将图片输入CNN网络进行特征提取,之后region proposal在特征图上进行截取。这样做的好处是,原来建议框重合部分非常多,卷积重复计算严重,而这里每个位置都只进行了一次卷积计算,大大减少了计算量,提高效率。同时,所有的特征都暂存在显存中,减少了对磁盘的占用,提高性能。
(2)由于建议框大小不一,得到的特征框需要转化为相同大小,这一步是通过ROI Pooling层来实现的(ROI表示region of interest,即目标)
(3)对于R-CNN中的SVM分类和线性回归器,FastR-CNN使用FC来进行物体分类和检测框修正,这样的好处是与特征提取的CNN构成一个整体,大大增强检测任务的一体性,提高了计算效率。
(4)网络最后使用SVD代替全连接层,提高了检测效率。
FastR-CNN作为R-CNN的改进版本,性能和计算效率上都有很大的提升。由于FastR-CNN借鉴了SPP-Net的思想,FastR-CNN的检测精度在SPP-Net的基础上有了很明显的提升,相比于R-CNN来说,更是性能和效率上的显著提升。
2.1.4 Faster R-CNN
2015年Ren[8]等人提出了FasterR-CNN算法,这是对FastR-CNN的进一步改进。针对之前最耗时的选择性搜索,FasterR-CNN提出了一个区域候选网络(RPN)来取代选择性搜索,并且RPN和FasteR-CNN共享特征提取的权值。该算法进一步提高了目标检测的效率[18]。
FastR-CNN虽然提出了ROIPooling的特征提取方式,很好地解决了传统R-CNN中将RegionProposal区域分别输入CNN网络中的弊端。但是始终都是用的传统选择性搜索方式确定RegionProposal,训练和测试时消耗了大量时间在RP搜索上。而FasterR-CNN突破性地使用了RPN网络直接提取出RP,并将其与网络结合,使其更加连续,使得网络的效率提高明显,检测速度有个进一步提升。
Faster R-CNN 网络实际上就是 RPN + Fast R-CNN,也就是两阶段(two-stage),训练时也 是对两个模块分开训练,测试时先由 RPN 生成 RP,再将带有 RP 的 Feature Map 输入进 Fast RCNN 中完成分类和预测框回归任务。
2.2单阶段目标检测算法
2.2.1 YOLO
在2016年,RedmonJ[8]等人创新性地提出YOLO算法,区别与以往任何一种目标检测算法。以往的二阶段检测算法,例如Faster-RCNN,在检测时需要经过两步:边框回归和softmax分类。由于大量预选框的生成,该方法检测精度较高,但实时性较差。
鉴于此,JosephRedmon创新性的提出了通过直接回归的方式获取目标检测的具体位置信息和类别分类信息,极大的降低了计算量,检测的速度有了非常明显的提升,达到了45FPS。YOLO算法是一种典型的单阶段(one-stage)方法,它是YouOnlyLookOnce的缩写,顾名思义,神经网络只需要对图像进行单次处理,就能输出结果[19,20]。
YOLOv1将输入图像划分成S*S的网格,每个网格单元负责检测物体中心在该网格中的目标。每个网格预测B个边界框和它们的置信度,置信度是预测框和真实物体IOU和网格是否包含物体01值之积。每个边界框都包含5个预测值,x,y,w,h,confidence,分别代表中心坐标,宽高和IOU值,这里的坐标是相对于网格左上角的偏移量,宽高是相对于整幅图像的占比。对于单个网格而言,还要预测C个条件概率Pr(Classi|Object),即在一个网格包含一个物体t的前提下,他是某种物体的概率,这个概率属于网格而非预测框。
由于YOLOv1包含了24个卷积层和2个全连接层,通过全连接层来预测图象位置和类别概率,这也导致了YOLOv1的测试输入图像的分辨率必须与训练时的图像分辨率相同。
由于YOLOv1存在定位不准确以及与两阶段(two-stage)方法相比召回率低的缺点,时隔一年,RedmonJ[21]等人提出了YOLOv2算法,从更准确,更快,更多识别三个角度对YOLOv1算法进行了改进,使得该算法能够识别9000中不同的类别,因此该算法被称为YOLO9000.
为了提高准确度,YOLOv2采用了批量归一化技术,批量归一化是一种很有效的正则化手段,加速了收敛速度,提升了收敛效果,加入批归一化之后去除了Dropout,同时提升了精确度[22]。
此外,原来的YOLOv1直接回归预测框的坐标,由于不同物体的尺寸不同,导致YOLOv1在精确定位方面表现较差,在YOLOv2中放弃了全连接层预测边界框而采用了anchorboxes机制来预测边界框,同时将个池化层从网络中移除,使卷积层输出更高的分辨率。
相较于YOLOv1,YOLOv2利用passthrough操作对高低层语义信息进行融合,提高了YOLOv1,YOLOv2效果不佳的小目标检测能力。对大卷积核进行修改,采用小卷积核,降低了计算量。同时改进的位置偏移的策略降低了检测目标框的难度。但是尚未采用残差网络结构。且当存在多物体密集挨着的时候或者小目标的时候,检测效果有待提升。
2018年,RedmonJ[23]等人对YOLOv2进行改进,提出了效果更佳的YOLOv3算法,最大的改进特点包括使用了残差模型Darknet-53,以及为了实现多尺度检测采用了FPN架构。YOLOv3检测算法是将图片输入到darknet53网络中提取特征图,然后借鉴特征金字塔网络思想,将高级和低级语义信息进行融合,在低、中、高三个层次上分别预测目标框,最后输出三个尺度的特征图信息(52×52×75、26×26×75、13×13×75)。其中,不同大小的特征图分别负责检测小目标,中目标和大目标。该版本借鉴了特征金字塔的思想,只不过与普通的FPN相比略有不同。第一:选择融合的层不同。第二:融合方式不同。对于普通FPN而言,是将高级语义的小尺寸特征图上采样后与上一层进行逐像素相加的融合,融合后尺寸大小和通道数保持不变[24]。而对于YOLOv3而言,是将高级语义的小尺寸特征图上采样到SxS后,选择前面的同为SxS的特征图进行通道方向拼接的融合,融合后,尺寸大小不变但通道数为两者之和。YOLOv3基本解决了小目标检测的问题,在速度和精度上实现了较好的平衡[25]。
3 结论
本文首先介绍目标检测的定义和内容,然后分别介绍基于深度学习的目标检测的不同类型算法,包括两阶段和单阶段算法。并通过R-CNN及其系列衍生算法CPP-Net,FastR-CNN,FasterR-CNN这四个方面对目前双阶段目标检测算法进展进行了介绍和分析,通过对YOLO算法的发展对单阶段目标检测算法进行了介绍和分析。目前,尽管基于深度学习的目标检测研究成果层出不穷,但其仍有许多问题等待解决,比如小目标检测,多模态融合等方向。此外,虽然目标检测已经有了非常多的应用,但是轻量化研究仍是研究热门方向之一。
参考文献
[1]涂铭, 金智勇. 深度学习与目标检测工具、原理与算法. [M]. 北京:机械工业出版社,2021.09.
[2]谌,颃, 孙道宗. 基于 CS 优化深度学习卷积神经网络的目标检测算法. [J]. 机床与液压,2020 .
[3]宋晨. 基于注意力机制的单阶段目标检测技术研究[D].南京信息工程大 学,2022.DOI:10.27248/d.cnki.gnjqc.2022.000261..
[4] Girshick, Ross, et al "Rich feature hierarchies for accurate object detection and semantic segmentation." Proceedings of the IEEE conference on computer vision and pattern recognition. 2014.
[5] He K , Zhang X , Ren S , et al Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition: IEEE Transactions on Pattern Analysis & Machine Intelligence, 10.1007/978-3-319-10578-9_23[P]. 2014.
[6] R. Girshick, "Fast R-CNN," 2015 IEEE International Conference on Computer Vision (ICCV), 2015, pp. 1440-1448, doi: 10.1109/ICCV.2015.169.
[7] Ren S , He K , Girshick R , et al Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks[J]. 2015.
[8]J. Redmon, S. Divvala, R. Girshick and A. Farhadi, "You Only Look Once: Unified, RealTime Object Detection," 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016, pp. 779-788, doi: 10.1109/CVPR.2016.91.
[9]唐四春, 袁保宗. 计算机视觉研究进展与展望[J]. 通信学报, 1993, 14(4):10.
[10]付苗苗,邓淼磊,张德贤.基于深度学习和 Transformer 的目标检测算法[J/OL].计算机工程与应用:114[2022-12[11] DoG . Object Recognition from Local Scale-Invariant Features (SIFT) David G. Lowe Presented by David Lee 3/20/2006 Introduction W.
[12] Lowe D G . Distinctive Image Feature from Scale-Invariant Key points[J]. International Journal of Computer Vision, 2004.
[13]P. N. Maraskolhe and A. S. Bhalchandra, "Analysis of Facial Expression Recognition using Histogram of Oriented Gradient (HOG)," 2019 3rd International conference on Electronics, Communication and Aerospace Technology (ICECA), 2019, pp. 1007-1011, doi: 10.1109/ICECA.2019.8821814.
[14] 武昭乾 . 基于卷积神经网络的火控计算机故障预测研究 [D]. 沈阳工业大 学,2022.DOI:10.27322/d.cnki.gsgyu.2022.000351.
[15]张熙,许浩,李沁程.基于 SVM 的飞机驾驶舱头顶板字符识别方法研究[J].电子测量技 术,2020,43(22):82-87.DOI:10.19651/j.cnki.emt.2005171.
[16]张莹, et al"基于特征提取的 SVM 图像分类技术的无人机遥感建筑物震害识别应用研究."
[17]陈庆超,韩松,毛钧毅.采用多层次特征融合 SPP-net 的暂态稳定多任务预测[J].控制与决 策,2022,37(05):1279-1288.DOI:10.13195/j.kzyjc.2020.1568..
[18]殷小芳, 辛月兰, 兰天. 改进 Faster R-CNN 的目标检测算法[J]. 计算机与数字工程, 2021, 49(4):6.
[19]耿创, 宋品德, 曹立佳. YOLO 算法在目标检测中的研究进展[J]. 兵器装备工程学报, 2022, 43(9):12.
[20]梅健强,黄月草.改进 YOLOv1 的视频图像运动目标检测[J].天津职业技术师范大学学 报,2022,32(02):29-35.DOI:10.19573/j.issn2095-0926.202202005.
[21]J. Redmon and A. Farhadi, "YOLO9000: Better, Faster, Stronger," 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2017, pp. 6517-6525, doi: 10.1109/CVPR.2017.690.
[22]刘建国, 罗杰, 王帅帅, 等. 基于 YOLOv2 的行人检测方法研究. [J]. 数字制造科学,2018.
[23] Redmon J , Farhadi A . YOLOv3: An Incremental Improvement[J]. arXiv e-prints, 2018. 01].http://kns.cnki.com/kcms/detail/11.2127.TP.20200922.1816.004.html .
[24]林莉, 姜麟, 张志坚. 基于 AE-Tiny YOLOV3 的小目标检测模型. [J]. 软件导刊,2022.
[25]成瑶. 基于 YOLO v5 和 Deep SORT 的行人跟踪系统研究[D].西北大 学,2022.DOI:10.27405/d.cnki.gxbdu.2022.000776.