(附代码)自动驾驶的实时车道检测和警报
共 1806字,需浏览 4分钟
·
2021-07-07 00:39
点击左上方蓝字关注我们
前言:
自动驾驶将在未来十年彻底改变旅行。 目前正在测试自动驾驶应用程序的各种用例,包括乘用车、机器人出租车、自动商业送货卡车、智能叉车和用于农业的事件自动拖拉机。
一个好的感知系统应该能够在各种驾驶条件下实时地做到这一点——白天/黑夜、夏天/冬天、雨/雪等。
在本文中,我们将研究用于检测车道线、其他车辆等并生成警报的实时模型。
训练实时车道检测器
车道检测问题通常被定义为语义或实例分割问题,其目标是识别属于车道类别的像素。
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
END
整理不易,点赞三连↓