作者 | 小白  来源 | 小白学视觉未来十年,自动驾驶将彻底改变人们的出行方式。目前,自动驾驶应用程序目前正在测试各种案例,包括客车、机器人出租车自、动商业运输卡车、智能叉车以及用于农业的自动拖拉机。自动驾驶需要计算机视觉感知模块来识别和导航环境。此感知模块的作用是:
  • 车道检测
  • 检测环境中的其他物体:车辆,行人,动物
  • 跟踪检测到的对象
  • 预测他们可能的运动
一个好的感知系统应该能够在各种驾驶条件下(白天/晚上、夏天/冬天、下雨/下雪等)实时完成这项工作。

车道检测模型在本文中,我们将探究一个实时模型,用于检测车道、其他车辆等以及生成警报。 

训练实时车道检测 车道检测问题通常被构造为语义或实例分割问题,目的是识别属于车道类别的像素。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 在检测道路上的其他车辆方面表现出色,而且推断时间也非常快。接下来,我们使用 YOLO v5 来测量我方车辆与前面最近的车辆之间的距离。模型返回以像素为单位的距离,可以根据相机参数将其转换为米。由于 TUSimple 数据集的相机参数未知,因此我根据车道的标准宽度估算了像素到米的转换。

 

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

曲率半径测量 

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