自动驾驶中实时车道检测和警报

2022-04-06 09:22:31 浏览数 (1)

车道检测模型

简介

未来十年,自动驾驶将彻底改变人们的出行方式。目前,自动驾驶应用程序目前正在测试各种案例,包括客车,机器人出租车,自动商业运输卡车,智能叉车以及用于农业的自动拖拉机。自动驾驶需要计算机视觉感知模块来识别和导航环境。此感知模块的作用是:

  • 车道检测
  • 检测环境中的其他物体:车辆,行人,动物
  • 跟踪检测到的对象
  • 预测他们可能的运动

一个好的感知系统应该能够在各种驾驶条件下(白天/晚上、夏天/冬天、下雨/下雪等)实时完成这项工作。在本文中,我们将探究一个实时模型,用于检测车道、其他车辆等以及生成警报。

训练实时车道检测

车道检测问题通常被构造为语义或实例分割问题,目的是识别属于车道类别的像素。TUSimple是用于车道检测任务的常用数据集,这个数据集有3626个道路场景的注释视频剪辑,每个剪辑有20帧,数据都是从安装在汽车上的摄像机所捕获的。下面分享一个示例图像及其注释。

TUSimple数据集的样本图像和车道注释

在此数据集中,我们可以训练语义分割模型用于分割出属于车道类别的像素。U-Net模型是一个理想的模型,因为它是具有实时推理速度的轻量级模型。U-Net是一种编码器-解码器模型,具有跳过连接编码器和解码器块。模型架构如下所示。

U-Net论文中的U-Net模型架构

但是,损失函数应修改为骰子损失系数。车道线分割问题是一个极不平衡的数据问题,图像中的大多数像素都属于背景类。Dice Loss基于Sorenson-Dice系数,它对假阳性和假阴性具有相似的重要性,这使它在数据不平衡问题的处理上表现更好。你可以在他们的论文中阅读有关Dice Loss的更多信息。Dice Loss尝试匹配地面真实情况和预测模型中的车道像素,并能够获得清晰的边界预测。个人非常喜欢这个关于使用骰子进行边界预测的博客。

LaneNet模型

对于本文,我使用LaneNet模型生成车道线。LaneNet模型是两阶段车道线预测器。第一阶段是编码器-解码器模型,以创建车道线分割掩码。第二阶段是车道定位网络,该车道网络将从掩码中提取的车道点作为输入,并使用LSTM学习预测车道点的二次函数。

下图显示了操作的两个阶段。左图是原始图像,中间图像是第1阶段车道注释的输出,右图是第2阶段的最终输出。

LaneNet模型的解释(论文图片-https://arxiv.org/pdf/1807.01726.pdf)

我使用了这个repo中的LaneNet模型实现。代码维护良好,运行无错误。

生成智能警报器

我将车道的预测与对象检测相结合,以生成智能警报。这些智能警报可以:

  • 检测车辆的自我车道中是否存在其他车辆并测量与它们的距离
  • 检测相邻车道中的车辆
  • 识别弯曲道路的转弯半径

在这里,我使用YOLO v5来检测道路上的汽车和人。如果您有兴趣测试YOLO v5,请在此处查看我的博客(https://towardsdatascience.com/yolov5-compared-to-faster-rcnn-who-wins-a771cd6c9fb4)

YOLO v5在检测道路上的其他车辆方面表现出色,而且推断时间也非常快。接下来,我们使用YOLO v5来测量我方车辆与前面最近的车辆之间的距离。模型返回以像素为单位的距离,可以根据相机参数将其转换为米。由于TUSimple数据集的相机参数未知,因此我根据车道的标准宽度估算了像素到米的转换。

距离测量警报

我们同样可以计算车道的曲率半径,并将其用于汽车的转向模块。

曲率半径测量

结论

在本文中,我们探讨了针对自动驾驶中如何准确而快速地检测车道线的问题。然后,我们使用YOLO v5建立对道路上其他对象的识别,用于生成智能警报。在深度学习分析中,我们非常热衷于使用机器学习解决现实世界中的问题。

参考文献

  • YOLO v5
  • LaneNet
  • U-Net

0 人点赞