20 世纪以来,伴随着人工智能技术的飞速发展,各大人工智能领域的技术应用开始井喷式的出现,并在车牌检测、无人驾驶等方面得到广泛的发展与应用。相较于深度学习目标检测算法来说,传统目标检测算法由于其滑动窗口模型的特点,使得其对特征的提取和匹配具有一定的单一性,并且适应性、准确性和检测速度也相对较差,所以基于深度学习的目标检测算法就凭借其的结构简单的同时效率和准确性更高的优势,迅速赶超了传统目标检测算法,一跃成为最主流的目标检测算法,主要分为两个发展方向:两阶段(two-stage)模型和单阶段(one-stage)模型。
两阶段(two-stage)模型是一种将检测问题分为选取候选区域和对选取的候选区域进行分类和位置修正这两个阶段的基于分类的目标检测算法,通过这两个阶段来实现最终对目标检测结果的输出。1998 年 Yann Le Cun 等人首次将卷积神经网络结构应用于对数字的识别,但在此之后神经网络算法的发展却一直止步不前行进缓慢。2012 年 Alex Krizhevsky等提出了网络结构 AlexNet,该网络在 ImageNet2012 挑战赛中一举夺冠,且效果远超传统算法,由此掀起了深度学习算法的热潮。作为 R-CNN 系列目标检测算法的奠基之作,Girshick R 于 2015 年基于 SPP-Net 算法结构,通过先运行再上传的方法,实现了卷积的共享运算,以此提出了改进的 Fast R-CNN 算法。为了获得更好的检测精度,Jifeng Dai 等人以 Fast R-CNN 为原型,于 2016 年提出了 R-FCN,实现了通过位置敏感分数图提升特征位置信息,从而达到加强监测精度的目的。何凯明等人因为 RoIPooling 经过 Pooling 后易发生形变,且会使得位置信息准确度下降,所以在 2017 年提出了 Mask R-CNN,通过改进 Faster R-CNN 来实现分割任务。
以 R-CNN 算法为首的两阶段法在融合了 RPN 结构后,监测精度大大提高,但因为其属于基于分类的目标检测算法,因其具有监测速度较慢的特点,还是无法完成在大多数应用场合中对于监测实时性的要求,而当我们引入基于回归方法的目标检测算法时,该需求则得以满足。这一基于回归方向的目标检测算法又被称为单阶段(one-stage)模型,该算法仅需对图片进行单次的处理,就可实现目标位置和类别信息的共同获取。相较于基于区域提取 two-stage 来说,该算法不仅过程简单,其准确度和效率都得以大幅度提升,仅单次训练即可完成特征共享,其典型代表有 YOLO 系列、SSD。
2016 年 Redmon J 等提出了一种新的目标检测算法 YOLO(You Only Look Once)。与基于分类的目标检测算法利用分类器来执行检测不同,YOLO 算法将目标检测框架看作空间上的回归问题,单个神经网络可经过一次运算从完整图像上得到边界框和类别概率的预测,有利于对检测性能进行端到端的优化。
2018 年 YOLOv3 对 YOLOv2 进行了改进,YOLOv3 采用的模型比 YOLOv2 更大,进一步提高了小目标检测的准确率,但速度比 YOLOv2 稍慢。
2020 年 YOLOv4 被提出,在 YOLOv3 算法的基础上增加了很多实用的技巧,使得它的速度与精度都得到了极大的提升。同年被提出的 YOLOv5 算法,不同于之前系列的单独模型,YOLOv5 以模型家族的形式被提出,包含 YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。较之前的网络相比,YOLOv5 第一次使用 Pytorch,支持更简单、部署更容易,并且在准确率没有任何损失的情况下,图像的推理时间和检测平均精度得到全面的提升。YOLOv5 另外的一个优势在于体积很小,YOLOv5 的权重文件是 27 兆,YOLOv4 的权重文件是 244 兆。相比于 YOLOv4 来说,YOLOv5 仅有其 10%的大小,这也使得 YOLOv5能更轻松地在嵌入式设备上使用。