邹香玲
(河南广播电视大学,河南 郑州 450000)
随着大数据和人工智能的不断发展,深度学习开始应用到各个领域,比如目标检测、自然语言处理等领域。相对于传统的基于滑动窗口的目标检测,基于深度学习的目标检测使用选择性搜索算法产生候选区域提取特征进行分类和定位,在目标检测精度和速率方面都有很大的提升。
基于深度学习的目标检测已经被广泛应用于地物检测、导航系统、智能视频监控、航空航天、医学、农业、军事等领域。以我们比较熟悉的智慧交通为例,智慧交通是智慧城市的重要组成部分,是未来城市化建设和社会发展的必然趋势。智慧交通的发展在很大程度上提高了城市的公共服务水平,为人们的交通出行带来很大的便利,尤其是在大城市,随着车辆越来越多,交通拥堵甚至瘫痪已经屡见不鲜。智能交通系统能够根据获取的实时交通状况进行分析,针对不同的交通场景进行智能处理,从而对交通进行控制,提升道路的通行能力和服务水平,为大家提供安全的交通环境。目标检测是智能交通系统的关键技术,通过对车辆等目标进行跟踪识别,并进行分析处理,不仅提高了工作效率和道路的利用率,也极大降低了交通事故的发生概率。
目标检测就是找出图像中感兴趣的目标,进行定位和分类。实际环境是比较复杂的,由于各个目标的形状、大小、外观等不同,再加上外界环境因素,如遮挡、光照、天气等的影响,目标检测具有一定的难度,也是计算机视觉领域研究的一个热门方向。
深度学习的概念是2006年由加拿大学者Hinton等人提出的,是通过构建一个多层的神经网络,实现高纬度数据向量建模。相对于传统机器学习,深度学习通过多个非线性隐藏层能够自动提取信息,获得输入特征。因其能够自动提取信息获得输入特征,提高了效率,保证了检测的实时性。目前基于深度学习的网络模型已经被广泛应用到计算机视觉的各个领域,比如目标检测、图像分类、目标分割等。
深度学习与传统计算机视觉的结合,在目标检测的精度和效率上都有很大的提升,使基于深度学习的目标检测算法已成为当前的主流算法。
在传统的目标检测方法中,是基于图片中提出的特征对其进行分类和识别的,从而检测出图片中的目标。目标检测分为三个阶段:区域选择;提取目标特征;根据特征进行分类。区域选择是基于滑动窗口进行的,目标特征通常使用HOG、SIFT等特征进行提取,最后分类使用SVM、AdaBoost等分类器进行分类。
传统的算法可以分为两大类:基于特征的目标检测和基于运动的目标检测。基于特征的目标检测是利用图像处理技术来提取图片内的各种特征(如大小、颜色、形状等)。基于特征进行目标检测,主要的方法有:使用增强HOG功能进行车辆检测[1],以及利用线性SVM分类器来实现[2];利用高斯混合模型来获取车辆特征[3]。基于运动的目标检测是通过逐像素地比较静态背景帧和视频场景的当前帧[4],首先建立背景模型,通过比较当前帧和背景模型找出变化比较显著的区域检测出来。在背景模型的基础上,YangH等人[5]对图片进行分解,实现了车辆实时检测。但是实际应用范围有限。
传统的目标检测算法存在特征构建复杂,检测精度不高,检测速率较低等问题。随着深度学习的提出,人们将深度学习与传统的计算机视觉结合,开始研究基于深度学习的目标检测算法,目前已成为计算机视觉领域的一个研究热点。
传统的目标检测算法由于其约束条件较多,在实际应用中比较有限。基于深度学习的目标检测算法,其自身有较强的学习能力,在实际应用中更为广泛。
基于深度学习的目标检测算法包括Two-Stage目标检测算法和One-Stage目标检测算法两大类。Two-Stage目标检测算法将检测问题分成两个阶段,首先进行候选区域(Region Proposals)的选择,然后对候选区域进行分类和定位,典型算 法 代 表 有RCNN,SPP-Net,Fast RCNN,Faste RCNN等。在One-Stage目标检测算法中只包含一个阶段对目标进行分类和定位,没有候选区域(Region Proposals)的选择这一阶段,典型算法代表 有YOLO、YOLOv2、YOLO9000、YOLOv3、SSD。评判图像目标检测模型的重要标准是检测精度和检测速度。从评判标准来看,这两类算法相比,One-Stage算法速度相对更快,Two-Stage精度相对更高。
RCNN是2013年Girshick[6]等提出的目标检测模型,是将深度学习和传统的计算机视觉相结合的第一代RCNN算法。RCNN在输入图像中使用选择性搜索方法提取出约2000个候选区域,为适应全连接层的输入使用剪裁[7]和变形[8]的方法将提取出的候选区域的尺寸固定为统一大小,然后用SVM进行分类,最后使用NMS进行定位。RCNN相对于传统的目标检测算法虽然提高了精度,由于实际图片大小不一,对图像进行剪裁和变形归一化,会导致信息丢失和位置信息扭曲,影响识别精度。此外,RCNN在对每个候选区域调用CNN进行特征值计算时比较耗时,影响了检测速度。
为解决RCNN中对每个候选区域(候选区域间存在重复)调用CNN提取特征值耗时的缺点,2014年He等人[9]提出了空间金字塔网络(SpatiaPyramid Pooling Network,SPP-Net)检测算法,该模型中引入SSP层,使得能够输入任意尺寸的候选区域,实现了多尺度输入,输入的图像无须经过裁剪和变形,并且只需对图像进行一次CNN运算提取特征,提高了识别精度和检测速率。
2015年,Girshick等 人[10]借 鉴SPP-Net中 的SPP金字塔池化的思想,使用单尺度的ROI Pooling层统一候选区域特征的大小,然后输入全连接层进行目标分类和定位,提出了Fast RCNN算法。该算法采用多任务训练模式,使分类和定位共享卷积特征同时训练,初步实现了端对端的图像目标检测,提高了检测速率和精度。但是,在该算法中前期仍然使用区域选择性搜索算法进行候选区域的选择,比较耗时,成为提升效率的瓶颈。
Faster RCNN在Fast RCNN的基础上使用RPN取代选择性搜索算法来产生候选区域,并引入了先验框。RPN是一个全卷积网络,可以同时在每个位置上预测出目标边界和目标概率并产生高质量候选区域,然后通过ROIpooling将卷积特征变成固定大小的ROI特征输入全连接层进行目标分类和位置回归,实现了端到端的目标检测,极大提高了检测速度,但是对小目标检测效果不好。
RFCN使用最后一层卷积层进行预测,其他所有层移至前面做共享网路,为了防止平移的可变性变差,影响检测精度,引入了位置敏感分数网络层。相对于Faster RCNN,RFCN在检测精度和效率上有了很大提升,RFCN的mAP达到了83.6%,每张图像耗时为170ms。[11]
Mask RCNN算法引入RoIalign层替换Faster RCNN中的RoIpooling层,RoIpooling层主要是提取粗略的空间量化特征并进行四舍五入,四舍五入会丢失一些信息,RoIalign层使用双线性插值方法,可以保留精确的位置数据,提高了检测的性能。
Two-Stage目标检测算法虽然在检测精度上有了很大提高,实现了端到端的目标检测,但是检测效率低,无法满足实时性要求。One-Stage目标检测算法解决了这一弊端。One-Stage目标检测算法简化了检测流程,只包含一个阶段即对目标进行分类和定位,没有候选区域(Region Proposals)的选择这一阶段,极大提高了检测速率。One-Stage目标检测算法包含YOLO[12]系列和SSD[13]系列。
YOLO(You Only Look Once)检测模型是在2016年由Redmon等[12]提出,该模型通过使用S×S的网格图覆盖于输入图像,将输入图像进行网格化,经过一次计算检测,每个网格负责中心在其网格中的目标,并预测边界框的类别信息及置信度,通过设置置信度筛选边界框,置信度低的边界框将被舍弃掉,并对保留下来的置信度高的边界框做NMS处理。在YOLO检测模型中,由于网格的大小和置信度的设置,导致存在目标定位不精准、漏检等问题,尤其对群体目标和小目标检测效果不好。[14]
针对YOLO检测模型存在网格大小固定、目标定位不精准等问题,Redmon等[15]提出了YOLOv2、YOLO9000和YOLOv3的 扩 展 模 型。[14]YOLOv2借鉴了Faster RCNN的锚点思想,使用卷积层替代全连接层进行分类和定位,并对网格的设计做了改进,可以提供不同尺寸的boxes,提高了图像的分辨率,提高了检测小目标的性能。在YOLOv2的基础上,YOLO9000提出了目标分类和检测的联合训练方法,在检测种类、速度等方面有很大提升,其检测种类超过9000个。YOLOv3算法借鉴了残差网络中跳跃连接的思路,构建了53层基准网络,对多尺度目标采用3个不同尺度的特征图进行目标检测,对小目标的检查提高了性能,用logistic代替softmax分类器预测类别,可同时预测多个类别,检测多标签目标对象。[16]
SSD算法是2016年由Liu等人[13]提出来的。结合了Mask RCNN检测精度高和YOLO检测速度快的优点,同时保证了检测精度和速度。SSD采用回归的思想,同时借鉴了Faster RCNN中anchor的思想,使用特征金字塔进行分类和定位,对不同尺寸的特征图采用不同的预测。由于检测目标大小不一,对大小不同的目标进行不同检测。SSD存在同一目标被重复检测的问题,不同层分别检测所在层的目标,没有考虑层间的关联性,所以对小目标的检测效果不好。RSSD算法增加了不同层间特征的关联性,加强了上下文信息之间的联系,解决了SSD中同一目标被重复检测的问题,改善了小物体的检测效果。SSD构建金字塔时直接从高层特征开始,丢失了低层特征映射的机会,而FPN金字塔将高、低层特征融合在一起利用,提高了准确度。FPN算法在小目标的检测性能上有很大的提高。表1展示了基于深度学习的目标检测算法的检测精度和速度,One-Stage算法检测速率比较高,Two-Stage算法检测速率相对较低,但是检测精度较高。
目标检测算法具有很强的通用性,在各个领域得到了广泛应用,对于数据不丰富的项目采用传统的目标检测算法可能会取得较好的效果,对数据量较大的项目可以采用基于深度学习的目标检测算法,提高检测精度和速率。Two-Stage算法首先利用选择性搜索算法产生候选区域,然后利用卷积神经网提出特征进行分类和定位,该类算法需要对每个候选区域进行计算,提高了检测精度,但是检测速度较慢;One-Stage算法利用回归模型进行分类和定位,不产生候选区域,提高了检测速度,但是检测精度有所下降。相对于传统的目标检测算法,虽然基于深度学习的目标检测算法在检测精度和速度上都有了很大的提高,但是还有改进空间,需要在提升检测精度和速度的同时降低复杂度提高检测性能。目标检测算法普适性较差,对小目标检测不理想,由于小目标中包含的图像像素少,特征信息不明显,易出现漏检或误检。因此,对复杂场景下的小目标检测研究具有很大的挑战。1.改进目标检测算法提高对小目标的检测效率,使其具有较高的检测精度和速度。2.未来小目标检测可应用到各个领域,如智能医疗等,但是对小目标的检测,没有大规模的小目标数据集做支撑,需要构建大规模的小目标数据集。3.由于各个领域目标检测环境的复杂性和可变性,未来小目标的检测,要能适应场景的变化,增强其迁移性。
目标检测是当前计算机视觉领域的一个重要的研究分支,具有很大的挑战性和广阔的应用前景。目标检测广泛应用于医疗、工业、农业、航空航天等领域。本文分析总结了现有的目标检测算法的不足和改进等,对未来的发展趋势进行了展望,对小目标的检测研究将是未来的一个研究方向。