作者:Priya Dwivedi


翻译:仿佛若有光



前言:


自动驾驶将在未来十年彻底改变旅行。 目前正在测试自动驾驶应用程序的各种用例,包括乘用车、机器人出租车、自动商业送货卡车、智能叉车和用于农业的事件自动拖拉机。



自动驾驶需要计算机视觉来理解和导航环境。计算机视觉的作用是:


  • 检测车道线
  • 检测其他物体——环境中的车辆、人类、动物
  • 跟踪检测到的物体
  • 预测他们可能的运动


一个好的感知系统应该能够在各种驾驶条件下实时地做到这一点——白天/黑夜、夏天/冬天、雨/雪等。


在本文中,我们将研究用于检测车道线、其他车辆等并生成警报的实时模型。




训练实时车道检测器


车道检测问题通常被定义为语义或实例分割问题,其目标是识别属于车道类别的像素。



TUSimple 是用于车道检测任务的流行数据集。该数据集包含 3626 个带注释的道路场景视频剪辑。每个剪辑有 20 帧。数据是从安装在汽车上的摄像头捕获的。下面分享了一个示例图像及其注释。



TUSimple地址:


https://github.com/TuSimple/tusimple-benchmark/tree/master/doc/lane_detection


图片



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



图片


但是,应该将损失函数修改为 Dice Loss 系数。车道线分割问题是一个极其不平衡的数据问题。图像中的大部分像素属于背景类。Dice Loss 基于 Sorenson-Dice 系数,它对误报和漏报同样重视,这使得它能够更好地解决不平衡数据问题。Dice 损失尝试匹配地面实况和预测模型中的车道像素,并且能够获得清晰的边界预测。




车道网模型



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



下图显示了运行中的两个阶段。 左侧面板是原始图像,中间面板是第 1 阶段的车道掩码输出,右侧面板是第 2 阶段的最终输出。



图片



LaneNet代码:


https://github.com/MaybeShewill-CV/lanenet-lane-detection




生成智能警报


我将车道线的预测与物体检测相结合以生成智能警报。 这些智能警报可能与以下因素有关:


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


YOLO-v5 在检测道路上的其他汽车方面做得很好,推理时间也非常快。在这里,使用 YOLO-v5 来检测道路上的汽车和行人。



下面我们使用 YOLO v5 来测量黑白本车与前方最近车辆的距离。模型返回以像素为单位的距离,可以根据相机参数将其转换为米。由于 TUSimple 数据集不知道相机参数,因此我根据车道线的标准宽度估计了像素到米的转换。


图片



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


图片



结论


在本文中,我们探讨了在自动驾驶应用中准确快速地检测车道线的问题。然后我们使用 YOLOv5 来建立对路上其他物体的理解,这可用于生成智能警报。



英文原文链接:


https://towardsdatascience.com/real-time-lane-detection-and-alerts-for-autonomous-driving-1f0a021390ee


本文来源于公众号 CV技术指南 的项目分享系列。


欢迎关注公众号 CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。


 在公众号中回复关键字 “技术总结” 可获取以下文章的汇总pdf。