APP下载

基于 YOLOv7 的车辆尾部灯光识别研究

2023-10-29倪新帅李胜

农业装备与车辆工程 2023年10期
关键词:尾灯尾部灯光

倪新帅,李胜

(610100 四川省 成都市 一汽-大众汽车有限公司)

0 引言

乘用车尾部灯光种类多且不容易观测,尾部灯光失效后用户难以发现,对行驶安全构成风险。因此,出厂时保障尾部灯光100%被检测具有重要意义。目前整车制造厂主要采用人工目测检查尾部灯光,由于尾部灯光类型复杂且不易观测,需要耗费大量人力资源和时间成本,存在一定漏检风险。

车辆尾部灯光检测要测试所有尾部信号灯的功能完整性、能否正常关闭和开启。利用视觉识别技术检测汽车灯光的方法日趋多样,田强[1]提出了、一种基于图像的车辆尾灯检测识别方法,使用参数优化的最小二乘支持向量机对得到的车尾灯光状态进行判别;聂美玲[2]提出将方位角模糊技术与凹点检测技术相结合,对车辆灯光进行检测和分割,提高了复杂环境下车灯提取的准确率,并将车灯的运动特征和几何特征相结合,应用到车灯配对的环节,降低了车灯配对的漏配率和误配率;李龙等[3]对YOLOv3 网络进行优化,舍去Darknet53 的最后一个残差单元,同时增加小尺度特征提取残差单元的重复次数,提升了尾灯检测的准确率和检测速度;刘京凯[4]采用优化的YOLOv3 目标检测网络训练和识别尾灯区域是否点亮,并结合尾灯闪烁频率,完成对前方车辆尾部灯光灯语的研究。

本文以某车型尾部灯光为研究对象,首先采集该车型不同状态下的尾部灯光图片,筛选出有效图片后,对图片进行人工标注制作数据集,并对Rear-Light 数据集进行数据增强。基于YOLOv7 对数据集进行学习,建立尾部灯光识别模型,利用传感器、转换器、摄像头和PC 等硬件搭建尾部灯光自动检测系统,实现尾部灯光检测的自动化和智能化,对提高生产效率和产品质量有重要现实意义。

1 目标检测算法

目前基于深度学习的目标检测算法主要分为2大类:(1)两阶段法(two-stage approach),如基于候选区域(region proposals)R-CNN 系列的算法[5];(2)一阶段法(one-stage approach)[6],如现在热门的YOLO 和SSD 算法。两阶段法主要是先通过启发式方法等操作得到一系列稀疏的候选框,然后再对候选框进行分类及回归操作。通过这2 步操作,two-stage 法能够达到最好的准确率[7]。而一阶段法是均匀地在图像不同位置进行不同尺度和比例的密集采样,然后再利用CNN 提取特征并进行分类。这种方法的优点在于其计算效率高、分类速度快;不足之处是均匀密集采样会因为正负样本的不均衡分布(class imbalance problem)导致模型的训练拟合存在困难。目标检测算法的主要性能指标是检测的准确度和效率(即速度)。由于目标检测不仅要对图像进行分类,还要对不同物体进行定位,因此对于准确度不仅要考虑分类的准确度,还涉及物体定位的准确度。two-stage 和one-stage分别在准确度和速度上占有优势,但是准确度和速度往往是矛盾的,提升模型一个指标的性能往往导致另一个指标性能下降,如何更好地平衡目标检测模型的这2 个指标一直是该研究领域的重要方向。

YOLO 即You Only Look Once[8],属于一阶段法,它将目标检测重新定义为一个回归问题,将单个卷积神经网络(CNN)应用于整个图像,将图像分成网格,并预测每个网格的类概率和边界框。由于检测是一个回归问题,所以不需复杂管道。它比“R-CNN”快1 000 倍,比“Fast R-CNN”快100 倍;能够处理实时视频流,延迟小于25 ms;其精度是以前实时系统的2 倍多[9]。同样重要的是,YOLO 遵循的是“端到端深度学习”的实践。YOLOv7 是YOLO 的最新版本,其在 5~160 fps 范围内,速度和精度都超过了所有已知的目标检测器,并在 GPU V100 上,30 fps 的情况下达到实时目标检测器的最高精度 56.8% AP。YOLOv7 在速度和精度上的表现也优于 YOLOR、YOLOX、Scaled-YOLOv4、YOLOv5、DETR 等目标检测器[10]。

2 尾部灯光检测系统设计

2.1 系统组成

基于 YOLO 算法的车辆尾部灯光检测系统包括输入模块、数据采集及处理模块、输出模块3 部分。其中,输入模块由位置传感器和转化器组成,负责检测车辆是否到达检测位置;数据采集及处理模块由电脑和高清摄像头组成,负责在检测车辆尾部图像采集,数据处理模块位于PC 端,主要功能包括:图像预处理(图像增强、图像压缩和灰度转换)、图像检测与识别。输出模块指示灯模组,主要向员工输出车辆合格与不合格指示。

2.2 系统工作流程

(1)利用位置传感器不断探测是否有车辆到达工位;(2)在车辆到达后,通过车标识别确认为要检测车辆;(3)开启视觉检测程序,对一个标准检测时间内的车辆视频进行判断,将识别出的合格灯光数与理论数进行对比;(4)如检测出合格灯光数有缺失则进行记录并报警。

3 系统搭建与测试

3.1 数据获取与标注

(1)基础数据集

车辆尾部共有10 个灯光,为便于训练将其划分为5 部分灯光,分别是:高位刹车灯,左主尾灯(含左主尾灯与左转向灯),左副尾灯(含左副尾灯、左倒车灯和雾灯),右副尾灯(含右副尾灯与右倒车灯)和右主尾灯(含右主尾灯和右转向灯)。采用高清摄像头拍摄不同灯光点亮和失效的视频。人工筛选出有效图像,剔除模糊、重复的无效样本。经筛选得到车辆尾部灯光有效样本 2 534 例,利用Labelimg 对样本进行标注,样本标注后如图1 所示。

图1 部分数据集样本示例Fig.1 Sample of partial dataset

(2)数据增强

由于实际采集的样本较为单一,同一个样本出现的次数很多,训练容易出现过拟合,系统泛化性较差会导致识别准确率下降。在数据集数量一定的情况下,为进一步增加训练数据的多样性,获得更加平衡的数据集,YOLOv7 采用了许多有效的数据处理方法增加训练模型的精度和减少训练时间,数据增强的方法包括Mosaic、Cutout、图像扰动,改变亮度、对比度、饱和度、色调,加噪声,随机缩放,随机裁剪,翻转,旋转,随机擦除等。这里主要介绍Cutout、Mosaic 方法。

Cutout 指在样本上随机选择一个固定大小的正方形mask 区域进行遮挡,即设置mask 区域像素值为0,Cutout 不仅能够让模型学习如何辨别它们,同时让神经网络更好地利用整幅图像的全局信息,而不是一些小特征组成的局部信息。Mosaic 是将4张训练图片缩放拼成一张图片(如图2),Mosaic有利于提升小目标的检测。使用Mosaic 数据增强后,每张图片包含小目标的可能性相应增大,同时,每张图都有不同程度的缩小,即使不包含小目标,通过缩小,原来的目标尺寸也更接近小目标的大小,这对模型学习小目标很有利。

图2 数据增强样本样本示例Fig.2 Sample of data enhancement

3.2 环境与参数配置

本文采用 Pytorch 1.1.0 深度学习框架搭建YOLOv7 卷积神经网络,在共享GPU 平台featurize上进行训练。综合考虑准确度和实时性,模型训练所用模型为YOLOv7-tiny。基于上述数据整理阶段获得的数据,按照9∶1 的比例划分为训练集和验证集,从随机初始化开始训练,batch 大小为 64,迭代次数设为 300,在每一轮训练中通过设置hyp.scratch.tiny.yaml 进行数据增强。

3.3 训练结果与验证

经过300 轮迭代优化,训练结果如图3 所示,定位损失box_loss 从0.075 降至0.008 9,置信度损失obj_loss 从0.046 降至0.014,分类损失cls_loss 从0.062 降至0.001 1。精度Precision 和召回率Recall 分别达到0.995 7 和0.995 6。

图3 训练结果Fig.3 Training results

平均精度均值(mAP,mean Average Precision)即 AP(Average Precision) 的平均值,它是目标检测的主要评估指标,mAP 值越高表示在所选数据集检测效果越好。训练后,map@0.5 和map@0.5:0.95达到了0.995 4 和0.922 4。

使用训练好的模型对现场不同场景不同灯光下的车辆进行验证,检测准确率100%,漏检率为0。将训练好的模型部署在现场,采用高清摄像头输入,实时识别速度达到31 ms,满足现场实时检测要求。现场测试图片如图4 所示。

图4 现场测试图片Fig.4 Test photo

4 结语

针对车辆尾部灯光自动检测问题,本文研究了一种基于 YOLO 算法的尾部灯光检测系统。采用YOLOv7 算法建立神经网络模型,利用现场采集数据集进行模型训练,验证后将模型现场部署,识别准确率高、漏检率低,减少了人工检测的工作量,且满足现场检测实时性要求,具有一定的现实意义。

猜你喜欢

尾灯尾部灯光
水中灯光秀
船舶尾部响应特性试验与计算
风的渴望
今晚的灯光亮了天
易于尾灯匹配的结构探讨
超声及磁共振诊断骶尾部藏毛窦1例
来一场灯光派对
侧围外板尾灯处排料困难的解决方案
重型汽车尾灯支架振动疲劳分析及优化
弯式尾部接头注塑模具设计