张凯龙,钱莉,陈梦涛,陆洪光,单明陶,杜嘉伟
(201600 上海市 上海工程技术大学 机械与汽车工程学院)
随着无人驾驶、智能网联车辆技术的不断发展,检测障碍物对智能移动测距的研究十分重要。单目视觉测距技术由于其视觉结构相对简单,计算量相对较小,因此在智能网联车辆测距中有着广阔的应用前景。
单目视觉测距系统可以分为结合测距与传统检测的算法[1-2]和结合测距与深度学习的检测算法两类。基于机器学习的视觉检测方法被广泛运用在车辆检测任务上,而车辆测距技术是在车辆检测的基础上发展而成的一项技术。算法通过测量车辆的横向与纵向距离对车辆进行准确定位,而且能为行驶中的汽车提供安全距离控制[3-5]。有关研究中,刘志强[6]等人通过PTZ 采集图像和毫米波雷达采集的数据来进行车辆检测,并研究了传感器之间的坐标变换关系;Silva[7]等人通过采用IPM 方法来实时生成新的图像坐标,消除由透视效果引起的图像失真现象;Zhang[8]等人提出了一种单目视觉平面测量方法,通过控制相机运动、物体高度和相机焦距来计算图像放大率,进一步提高了距离测量的准确性且具有通用性高、步骤简单、误差小的优点。传统的测距方法与基于深度学习的目标检测、实例分割方法相结合,可以提升测距的精度。Bao[9]等人将先进的目标检测技术应用于公路车辆距离检测,结合传统的视觉检测研究结果,提出了一种基于卷积神经网络的单目视觉测距方法;姚振鑫[10]等人提出了一种基于车牌宽度和单目视觉的车辆距离测量方法。该算法首次提出以车牌宽度代替车身阴影和车牌面积等光学模型作为距离测量的基础,避免了相机俯仰角变化和地面高度变化对测距精度的影响。
本文基于单目测距算法,将检测与测量分为2个模块:车辆检测模块中使用YOLOv4-Tiny pro 算法检测车辆车牌,通过深度学习算法弥补了传统视觉检测的不足。车距检测模块中使用基于几何关系的车辆测距模型,根据车牌尺寸大小等先验信息计算得车辆距离。算法在GTSDB 数据集上实验,构建baseline 网络验证了不同模块对于网络性能的提升与方法的有效性。
准确快速地完成车牌检测是实现本文单目视觉车距测量方案的第一步。相较于传统的车牌检测方法,易受光照、图像畸变、运动模糊等客观因素影响,导致模型的鲁棒性差,算法精度往往难以达到实际需求。而基于深度学习的车牌检测在模型训练时,就充分考虑到上述情况。选择使用现场环境复杂的数据集进行训练,自适应地获得泛化能力强的网络模型,获得更精准的车牌检测效果,从而在初始环节减少由于车牌尺寸回归不精准带来的误差。并且由于车牌识别的类别较为单一,但对检测的实时性又有一定的要求,因此综合考虑选择使用轻量级的目标检测算法。
YOLOv4-Tiny 是目前流行的目标检测模型YOLOv4 的轻量化版本,它可以在检测任务单一的情况中,获得检测精度和速度的最大收益。相较于其他轻量级网络,YOLOv4-Tiny 在mAP 和FPS 上都有巨大提升。其骨干网络主要包括下采样CBL结构和CSP 结构,下采样CBL 结构中,每个卷积核大小为3×3,步长为2,主要对图像进行下采样处理。CSP 结构将基础层的特征映射划分为2 部分,通过使用跨层连接操作将它们合开,增强卷积神经网络的学习能力,在减少计算量的同时可保证准确率。跨层连接与残差网络的结果类似,有两个好处:
(1)形成特征映射,实现特征的重用以获得更多的语义信息,提高检测准确率;
(2)降低计算瓶颈,减少内存开销。具体网络结构如图1 所示。
图1 YOLOv4-Tiny 网络结构图Fig.1 YOLOv4-Tiny network structure diagram
原YOLOv4-Tiny 网络的检测效率高,已基本满足实际场景中测距的需求,但由于其大规模简化了网络的宽度和深度,所以该算法的精度会受到影响。对此,本文将在不过多引入计算参数的情况下,从以下三方面进行改进:
(1)使用ResBlock-D 模块代替CSPBlock 模块能够一定程度上提高目标检测的速度,但是它降低了目标检测的准确性。为了保持精度和速度的平衡,设计了两个相同的ResBlock+CBAM 模块,并将其添加到ResBlock-D 模块中以提高精度;
(2)利用两个3×3 卷积网络提取全局特征,同时使用通道注意力和空间注意力提取更有效的特征信息。采用级联操作将第1 个卷积网络的输出特征与空间注意力机制的输出特征进行组合,组合后的特征作为ResBlock+CBAM 模块的输出特征;
(3)将最终的输出特征与Backbone 中Residual 网络的输出特征相结合,作为下一个骨干网中Residual 网络的输入特征,使改进后的骨干网能够提取出检测对象的全局和局部特征,进一步提高了检测的准确性。
改进后的YOLOv4-Tiny pro 网络结构图如图2所示。
图2 改进后的YOLOv4-Tiny pro 网络结构图Fig.2 Improved YOLOv4-Tiny pro network structure diagram
车辆测距中,车辆属于刚体,其形状和大小不随时间、地点的变化而变化,且对于车辆而言,其车牌尺寸是先验信息,根据已知的尺寸信息与几何模型可以推导出前方车辆的距离。
在有关研究中,Stein[11]等人提出了相似三角形测距算法的基础模型;刘昌辉[12]等人考虑了相机俯仰角(pitch)对测距的影响;杨雪姣[13]在前人基础上提出了含俯仰角和航向角的相似三角形测距算法。本文认为进行车辆测距时不需要考虑航向角的因素,仅需考虑待测对象相对于光轴在XOZ平面上的偏移角度。
测距向前方采集图像时,待测车辆不会一定处于光轴上,可能会左右偏移部分角度,车辆测距一般只是需要知道待测车辆距离本车辆的直线距离以及车辆到本车辆相机中心的垂直纵向距离。测距模型如图3 所示。
图3 基于几何关系的相似三角形测距模型Fig.3 Similar triangle ranging model based on geometric relation
图3 中,左上角为相机靶面,O'为相机靶面中心点;右侧坐标系中2 条水平线所成面与相机光轴直线重合,O 点为相机光心,O"PA 所在面为路面,O"为靶面中心点与路面所交的点。假设待测物体所在点与地面垂直相交于A 点,则要求的距离即为PA 距离d。根据针孔相机模型,待测物体落脚点A在相机靶面上投影为A',像素坐标为(xA,yA)。点A'与像素中心点所在列相交于点B',像素坐标为(uC,yA)。w为点A'与点B'的水平距离,w=S(xxA-uC);h 为点B'与图像中心点O'的垂直距离,h=S(yyA-v)c。
点B'透过光心与地面相交于点B,过直线OO'作点B 的垂线,交于点R。由模型可知,记∠O'OB 与∠O'OB'为γ,点B'与像素中心点O'的距离为h,OO'为焦距f。
式中:由系统已知,H——参数相机高度;f ——相机焦距;δ——俯仰角;Sx和Sy——像元尺寸。由图3 可得参数w 和h,最终可得车辆距离。
3.1.1 实验材料与配置
在实际场景中采集车牌检测的数据,共采集了1 000 张车牌图像,为保证训练样本与测试样本的独立性,从1 000 张图像中随机抽取800 张作为训练集,将剩下的200 张图像作为测试集,训练集和测试集占比为8∶2,并对测试集图像进行了车距测量,以便于后续车距检测的性能评估。对图像进行人工标注,将图像宽、高、深度、车牌种类及位置信息存入xml 文件。
训练过程中参数设置如下:输入大小512×512;采用SDG 优化器,初始学习速率0.01,动量大小0.937,权重衰减系数0.000 5,学习率采用余弦降火衰减策略,训练110 个epoch,批量大小32。在平台方面,操作系统为Windows 10(64 位),CPU 为Intel i7-7700 4.2GHz;内存大小为16 G;GPU 采用NVIDIA GeForce GTX3060 的12 GB 显卡;编译环境为Pycharm/ python 语言;Pytorch 版本为1.2.0;安装Cuda10.0 和Cudnn7.51 进行GPU 加速运算。
3.1.2 性能指标
评价网络性能的优劣需要兼顾召回率(Recall)和精确率(Precision),通常目标检测中用mAP 来评价网络模型性能。精确率公式如式(7),召回率公式如式(8),AP 的含义是不同Recall 下的Precision 值的均值,评价某一类的检测精度。mAP表示的是所有类别检测精度的均值,公式如式(9)所示。
3.1.3 实验结果与分析
为了验证前述网络改进方法的有效性,本文在GTSDB 数据集上进行消融实验,构建baseline网络(即YOLOv4-Tiny),组合使用前述的ResBlock-D、ResBlock+CBAM,来验证不同模块对于网络性能的提升。测试集结果如表1 所示。
表1 测试集结果Tab.1 Results of the test set
表1 列出了 Precision、Recall 和mAP(IoU 阈值取 0.5)3 种指标。对比 baseline 和模型A、B 可知,ResBlock-D 和ResBlock+CBAM 对于模型的性能均有所提升,在mAP 上分别提高了1.49%、2.37%。而集合3 种模块的YOLOv4-Tiny pro 则在mAP 上均取得最优结果,与baseline 相比,提升了5.27%。根据消融实验结果可知,ResBlock-D 和ResBlock+CBAM 对于网络的性能提升是有效的。
车牌检测的结果如图4 所示。由图4 可见该检测方法可以对车牌进行精确定位。
图4 车牌检测结果Fig.4 License plate detection result
实验数据通过相机采集,为了验证测距算法有效性,将相机摆放在距离路面1.5 m 高的高度上,待测车辆与相机距离以10 m 为起点,间隔10 m 为一组,直到50 m,其中每组将待测车辆侧向偏移5 m,验证待测物不在光轴上时的数据。为了验证测距算法的准确性,与只含俯仰角的测距算法作对比。实验结果如表2 所示。
表2 单目测距算法对比Tab.2 Comparison of single visual distance algorithms
表2 中列出了多组位置情况下,每组距离各测距算法的误差数据。对比基于俯仰角的测距模型和基于几何关系的测距模型可知,本文算法的误差有所减少,在10 m 至50 m 的误差分别减少了1.08%,2.76%,3.35%,3.92%和3.08%。由表2 数据可以看出,基于俯仰角的算法的误差与基于几何关系的算法误差相近,当待测车辆越远离光轴时误差越大,这是该算法没有考虑车辆偏移光轴角度造成的。
实验数据通过相机采集,将相机置于车辆内后视镜上采集照片,通过车牌检测算法提取车牌区域,将车牌区域与图像传送给测距算法,得到车辆距离。实验结果如表3 所示。
表3 车距检测结果Tab.3 Results of vehicle distance detection
由表3 的数据可知,本算法实现了稳定的检测效果,对于极端角度下的情况也有了更好的适应性。
综上所述,基于YOLOv4-Tiny pro 的车牌检测给测距打下了良好的基础。基于几何关系的测距模型考虑到车辆位于光轴一侧时的情况,检测结果更稳定。
随着新能源车的普及和自动驾驶的探索,传统车辆正在向智能网联汽车转变。对前方车辆的距离检测是智能汽车量产与应用中必不可少的内容。本文设计的单目测距算法将检测与测量分离,车辆检测使用YOLOv4-Tiny pro 检测每个车辆都有的车牌,充分发挥深度学习的优势,弥补传统视觉检测的不足;车距测量使用基于几何关系的车辆测距模型,根据车牌尺寸的先验信息准确计算出车辆距离。最后对系统的识别效果和距离检测结果分别进行了实验验证,对于整合后的算法进行了进一步优化,证明了该系统的性能。