极市导读
长三角(芜湖)人工智能大赛一一基于车载视角下多路标牌检测识别赛题冠军方案解读分享。 >>加入极市CV技术交流群,走在计算机视觉的最前沿
一、介绍
睿途AI团队在基于车载视角下多路标牌检测识别算法赛道获得冠军,其中model-score指标为第一,性能分得到满分。
睿途AI团队 来自北京中科睿途科技有限公司,中科睿途是一家科技创新型人工智能企业。公司聚焦出行领域,围绕座舱智能化、车机安全、司乘服务提升等重点方向,基于大数据、知识图谱和多模态人工智能技术,提供一站式智能化硬件和软件产品以及配套解决方案服务。
睿途AI旨在促进智慧出行AI视觉技术的科学研究和应用技术发展,推动AI视觉技术在智能座舱、司乘安全、修理厂巡检、停车场巡检等领域的应用与产业化。主要研究方向包括:通过AI视觉进行本地乘客标签分类,乘客视线追踪及车内饰识别,深入开展乘客属性分析、视线动态追踪技术及内饰识别视觉技术等应用领域的核心关键技术研究与开发。
二、赛题分析
项目背景:车载道路标牌识别是一项关键技术,用于帮助驾驶员在道路上识别并理解交通标志和路牌,从而增加道路安全性和提供导航信息。这对自动驾驶系统和智能驾驶辅助系统非常重要。
项目算法目的:使用车载摄像头捕捉的实时图像,识别并分类路标和交通标志,提供相关的信息给驾驶员或自动驾驶系统。
需求边界定义:车载道路标牌识别的需求边界包括但不限于道路上的各种交通标志和路标
算法报警逻辑:识别并输出标牌类别。识别场景:车载。识别对象:道路标牌。环境要求:白天/晚上,光照良好。
通过分析,我们总结了4个数据的主要特点:
1.样本的亮度变动较大:图片在不同的光照条件下拍摄,从强烈的阳光直射到昏暗的夜间或阴天;
2.样本的对比度变动较大:光线充足到天气阴暗导致的对比度变化;
3.待检测的目标往往不是大目标:数据集中的路牌往往在图片中占据较小的空间,这反映了现实世界的情况,因为在道路场景中,路牌远离摄像头的情况较多;
4.大量数据存在噪声和模糊:由于天气(下雨,大雾)、摄像头无法兼容低亮度,而出现噪声和模糊。
算法的评价指标为:
三、赛题思路
模型选择
对于目标检测任务,我们首先想到两阶段(Two-Stage)的Fast R-CNN和单阶段(One-Stage)的Yolo。Fast R-CNN 的处理速度通常低于 YOLO。YOLO 专为实现高速目标检测而设计,能够在较短时间内处理大量图像,这使其特别适合于需要实时或近实时反馈的应用。而 Fast R-CNN 在处理速度上可能无法满足这些要求
YOLO 系列算法自推出以来不断迭代更新,每个版本都在性能、速度和准确度方面进行了优化。例如,YOLOv3 引入了多尺度检测,YOLOv4 和 YOLOv5 进一步提高了速度和准确度。
我们在yolov5、yolov6、 yolov7 、yolov8进行了实验,通过实验证明,yolov5满足了推理速度的同时,也拥有较高的精度,与yolov6、7、8不分伯仲
YoloV5的优势:
1.易于使用和自定义:YOLOv5基于PyTorch,这使得它容易理解和修改。PyTorch的灵活性使得研究人员和开发者可以轻松地调整模型以适应特定需求;
2.易部署:基于pytorch的YOLOv5s支持多种模型导出格式,包括ONNX、TensorFlow Lite和CoreML,这使得它可以轻松集成到多种应用和平台中;
3.活跃的社区支持:由于YOLOv5是一个开源项目,它拥有一个活跃的开发和用户社区。这意味着问题可以快速得到解决,而且经常有新的改进和更新。YOLOv5开发社区提供了多种尺寸的模型(小、中、大、超大)便于模型选型。
YOLOv5s是YOLOv5系列中较小的模型,具有较少的参数和计算需求。通过以往实验来看,v5s在达到v5m精度的同时速度更快,同时较于v5n精度更高,完全达到该任务的要求。
数据增广
针对数据的长尾分布问题,我们使用图像裁剪与缩放(通过改变图像的尺寸和视角来增加数据多样性)和Masic技术进行增广。需要注意的是,不能使用旋转与翻转,因为这个操作是对图像旋转或水平、垂直翻转,以模拟不同的视角和方向,但旋转与翻转会使用部分目标对象标签产生变化,导致模型F1变低。
针对其他数据集特点,我们使用亮度与对比度调整(改变图像的亮度和对比度,使模型能够处理在不同光照条件下捕获的图像),噪声添加(模拟由于低亮度,摄像头工作状态不佳时而出现噪点),遮挡与模糊(部分遮挡或模糊图像,以模拟现实世界中由于天气、车辆晃动产生的模糊)来增广数据。
解决小目标检测
我们在YOLOv5模型上通过P2层特征引出了新的检测头, P2层检测头分辨率为160×160像素, 相当于在主干网络中只进行了2次下采样操作, 含有目标更为丰富的底层特征信息. 该检测头对微小目标更加敏感。删除了P5层检测头,平衡了增加 P2层检测头引入的计算量。
复杂背景优化
我们增加了注意力模块,以便更好的解决复杂背景的检测问题。我们使用的是CBAM注意力机制,CBAM 包含2个独立的子模块, 通道注意力模块和空间注意力模块,分别进行通道与空间上的Attention。这样不只能够节约参数和计算力,并且保证了其能够做为即插即用的模块集成到现有的网络架构中去。
通过实验证明CBAM能有效解决复杂环境背景下容易错检漏检的问题。
训练策略
Warmup 预热学习率是常用的方法,由于刚开始训练时,模型的权重(weights)是随机初始化的,此时若选择一个较大的学习率,可能带来模型的不稳定(振荡)。选择Warmup预热学习率的方式,可以使得开始训练的几个epoches或者一些steps内学习率较小,在预热的小学习率下,模型可以慢慢趋于稳定,等模型相对稳定后再选择预先设置的学习率进行训练,使得模型收敛速度变得更快,模型效果更佳Warmup的不足之处在于从一个很小的学习率一下变为比较大的学习率可能会导致训练误差突然增大。
借鉴Facebook提出了gradual warmup来解决这个问题,即从最初的小学习率开始,每个step增大一点点,直到达到最初设置的比较大的学习率时,采用cosine_decay策略继续学习, cosine_decay无需调整超参数,鲁棒性也比较高,所以成为现在提高模型精度首选的学习率下降方式。
迭代次数增多后,达到一定程度后产生过拟合。从下图中可以看出,训练集精度一直在提升,但是test set的精度在上升后下降。若是在early stopping的位置保存模型,则不必反复训练模型,即可找到最优解。节省我们的训练时间,以便尝试更多的方法。
模型加速
TensorRT 是一个高性能深度学习推理优化器,为推理应用提供低延迟和高吞吐量。TensotRT主要做了这两方面提升模型的运行速度
TensorRT 支持INT8和FP16的计算:网络训练时通常使用32位或16位数据类型,TensorRT在网络推理时选用较低的精度,达到加速推理的目的
TensorRT 对于网络进行了重构,例如计算图优化和算子融合,并针对GPU的特性进行优化。
我们使用TensorRT进行了部署,速度有很大程度的提升。
四、总结
方案创新性:
1.使用YoloV5的框架,使base模型的F1和速度得到保证;
2.融合多种数据增广方法扩充原有数据集,解决样本分布不均衡,提升模型鲁棒性;
3.将CBAM注意力模块增加进部分卷积层后,有效解决复杂环境背景下容易错检漏检的问题;
4.通过P2层特征引出了新的检测头,提升小目标检测能力;
5.使用多种训练策略,使得时间和资源利用都得到更大改善,最终F-score达到0.9135;
6.将模型采用TensorRT部署,保证精度损失较小的情况下,速度提升为120.86FPS。
方案可行性:
1.本方案选择的模型是最先进并且成熟的YoloV5,通过最终实验结果可以证明,我们的方案在真实测试场景中可以有效检测识别出道路标志牌,通过增加注意力模块以及更换检测头,使得模型具有解决复杂环境背景和目标较小的能力,其具有的鲁棒性使得我们的方案能够应对各种情形;
2.同时模型转为TensorRT后,可以兼容更多的环境,方便部署;
3.我们的方案具有经济合理性,具备广阔的市场和商业前景。

公众号后台回复“数据集”获取100+深度学习各方向资源整理
极市干货

点击阅读原文进入CV社区
收获更多技术干货

