安徽理工大学电气与信息工程学院 杨高坤
目前,随着目标检测算法取得的重大突破,目标检测技术已经代替了很多枯燥简单的劳动,并且取得了很好的效果。其中主要分为基于备选框并对备选框进行判断的双阶段的目标检测方法,还有一种是把输出框和分类作为一个回归问题的单阶段目标检测方法,总结了单阶段法目标检测的各种特点及优缺点。最后针对不同的算法和改进的方法进行总结。
Pierre S.等人提出了早期的单阶段目标检测模型Overfeat,该模型将图像分类、定位、检测三个任务放到一个框架中。由于Overfeat框架需要大量的已标记的样本,并且检测的精度不是很高,所以Joseph Redmon等人提出了YOLO框架,YOLO框架的缺点也比较明显,比如小目标难以检测、召回率低、精确性低等等问题,所有又有了后面的YOLOv2、YOLOv3、YOLOv4、SSD等其它的框架。
图1 YOLO网络结构
YOLO将物体检测作为回归问题求解。
YOLO模型采用回归分析的方法计算出多个滑动窗口的位置和置信度。YOLO网络结构如图1所示。
YOLO的优点:(1)对比其他的双阶段法目标检测,YOLO的检测速度相当的快。(2)不同于其他的目标检测算法,YOLO的输入是一整张图片,在检测时很好的利用了整体的信息,不容易在背景上预测出错误的物体信息。(3)通用性强,不仅可以检测动物、植物等,对于艺术品也一样的适用。
YOLO的缺点:(1)在进行卷积与池化的过程中,特征丢失比较严重就会导致精度下降。(2)因为一个grid cell只能预测2个物体,因此对小物体的检测效果不好。
YOLOv2的出现弥补了YOLOv1的一些缺点,在保持检测速度的同时提高检测的精度和定位准确度,改进如下:
(1)批量规范化:对数据进行预处理,对每一层数据进行加工。
(2)高分辨率分类器:第一步利用Image net训练集进行高分辨率的预训练,而且这种方法对于精度的提高是很明显的。
(3)采用了新网络:YOLOv2包含了19个卷积层和5个最大池化层。
(4)维度聚类:还是针对锚定框,发现锚定框的个数为5时IOU的匹配度最高。
(5)多尺度预测:通过不同的分辨率图片来训练提高网络的适应性。
相对于YOLO算法,SSD有两点改进:
图2 SSD框架与YOLO框架对比图
图3 YOLOv3网络结构图
图4 YOLOv4网络结构图
(1)SSD提取了不同尺度的特征图来做检测,利用特征图的大小不同来提取大小不一的物体,这种方式可以可以有效的解决小物体检测不出来的问题。
(2)该算法采用了不同尺度和长宽比的先验框,通过这些长宽比不同的先验框可以有效地解决检测物体的大小和形状不规则的问题。SSD框架与YOLO框架对比如图2所示。
该算法的缺点总结:(1)需要手动设置先验框的最大最小值和宽高比,这样导致调试的时候会遇到一些麻烦;(2)对于小目标的召回率不是很高,存在提取不充分的原因。
YOLOv3以YOLOv1和YOLOv2为基础进行了一些改进,特别是针对小目标检测加强了识别能力。
(1)调整了网络结构:Darknet-53在网络中加入了残差模块,解决了网络的梯度问题。
(2)利用三个不同的特征图进行目标检测,而且这三层特征图来自不同的卷积层的输出。
(3)使用Kmeans聚类的方法来决定锚定框的尺寸大小:为每种下采样尺寸设定3种先验框,这样一共就有九种尺寸的先验框,然后就会选择合适的先验框选择位置。
(4)选择了新的对象分类,由原来的softmax换成了logistic。YOLOv3的优点在于:通过对YOLOv3算法的改进,主要提升了对小物体的检测精度,同时它的检测速度并没有因此降低。
YOLOv4与YOLOv3的差别我们可以直接从图3与图4所示中看出差异。
(1)主干网络的改进:将原来的Darknet53改为CSPDarknet53,在网络结构中加入了CSP结构,而且激活函数换成了Mish激活函数。
(2)对特征提取过程进行了加强:添加了SPP,PANet结构。
(3)在数据预处理阶段加入Mosaic方法。
(4)在损失函数中做了改进使用了CIOU作为回归Loss。
根据仅对比YOLOv3和YOLOv4,在COCO数据集上,同样的FPS等于83左右时,YOLOv4的AP是43,而YOLOv3是33,直接上涨了10个百分点。
基于SSD算法小目标行人检测的改进方法:
(1)改进SSD网络结构
图5 经过改进的SSD结构图
改进的SSD是将全连接层替换为卷积层后的VGG16,然后利用新添加的卷积层组成多尺度特征层,称之为SSD Layer。经过改进的SSD结构融如图5所示。
(2)反卷积与特征融合
反卷积和融合操作中所有批归一BN层的作用都是增强网络的鲁棒性,防止网络中权重偏置溢出。
Tiny YOLOv3是YOLOV3的简化版本,卷积层数大幅减少,模型结构简单,不需占用大量内存,是目前最快的目标实时检测算法,但检测精度较低,尤其是在行人等小目标检测。为了提高精度,我们可以通过以下的方法来改进算法:
(1)通过构造反残差块来增加网络的深度;
(2)网络模型的改进:改进的网络由12个反残差块构成,通过反残差块,扩张特征图通道提取高维特征,再进行通道降维,得
到特征图。在原网络两尺度预测目标的基础上增加一上采样层upsample,形成52×52、26×26、13×13三尺度预测,进一步提高目标检测准确率。
(3)改进损失函数:根据实际情况,可以通过GIOU代替IOU来提升损失函数的位置误差。
由于现代社会的快速发展,对于图像处理的要求越来越高,目标检测的方法也越来越多,加上对深度学习的不断探索,目标检测的方法也发生了质变,本综述主要讲述了单阶段法目标检测的方法。随着新的框架被不断的提出来,面对具体问题的算法框架也越来多,这时候我们如何选择合适的算法框架变得尤为重要。
截至到目前,Ultralytics公司开源了YOLOv5,离上一次YOLOv4发布不到50天。而且这一次的YOLOv5是完全基于PyTorch实现的,这一次的YOLOv5更加的小巧,更加的快,可以达到140帧/s。YOLOv5的出现,带给了目标检测的一大进步,通过算法的不断改进和成熟,目标检测一定会有巨大的价值实现。