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

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

如何在有限算力下实现智能驾驶多任务高精度识别?_第1张图片

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

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

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

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

⭐项目链接⭐

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

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

基于深度学习

实现驾驶环境感知

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

如何在有限算力下实现智能驾驶多任务高精度识别?_第2张图片

图2 场景识别目标说明

项目难点

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

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

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

项目方案

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

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

如何在有限算力下实现智能驾驶多任务高精度识别?_第3张图片

图3 baseline模型选择策略

方案优化

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

如何在有限算力下实现智能驾驶多任务高精度识别?_第4张图片

图4 场景说明

检测模型优化历程

数据处理:

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

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

如何在有限算力下实现智能驾驶多任务高精度识别?_第5张图片

图5 数据增强策略说明

模型结构优化:

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

如何在有限算力下实现智能驾驶多任务高精度识别?_第6张图片

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

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

如何在有限算力下实现智能驾驶多任务高精度识别?_第7张图片

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

分割模型优化

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

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

项目效果

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

如何在有限算力下实现智能驾驶多任务高精度识别?_第8张图片

图8 效果展示说明

部署优化

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

如何在有限算力下实现智能驾驶多任务高精度识别?_第9张图片

图9 推理流程说明

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

如何在有限算力下实现智能驾驶多任务高精度识别?_第10张图片

图10 安卓app示范

产业实践范例教程

助力企业跨越AI落地鸿沟

飞桨产业实践范例,致力于加速AI在产业落地的前进路径,减少理论技术与产业应用的差距。范例来源于产业真实业务场景,通过完整的代码实现,提供从数据准备到模型部署的方案过程解析,堪称产业落地的“自动导航”。

  • 真实产业场景: 与实际具有AI应用的企业合作共建,选取企业高频需求的AI应用场景如智慧城市-安全帽检测、智能制造-表计读数等;
  • 完整代码实现: 提供可一键运行的代码,在“AIStudio一站式开发平台”上使用免费算力一键Notebook运行;
  • 详细过程解析: 深度解析从数据准备和处理、模型选择、模型优化和部署的AI落地全流程,共享可复用的模型调参和优化经验;
  • 直达项目落地: 百度高工手把手教用户进行全流程代码实践,轻松直达项目POC阶段。

精彩课程预告

为了让小伙伴们更便捷地实践和应用驾驶环境感知,百度飞桨产品经理将于3月17日20:30-21:00为大家深度解析从数据准备、方案设计到模型优化部署的开发全流程,手把手教大家进行代码实践。

欢迎小伙伴们扫码进群,免费获取直播课和回放视频链接,更有机会获得覆盖智慧城市、工业制造、金融、互联网等行业的飞桨产业实践范例手册! 也欢迎感兴趣的企业和开发者与我们联系,交流技术探讨合作。

点击立即报名

如何在有限算力下实现智能驾驶多任务高精度识别?_第11张图片

你可能感兴趣的:(人工智能)