基于YOLO的前方车辆检测
2021-02-26
(上海工程技术大学机械与汽车工程学院 上海 201620)
1 引言
自动驾驶包括环境感知、决策规划和执行三大任务[1]。在各类引起交通事故的因素中,人类因素占90%,驾驶员违法占74%,对车辆进行实时准确的识别,是自动驾驶中环境感知的重要任务。传统目标检测的过程包括区域选择、特征提取和分类器三个过程[2~3]。它采用不同尺寸不同长宽比例的滑动窗口对整幅图进行遍历。显然,这种方法的缺点是时间复杂度太高,且对更多的目标的适应性较差。前方车辆识别中之前的深度学习的检测方法是提取图像的候选区域的特征信息,在利用机器学习的分类器进行候选验证。比如说,RCNN[4~5]系列目标检测大致分为获取候选区域和对候选区域进行分类判断以及边框回归两部分,它的精度比较高,但是带来的问题就是运行速度慢。YOLO是目前最快的识别算法[6~8],它是一种深度学习的端对端的物体检测方法,与RCNN不同的是,YOLO将物体检测任务当做一个regression问题来处理。车辆能够实现实时性的帧率是30fps,YOLO能够同时保证准确率和检测速度,YOLO的标准模型能够达到45fps,而tiny-YOLO能够达到155fps。多数研究者对 YOLOv2 进行了研究,SEO[9]运用 YOLOv2 算法和无人机对高速公路上的车辆进行了实时检测研究,魏湧明等[10]运用YOLOv2算法对航拍图像进行了目标定位研究,HANG等[11]运用YOLOv2算法进行了中文交通标志的实时检测研究,JO等[12]运用YOLOv2算法进行了多目标的实时跟踪研究。
2 YOLO的检测思路
YOLO和基本的神经网络结构一样,由卷积层、池化层和全连接层组成,YOLO的输出层是Tensor。YOLO网络架构借鉴了GoogLeNet图像分类模型,YOLO识别网络由24个卷积层和两个全连接层组成。实验中,利用pascal voc数据集图像作为YOLO的训练样本,因为YOLO是端对端的网络,可以直接将整张图像用于训练。整张图像分为SxS个网格,每个网格中有物体中心落入时,会再预测出B个检测边界框以及每个框的置信度。每个检测边界框包含边界框的宽和高,边界框的中心相对其母网络的位置,C个类别概率,最终输出层输出S×S(B×5+C)维的张量。YOLO对于输出层数据同等对待是不合理的,同时大部分网格中没有物体中心落入,在训练时的梯度会待遇包含物体中心的网格的梯度,导致训练发散,所以YOLO给定位误差更大的权重,给不包含物体中心的网格的置信度误差更小的权重,其他置信度误差将不变。
3 YOLO的训练过程
YOLO算法和其他的神经网络[13~15]一样,也需要通过标注大量的图像后,送入到神经网络模型当中,训练出神经网络的参数,以便能够更好地利用训练好的神经网络模型去检测该目标。
3.1 图像的标注
将数据集分类放在不用的文件夹中,利用标注工具LabelImg标注工具对车辆进行标注。标注时矩形框应该仅仅贴住车辆的边缘,以防止训练时无法收敛。
图1 车辆数据集标注界面
3.2 修改配置文件
下载pascal voc数据集,利用Labelimg表框工具对图像进行手工标注,数据集分割比例为5:3:2,训练集比例是50%,测试集比例是30%,验证集比例是20%。根据自己电脑来配置yolov3.cfg中的参数,将classes改成1,将每个yolo上面第一个con⁃volutional下的filters改成18,打开voc.names文件,内容改成car,同时修改voc.data等,打开win系统终端,输入训练命令进行训练,训练时,每训练100轮,都会生成一个权重文件在backup下,得到的权重复制到相应的文件夹中,打开终端,输入要测试的图片路径,就可以看到效果。
4 YOLO的评价方法
计算检测边界框和参考标准狂的IOU值,以此判断结果中假正例和真正例,当IOU≥0.5时,为真正例;当IOU<0.5时,为假正例;其值为0时,则为假反例。查全率=TP/(TP+FN),差准率=TP/(TP+FP),TP,FP和FN分别为真正例、假正例和假反例的数量[16]。
5 实验结果
对不用姿态的车辆的检测效果如图2~5,从图中可以看出,YOLO算法对车辆之间遮挡时的检测效果、阴影干扰等环境下的检测效果也很好。
图2 车辆正面检测效果
图3 车辆背面检测效果
图4 多车辆检测效果
图5 阴影环境下车辆检测效果
6 结语
本文应用YOLO检测算法实现视频中的车辆检测,满足了自动驾驶中实时性的要求,也说明了YOLO对于处理其他视觉任务的能力。