自动驾驶教程阅读:Lane Boundary Segmentation

Lane Boundary Segmentation

对于我们的车道检测pipeline,我们想训练一个神经网络,该神经网络拍摄一张图像,并为每个像素估计它属于左车道边界的概率,它属于右车道边界的概率以及它既不属于。这个问题叫做语义分割。

Prerequisites

在本节中,我假设以下内容:
1.您知道什么是神经网络,并且之前已经接受过训练。
2.您知道语义分段的概念
如果您不满足前提条件1,我建议您使用以下免费资源

CS231n: Convolutional Neural Networks for Visual Recognition
对于这一出色的斯坦福课程,您可以在线查找所有学习资料。课程笔记没有完成,但是单击详细的课程表时您可以阅读幻灯片。您可能要使用2017年的版本,因为其中包含讲座视频。但是,对于练习,您应该使用2020版本(非常类似于2017),因为您可以在Google Colab中进行编程。 Google Colab允许您在Google服务器上免费使用GPU(深度学习所需的昂贵硬件)。即使您不想使用Colab,2020课程也对本地工作(包括水蟒)有更好的指导。对于可以在张量和pytorch之间进行选择的练习,我建议您使用pytorch。如果您确实渴望尽快返回本课程,则一旦了解了语义分段,就可以停止CS231n。

即使您满足先决条件2,也请阅读杰里米·乔丹(Jeremy Jordan)撰写的关于语义分割的非常不错的博客文章(该文章很大程度上基于CS231n)。确保您了解有关dice loss的部分。

We will use dice loss for two reasons

  • 即使存在类别失衡,Dice loss 也会产生良好的结果:我们问题中的阶级是“none”,“左边界”和“右边界”。由于车道边界很窄,因此我们数据集中的大多数像素都将标记为“none”。这意味着我们的数据集确实抑制了类的不平衡。像交叉熵这样的损失函数不能很好地起作用,因为仅通过猜测每个像素都是"none",模型就可以得到非常低的损失。使用dice loss 时这是不可能的
    -Dice loss不仅是一个很好的损失函数,而且我们还可以将其用作度量标准,因为其值非常直观

最后,您需要访问GPU才能进行练习。但是拥有GPU并不是前提条件。您可以使用Google Colab,它允许您在google服务器上运行python代码。要访问Colab上的GPU,您应该单击“运行时”,然后单击“更改运行时类型”,然后最终选择“ GPU”作为“硬件加速器”。有关如何使用Colab的更多详细信息,请参阅附录。

Exercise: Train a neural net for lane boundary segmentation

车道分割模型应以形状为(512,1024,3)的图像作为输入。在这里,512是图像高度,1024是图像宽度,3是红色,绿色和蓝色三个颜色通道。我们使用输入图像和相应的形状标签(512,1024)训练模型,其中label [v,u]的值可以为0,1或2,这意味着像素为“无边界”,“左边界”或“正确的边界”。

模型的输出应为形状为(512,1024,3)的张量输出
在这里插入图片描述

收集训练数据

我们可以使用Carla模拟器收集培训数据。我写了一个脚本collect_data.py
在Carla地图上创建车辆
将rgb摄像头传感器连接到车辆
将车辆移动到不同位置,并
1.存储来自摄像头传感器的图像
2.存储从Carla的高清晰度地图获得的车道边界的世界坐标
3.存储将世界坐标映射到摄像机参考系中坐标的转换矩阵
4.存储标签图像,该标签图像是由车道边界坐标和变换矩阵创建的,如上一节的练习所示

请注意,从四个数据项(图像,车道边界,trafo矩阵,标签图像)中,只有图像和标签图像才是训练我们的深度学习模型所必需的。
所有数据都在“ Town04”卡拉地图上收集,因为这是唯一具有可用高速公路的地图(“ Town06”具有完全笔直或具有90度转弯的高速公路)。为简单起见,我们正在构建仅适用于高速公路的系统。
因此,仅使用了地图上弯道曲率低的部分,不包括城市道路。
地图的一部分被任意选择为“验证区域”。在该区域中创建的所有数据均在其名称中添加了字符串“ validation_set”。
现在,您将需要一些训练数据到您的机器上!我建议您仅下载使用collect_data.py脚本为您创建的一些训练数据。但是,如果您确实愿意,也可以自己收集数据。

Building a model

如果您需要一些指导,建议您使用分段模型pytorch(smp)。您可以在smp github存储库上修改示例以进行车道分段。您应该从code / exercises / lane_detection / lane_segmentation.ipynb中的代码开始(并将其保留在其目录中,以确保实用程序导入可以正常工作)。然后逐个复制smp示例笔记本中所需的内容。对于每个单元,请阅读其功能并考虑是否需要修改。
这项练习可能是本书中最难的部分。如果需要,您可以得到一些提示
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值