如何在有限算力下实现智能驾驶多任务高精度识别?

2022-03-31 16:09:09 浏览数 (1)

近几年,随着自动驾驶、车路协同等概念的日益火热,地图厂商、传统汽车厂商以及有互联网背景的“造车新势力”纷纷加入了智能升级的探索之路。为了使智能驾驶更安全更可靠,实现高精度、实时感知周围环境的技术至关重要,该技术不仅可以精准快速地识别车道线、行驶区域、行人、车辆等,而且将车辆行驶路线“画”在地面,为驾驶人员提供车距监测、行人预警、车道偏离提醒和红绿灯提醒等一系列安全辅助功能,助力驾驶系统进行高效的决策。

图1 百度地图AR导航功能展示

但在真实产业中,要实现高精度的驾驶环境感知不是一件容易的事,在实际的路况中存在着各种各样的问题:

  • 摄像头采集到的图像会受到树木、建筑遮挡以及车辆移动的影响;
  • 天气多种多样,要适应白天、黑夜、雾天和雨天等;
  • 车道线磨损程度不一,且不同区域的车道线新旧对识别也有很大的影响。

针对上述场景,本次飞桨产业实践范例库基于真实场景中的车载影像数据,推出了目标检测和车道线分割多任务处理的智能驾驶感知实践示例,提供从数据准备、技术方案、模型训练优化,到模型部署的全流程可复用方案,有效解决了不同光照、不同天气等室外复杂环境下的目标识别问题,适用于AR地图导航、机器人教育、厂区自动巡检、自动驾驶等多个产业应用。

⭐项目链接⭐

https://github.com/PaddlePaddle/awesome-DeepLearning

所有源码及教程均已开源,欢迎大家star鼓励~

基于深度学习

实现驾驶环境感知

基于深度学习实现驾驶环境感知要对机动车、非机动车、行人以及交通信号灯(红灯, 黄灯, 绿灯,灭灯) 这7类对象进行目标检测, 同时对实车道线、虚车道线和斑马线3类目标进行分割, 并且要求检测速度不低于20 fps才能进一步端侧移植,因此,如何在有限算力下实现多任务的高精度识别将会是驾驶环境感知应用最核心的问题。

图2 场景识别目标说明

项目难点

数据难:同一个目标(标签)在不同的环境下呈现的形态差异大,如实车道线和虚车道线在城乡结合区域难以区分;数据存在小样本和样本不均衡的问题,车辆行人标签多,红绿灯数据相对较少。

任务多:需要同时解决检测和分割两个任务,选模型和优化时要权衡精度与速度两方面。

效率高:模型要尽量小,训练与预测速度要尽量快,在V100的平台至少实现20fps才能端侧移植。

项目方案

针对上述难点,经过对模型性能精度和速度的考虑,最终选用了飞桨目标检测套件

PaddleDetection中的PP-YOLOv2和飞桨图像分割套件。PaddleSeg中的HardNet模型作为Baseline模型进行相应的优化,使用多进程异步处理,进一步提升了部署性能。

图3 baseline模型选择策略

方案优化

本次算法设计同时围绕计算效率、不均衡问题、小目标分布、模型稳定性四个方面展开,并针对真实道路场景进行处理。

图4 场景说明

检测模型优化历程

数据处理:

1、数据为车载记录仪拍摄的道路画面,其目标均为交通目标,尺寸和比例相对稳定,但经常会受到光照、传感器噪声等因素影响,偶尔还会出现运动模糊,为此在数据增强过程中,调整RandomDistort(随机像素替换) 中参数hue、saturation、contrast、brightness范围由到[0.8, 1.2],从而使得模型收敛效率显著提升。

2、为了提高模型的泛化能力,针对车载摄像头的场景,在训练全过程中随机加入albumentations库中的JpegCompression(降画质) 、MotionaBlur(运动模糊)、RandomBrightnessContrast(亮度对比度)等数据增强的方法。

图5 数据增强策略说明

模型结构优化:

1、模型检测头复现,使用飞桨复现YOLOX Decoupled Head,相比之前的YOLOX Head检测精度提升了2%。

图6 不同检测头的精度对比

2、在PP-YOLOv2的Matrix nms的处理结果之后增加merge nms,增加保留框位置平滑策略(重叠框位置信息求解平均值),使框的位置更加精确。

图7 更换nms后位置精度示意

分割模型优化

1、由于项目中数据为车载记录仪拍摄的道路画面,分割的语义都是地面标识,所以在大小、尺寸、色彩方面都相对稳定,因此数据增强不需要太多,只需要能体现一定的变化规律即可,同时为了避免随机裁剪过程中导致实车道线和虚车道线产生混淆,因此在数据中去掉了随机裁剪的数据增强方式。

2、调整模型分辨率:HardNet 1024 (w) * 1024(h) ->1056(w) * 608(h),训练采用多尺度 。

项目效果

经过一系列的优化,模型实现了对驾驶过程中的机动车、行人、红绿灯、车道线等目标的识别,最终整体识别精度达到85%

图8 效果展示说明

部署优化

一开始使用模型串联的形式,先进行分割的后处理,但时间不满足要求。通过进一步优化部署,最终采用多线程的方式加载模型并行预测,实现了高效部署,最终在v100服务器达到了22fps,满足端侧移植的条件

图9 推理流程说明

部署方面使用飞桨原生推理库PaddleLite进行部署,满足用户批量预测、数据安全性高、延迟低的需求,快速在本地完成部署方案,当前部署方案已经发布,欢迎小伙伴们使用尝试。

图10 安卓app示范

0 人点赞