2. 河北雄安京德高速公路有限公司, 保定 071700
2. Hebei Xiong’an Jingde Expressway Co. Ltd., Baoding 071700, China
交通标志识别技术被广泛地应用于自动驾驶系统的汽车辅助系统和地图构建等任务中, 是智能交通系统的重要部分, 对交通标志的识别具备很高的研究意义和实际价值. 由于交通标志易受采集条件影响, 往往目标小且容易受到环境中天气、光照度、障碍物遮挡等影响, 不易被正确识别, 而错误的判断会影响车辆的行驶安全. 因此, 如何实时、正确、安全地识别出交通标志逐渐成为交通任务的重点和难点之一.
国内外已经出现许多针对交通标志检测识别的研究, 并取得了一些成果. 最初主要是基于手工提取交通标志鲜明的颜色、形状、边缘等特征来定位所在区域, 再通过模板匹配法或者机器学习法来进行分类识别. 任菲菲[1]针对交通标志的字符, 通过遍历分类图像的字符, 再按照与模板库中匹配的相似度来输出结果. 但模板匹配法在复杂场景下匹配困难, 识别缓慢. 陈兴等人[2]通过交通标志图像的颜色与形状进行定位和分类, 然后使用Hu不变矩提取特征值并输入到支持向量机中进行识别. 但这类算法的鲁棒性不够好, 因为手工设计提取到的特征适应性较差, 所以在精度和稳定性上还有待进步.
随着深度学习发展, 相比传统方法在识别交通标志中存在的不足, 基于深度学习的算法具备的自动提取特征能力更容易完成对输入图像的特征提取与识别, 所以使用深度学习的交通标志目标检测算法已成为研究热点. 主要分为使用基于候选区域的两阶段法和基于回归方式的一阶段法[3]. 两阶段法首先生成可能包含目标的预选区域的位置、大小和概率, 再通过卷积层对区域分类和回归得出检测框, R-CNN[4]、Faster-RCNN[5]等都是两阶段常见算法. 一阶段算法对于输入到网络中图像, 直接回归得到待检测目标框的位置、大小和类别, 经典算法有YOLO系列算法[6-8]. Sermanet等人[9]使用卷积网络自动学习图像的多层次特征, 通过在分类器中加入一级特征和二级特征改进卷积网络, 实现对交通标志的识别, 最终的准确率较高, 但计算效率低, 需要耗费大量资源. 陈朋弟等人[10]提出了基于Mask R-CNN的一种交通标志识别方法, 改进了区域候选网络的结构来提高特征图提取能力, 在自制数据集上取得的结果精度较高, 但检测速度慢. 江金洪等人[11]在YOLOv3算法中引入深度可分离卷积来提取特征, 分离了通道内和通道间的卷积计算, 减少了模型参数量且提高了识别准确度, 在TT100K数据集上取得的平均精度均值达到了89%. 谭波等人[12]针对小交通标志的识别提出了多尺度区域卷积, 构建特征时采用多尺度卷积融合深层特征与浅层特征, 分类时结合上下文语义信息, 最终对小信号检测取得较好效果. 郭继峰等人[13]改进了YOLOv4网络用于识别交通标志, 原标准卷积被深度可分离卷积代替后再用BiFPN结构进行多尺度特征融合, 降低了模型大小, 取得了较好的识别速度和精度, 最终模型大小为14 MB, 在TT100K数据集上的平均精度均值达到87.5%.
以上基于深度学习的方法不断加强了对交通标志检测和识别能力, 但还存在着一些不足之处. 大部分的网络模型都较大, 对于硬件要求较高, 而且难以同时保证高准确率和高检测速度. 为了解决上述问题, 实现快速且准确的识别, 本文提出的改进YOLOv5s交通标志识别算法, 首先对数据进行copy-paste[14]数据增强后再送入网络, 丰富场景且能加强小目标检测能力; 其次, 在骨干网络中使用Ghostnet模块[15]构建网络, 减少原网络计算量. 最后, 将坐标注意力机制(coordinate attention)[16]融合到网络中, 增强对关注目标的表示和定位能力, 提高检测精度. 实验表明, 本文提出的算法模型小且检测速度和精度效果都很好.
1 YOLOv5s模型介绍 1.1 YOLOv5s 网络介绍YOLO 算法从总体上看, 是单阶段端到端的基于anchor-free的检测算法. 将图片输入网络进行特征提取与融合后, 得到检测目标的预测框位置以及类概率. 而YOLOv5相较前几代YOLO算法, 模型更小、部署灵活且拥有更好的检测精度和速度, 适合实时目标检测. YOLOv5根据模型不同深度和不同特征图宽度划分为YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四个模型. 其中YOLOv5s是最小的模型. 网络结构如图1, 主要由4部分组成: 输入端、骨干网络(backbone)、颈部网络(neck)、输出端(head)[17].
1.2 输入端
输入端负责在模型中对输入图像进行马赛克增强, 如图2, 通过随机选取4张图像, 通过缩放、裁剪等操作拼接成一张新的大小不变的图像. 可以丰富数据集, 加强小目标检测能力. 输入端还包括图片自适应缩放和自适应锚框等功能[18].
1.3 骨干网络
骨干网络主要负责分别在图像的不同层级提取图像特征. 主要由Conv层、封装后的C3层、SPPF层等组成, 每层的组成结构见图3. 其中的Conv层是由卷积和批量正则化以及激活函数组成, 目的是提取图像有效的基础特征. C3层将基础层特征图分为两部分, 一部分通过Bottleneck计算, 另一部分直接通过一个卷积后进行Concat连接, 达到传播梯度组合差异最大化的目的, 可以提取更多细粒度特征而不用担心网络退化. SPPF层对特征层卷积后再组合3个多尺度最大池化层每层池化后的结果, 能在不降速前提下增大感受野, 使网络的非线性表达能力更好.
1.4 颈部网络
颈部网络通过将特征金字塔网络(feature pyramid network, FPN)[19]与路径聚合网络(path aggregation network, PAN)[20]技巧性地组合后, 进行多个尺度上的特征融合. FPN+PAN网络结构如图4. 其中, FPN从上向下, 通过上采样将高层语义特征信息进行传递融合. FPN层后边加入了一个由两个PAN结构组成的从下往上的特征金字塔, 逐层传递定位特征信息, 再组合不同检测层的参数, 可以进一步加强网络特征提取能力.
1.5 输出端
模型输出端会采用大小不同的先验框对3种不同尺度的特征图来进行预测和分类, 将预测出的结果与实际结果对比, 生成损失函数并且反向传递到网络并且不断进行优化[21]. 最终, 使用非极大值抑制算法(NMS)按照置信度去除掉多余的预测框后获得局部最优搜索, 即为最后的预测结果.
2 算法改进由于YOLOv5s算法相对其它算法拥有检测速度快、检测精度高、模型轻量的优点, 所以选择在YOLOv5s模型上针对交通标志的特点来改进模型, 加强检测效果. 先对图片进行数据增强后再送入骨干网络提取特征, 骨干网络使用C3Ghost模块替换原C3模块, 并且加入了坐标注意力机制来加强对交通标志的特征提取能力. 改进后的YOLOv5s-GC网络模型如图5所示.
2.1 Copy-paste
交通标志识别的图像大部分是远距离拍摄, 所以检测目标更多是小尺寸物体, 且存在数据种类不均衡问题, 针对这些问题使用copy-paste数据增强可有效提高检测效果. Copy-paste主要通过从某张图像中分割出待检测目标, 对其进行随机大尺度缩放后, 计算与要贴入的图像目标中的所有目标的边框阈值, 小于0.3则随机贴入到图像中. 对于某些数据种类偏少的目标, 通过分割后放在不同背景下来丰富数据中的场景, 增强模型对这种类别的识别效果. Copy-paste示意图如图6.
2.2 C3Ghost
原YOLOv5s网络结构中的C3模块由改进后的BottleneckCSP模块组成, 但这种组合方式会使梯度信息重复. 因此, 本文使用GhostBottleneck构成的C3Ghost模块替换掉原骨干网络中的C3模块. 主要由两个Ghost模块堆叠构成, 其中第1个Ghost负责按照扩展比来膨胀输入特征的通道数, 之后通过批归一化(BN)和ReLU激活函数处理后传入第2个Ghost模块来削减特征的通道数, 使得到的输出通道数目与输入对应, 最后通过BN后再将输出与原始输入连接起来.
Ghost模块的主要构成是Ghost卷积, 如图7所示, 首先通过少量常规卷积核对输入提取到较少的特征图, 而后对特征图运用一些更简单的线性运算从而生成更多新的特征图, 最后拼接所有特征图得到最终结果. Ghost卷积可以有效降低对计算资源的需求, 并且不会影响模型性能, 使得最终使用C3Ghost模块构成的骨干网络模型更加轻量.
2.3 CA注意力机制
为解决原YOLOv5s模型在卷积采样中容易丢失小目标特征信息的问题, 所以在模型骨干网络的最后一层中引入了坐标注意力机制(coordinate attention)的模块, 可以有效提高检测性能. CA模块更多地考虑同时捕获位置信息和跨通道间信息, 扩大全局的感受野. 分别在水平和垂直两个空间方向上进行特征编码, 不仅能在空间方向上获取长程依赖关系, 同时也能保存精准位置信息. 实现过程如图8所示.
为减少二维全局池化无法保存位置信息对检测精度造成的不良影响, CA模块使用大小为(H, 1)或(1, W)的两个池化核对输入特征图
$ \;{\textit{z}}_C^h\left( h \right) = \dfrac{1}{W}\displaystyle \sum\limits_{i = 0}^W {{x_C}\left( {h, i} \right)} $ | (1) |
$ {\textit{z}}_C^w\left( w \right) = \dfrac{1}{H} \displaystyle \sum\limits_{j = 0}^H {{x_C}\left( {j, w} \right)} $ | (2) |
其中,
接着将两个特征图拼接在一起, 送入权重共享的1×1卷积变换函数
$ f = \sigma \left( {{F_1}\left( {{\textit{z}}_C^h, {\textit{z}}_C^w} \right)} \right) $ | (3) |
然后特征图
$ {g^h} = \sigma \left( {{F_h}\left( {{f^h}} \right)} \right) $ | (4) |
$ {g^w} = \sigma \left( {{F_w}\left( {{f^w}} \right)} \right) $ | (5) |
最终, 用原始输入的特征图乘以两个权重图后, 即得到最终的输出特征图:
$ {y_C}\left( {i, j} \right) = {x_C}(i, j) \times {g^h}\left( i \right) \times {g^w}\left( j \right) $ | (6) |
本文实验中用到的数据集为清华大学和腾讯合作提供的公开数据集TT100K (Tsinghua-Tencent 100k), 其中包含了10 592张在自然条件下拍摄到的共含128类的道路交通标志图像, 每张图像分辨率都是2048像素×2048像素. 但是部分交通标志类别的样本非常少, 所以通过对图片进行一些筛选、清洗和标注等操作, 最终选取标注数量最多的25类交通标志共5 910张图片做实验, 部分交通标志类如图9所示. 将选取的图片按照7:3的比例, 随机选取共4 137张作为本次实验的训练集, 其它1 773张作为测试集. 训练集的各类别的样本数目如图10所示.
3.2 实验设置和评估指标
实验的训练和测试环境为操作系统Ubuntu, 深度学习框架PyTorch 1.8, 编程语言使用Python 3.8, CUDA 为11.2版本, GPU为NVIDIA Tesla P100, 显存8 GB. 输入图像的分辨率调整为1048像素×1048像素, 设置0.01为初始学习速率, 过程中采用余弦退火来下降学习率, 0.000 5的权重衰减系数, 训练最小批次为8, 总共训练300个epoch (迭代次数).
3.3 训练结果
YOLOv5s-GC网络的损失函数由分类损失cls_loss、定位损失box_loss、置信度损失obj_loss三部分求和构成. 其中分类损失和置信度损失分别衡量类别概率和目标置信度得分的损失, 使用二元交叉熵损失函数来计算. 定位损失计算使用GIoU函数来计算预测框与标定框之间的误差. 由图11可知, 在训练过程中, 损失值随着迭代次数的增多而不断减小, 在迭代到300次以后, 损失值曲线基本平稳, 整体呈现下降趋势且稳定收敛.
AP代表平均精度, 将横坐标作为召回率、纵坐标作为准确率绘制得到一条函数曲线, AP值为曲线下的面积. mAP则是多个类别的平均AP值, 用来衡量网络的检测精度. 从图12中可以看出, 网络训练初期, 两个模型都收敛较快, 在迭代到150轮左右准确率逐渐到0.9, 然后开始缓慢变化, 最终YOLOv5s模型在平均精度均值(mean average precision, MAP)上到达了0.92左右, 而本文算法YOLOv5s-GC整体的上升速度相对原算法更快, 最终mAP值稳定在0.94左右, 相比原模型收敛好且具有更好的识别精度.
3.4 对比实验
为了评价改进后的模型的优势, 将本文提出的算法与常用的交通标志检测算法SSD、Faster-RCNN、YOLOv3、YOLOv4和YOLOv5s对比, 使用相同数据集训练后, 从平均精度均值、处理每帧图像所用的推理时间、权重大小分别对模型进行对比和评价.
由表1可知, 相比于Faster-RCNN等算法, 一阶段的YOLO算法都有更快的推理速度. 而YOLOv5s和一阶段的YOLOv3、YOLOv4等算法相比是更轻量、快速的网络模型. 而且改进后的YOLOv5s-GC比原YOLOv5s模型的权重还要少1.7 MB, 更易于部署在移动设备上, 而且推理时间上少了4 ms, 加强了模型实时检测的能力, 在平均精度mAP上也提高了1.5%, 说明具备更好的识别精度.
对同一张图片分别使用上述提到的几种算法进行交通标志的检测, 检测效果如图13. 可以看出, 待检测图像中共有7个不同种类的交通标志, 图13(a)使用SSD算法的识别结果识别出了4个目标, 漏检了3个较远的小目标, 使用YOLOv3和YOLOv4算法识别的图像中也分别漏检了一种交通标志, 而使用Faster-RCNN和YOLOv5s的算法可以检测到所有目标, 但前者完成检测所耗时非常久, 后者将其中的pl50标志检测成了其它类别, 存在错检现象. 而改进后的YOLOv5s-GC算法不仅可以正确的检测出原图中的所有交通标志, 见图13(f), 并且检测速度也较快, 对于小目标和倾斜变形的目标也同样有很好的检测效果.
3.5 消融实验
为了发现本算法中使用的不同改进策略对模型最后的检测性能的影响, 因此进行了消融实验. 改进策略包括使用copy-paste数据增强、使用C3Ghost模块修改骨干网络、添加CA注意力, 从模型大小、识别的平均精度和识别每张图像的平均耗时来评估效果.
从表2可以看出来, 单独使用copy-paste数据增强和加入CA注意力都可以提高模型的识别准确度, 而且模型大小也不会增加, 不会影响推理耗时. 而单独使用C3Ghost会使模型大小降低很多, 推理更快, 但是也会使识别精度变差. 所以本文综合这3种改进策略时, 可以在提高识别精度的同时, 也会使模型大小降低一些, 而且不会增加推理的耗时.
4 结论与展望
针对目前在交通标志识别算法中无法同时保证算法在检测精度高的情况下, 构成的网络模型且易于部署、实时性好的问题, 本文基于YOLOv5s模型提出了其改进算法YOLOv5s-GC模型. 主要通过修改YOLOv5s的骨干网络为Ghostnet模块, 来轻量化模型和加快检测速度, 添加坐标注意力机制和通过copy-paste预处理图像来提高检测精度, 满足对交通标志检测的精确性、实时性以及轻量化的要求. 本文方法最终实现了对交通标志的快速准确的识别. 下一步的研究重点是通过优化数据和模型, 进一步提高在复杂多变的环境条件下对各类交通标志目标的检测速度和精度, 使之达到更好的效果.
[1] |
任菲菲. 基于形状模板匹配的实时目标检测与跟踪算法研究[硕士学位论文]. 武汉: 华中科技大学, 2017.
|
[2] |
陈兴, 贾银山. 基于支持向量机的交通标志识别方法研究. 科学技术与工程, 2011, 11(8): 1751-1754. DOI:10.3969/j.issn.1671-1815.2011.08.022 |
[3] |
陈飞, 刘云鹏, 李思远. 复杂环境下的交通标志检测与识别方法综述. 计算机工程与应用, 2021, 57(16): 65-73. DOI:10.3778/j.issn.1002-8331.2103-0380 |
[4] |
Girshick R, Donahue J, Darrell T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation. Proceedings of 2014 IEEE Conference on Computer Vision and Pattern Recognition. Columbus: IEEE, 2014. 580–587.
|
[5] |
Ren SQ, He KM, Girshick R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(6): 1137-1149. DOI:10.1109/tpami.2016.2577031 |
[6] |
Redmon J, Farhadi A. YOLO9000: Better, faster, stronger. Proceedings of 2017 IEEE Conference on Computer Vision and Pattern Recognition. Honolulu: IEEE, 2017. 6517–6525.
|
[7] |
Redmon J, Farhadi A. YOLOv3: An incremental improvement. arXiv:1804.02767, 2018.
|
[8] |
Bochkovskiy A, Wang CY, Liao HYM. YOLOv4: Optimal speed and accuracy of object detection. arXiv:2004.10934, 2020.
|
[9] |
Sermanet P, LeCun Y. Traffic sign recognition with multi-scale convolutional networks. Proceedings of 2011 International Joint Conference on Neural Networks. San Jose: IEEE, 2011. 2809–2813.
|
[10] |
陈朋弟, 黄亮, 夏炎, 等. 基于Mask R-CNN的无人机影像路面交通标志检测与识别. 国土资源遥感, 2020, 32(4): 61-67. |
[11] |
江金洪, 鲍胜利, 史文旭, 等. 基于YOLO v3算法改进的交通标志识别算法. 计算机应用, 2020, 40(8): 2472-2478. |
[12] |
谭波, 王正家. 基于多尺度区域卷积神经网络小交通标志识别算法. 现代电子技术, 2021, 44(15): 59-64. DOI:10.16652/j.issn.1004-373x.2021.15.012 |
[13] |
郭继峰, 孙文博, 庞志奇, 等. 一种改进YOLOv4的交通标志识别算法. 小型微型计算机系统, 2021: 1–7. http://kns.cnki.net/kcms/detail/21.1106.TP.20210623.1130.004.html. (2021-06-23).
|
[14] |
Ghiasi G, Cui Y, Srinivas A, et al. Simple copy-paste is a strong data augmentation method for instance segmentation. Proceedings of 2021 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Nashville: IEEE, 2021. 2917–2927.
|
[15] |
Han K, Wang YH, Tian Q, et al. GhostNet: More features from cheap operations. Proceedings of 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Seattle: IEEE, 2020. 1577–1586.
|
[16] |
Hou QB, Zhou DQ, Feng JS. Coordinate attention for efficient mobile network design. Proceedings of 2021 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Nashville: IEEE, 2021. 13708–13717.
|
[17] |
张路遥, 韩华. 基于YOLOv5s的人脸是否佩戴口罩检测. 智能计算机与应用, 2021, 11(9): 196-199. |
[18] |
田枫, 贾昊鹏, 刘芳. 改进YOLOv5的油田作业现场安全着装小目标检测. 计算机系统应用, 2022, 31(3): 159-168. DOI:doi:10.15888/j.cnki.csa.008359 |
[19] |
Guo CX, Fan B, Zhang Q, et al. AugFPN: Improving multi-scale feature learning for object detection. Proceedings of 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Seattle: IEEE, 2020. 12592–12601.
|
[20] |
Liu S, Qi L, Qin HF, et al. Path aggregation network for instance segmentation. Proceedings of 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City: IEEE, 2018. 8759–8768.
|
[21] |
罗小权, 潘善亮. 改进YOLOV3的火灾检测方法. 计算机工程与应用, 2018, 56(17): 187-196. |