安妮 编译自 Zore Equals False

无人车是若何一步步学会开车的?其实只需这五步_模子_图像 云服务

量子位 出品 | "大众年夜众号 QbitAI

无人车到底是若何一步一步学会开车的?

与人类用双眼去不雅观察路面、用手去操控方向盘类似,无人车用一排摄像机去感知环境,用深度学习模型辅导驾驶。
大体来说,这个过程分为五步:

记录环境数据

剖析并处理数据

构建理解环境的模型

演习模型

精髓精辟出可以随韶光改进的模型

如果你想理解无人车的事理,那这篇文章不容错过。

记录环境数据

一辆无人车首先须要具备记录环境数据的能力。

详细来说,我们的目标是得到旁边转向角度的均匀分布。
这倒也不难操作,可以以顺时针和逆时针方向在测试园地内绕圈的办法实现。
这种演习有助于减少转向偏差,避免永劫光驾驶后汽车从道路一边逐步漂移到道路另一边的尴尬情境。

此外,以慢速(例如每小时10英里)行驶也有助于在转弯时记录平滑的转向角,在这里驾驶行为被分类为:

直线行驶:0<=X<0.2

小转弯:0.2<=X<0.4

急转:X>=0.4

规复到中央

个中,X为转向角,r为旋转半径(单位为米),打算转向角的公式为X=1/r。
上面提到的“规复到中央”在数据记录过程中很主要,它帮助车辆学会在即将撞上,马路崖子时回到车道中央。
这些记录数据保存在driving_log.csv中,个中每一行都包含:

文件路径到镜头前中心相机图像

文件路径到前左相机图像

文件路径到前右相机图像

转向角

在记录环境数据的过程中,我们须要记录约100000个转向角的图像,以便供应足够的数据演习模型,避免因样本数据不敷导致的过拟合。
通过在数据记录过程中定期绘制转向角直方图,可以检讨转向角是否为对称分布。

剖析处理数据

第二步是为构建模型剖析和准备刚刚记录的数据,此时的目标是为模型天生更多的演习样本。

下面这张图片由前中心相机拍摄,分辨率为320160像素,包含赤色、绿色和蓝色的channel。
在Python中,可以将其表示为一个三维数组,个中每个像素值的范围在0到255之间。

司机视线以下的区域和两边的车道标志一贯是自动驾驶技能中研究的重点。
这两部分可以利用Keras中的Cropping2D裁剪图像,减少输入到模型中的噪声。

我们可以用开源的打算机视觉库OpenCV从文件中读取图像,然后沿垂直轴翻转,天生一个新的样本。
OpenCV非常适宜自动驾驶汽车用例,由于它是用C++措辞编写的。
像倾斜和旋转这样的其他图像增强技能,也有助于产生更多的演习样本。

此外,还须要通过乘以-1.0翻转其转向角。

之后,可以用Numpy开源库将图像重新塑造成一个三维数组,方便下一步的建模。

构建理解环境的模型

图像数据搞定后,我们须要为无人车构建理解环境信息的深度学习模型,从记录的图像中提取特色。

详细来说,我们的目标是将包含153600像素的输入图像映射到包含单个浮点值的输出。
英伟达之条件出的模型的每一层都供应了特定的功能,作为根本架构效果该当不错。

英伟达模型干系论文地址:

https://arxiv.org/pdf/1604.07316v1.pdf

之后,我们须要将三维数组规范化为单位长度,防止模型中较大的值偏差。
把稳我们将其除以255.0,由于这是一个像素的最大可能值。

还要适当减少人类视野以下的车前场景和车前上方图像的像素,以减少噪音。

之后,我们须要将车道标记等三维数组进行卷积,提取关键特色,这些信息对付预测转向角至关主要。

我们想让开发的模型能够驾驭任何道路类型,因此须要用dropout减少过拟合。

末了,我们须要将转向角输出为float。

演习模型

构建了模型后,我们须要演习模型自己学习开车了。

从技能角度上讲,现阶段的目标是只管即便准确地预测转向角。
在此,我们将丢失定义为预测和实际转向角之间的均方偏差。

从driving_log.csv中随机抽取样例减少顺序偏差。

可以将样本的80%设为演习集,20%设为验证集,这样我们就能看到模型在预测转向角时的精确程度。

之后,须要用Adam(自适应矩估计)将均匀平方偏差最小化。
与梯度低落比较,Adam的一大上风是借用了物理中的动量观点收敛到全局最优值。

末了,我们用天生器来适应模型。
由于图像数量弘大,我们无法一次性将全体演习集输入到内训中。
因此,须要用天生器批量生产图像以进行演习。

随韶光精髓精辟模型

完善模型是我们的末了一步,须要让模型的准确性和稳健性随着韶光的推移而提高。
我们的实验采取不同的体系构造和超参数,不雅观察其对减少均方偏差的影响。
什么样的模型最好?不好意思,这个问题没有一个统一的答案,由于大部分改进都须要捐躯其他的一些东西,比如:

用更好的图形处理单元(GPU)减少演习韶光,须要把稳这样会增加本钱

通过降落演习韶光来降落学习速率,增加最佳值收敛的概率

通过利用灰度图像减少演习韶光,须要把稳这样会丢失赤色、绿色和蓝色通道供应的颜色信息

通过较大的batch size提高梯度估计的准确性,这会以捐躯利用的内存为代价

每个阶段都选用大量样例来减少丢失的颠簸

概览全文,实在可以创造,自动驾驶汽车开拓的过程,也是我们理解打算机视觉和深度学习的上风和局限性的过程。

我坚信,未来是属于自动驾驶的。

— 完 —

诚挚招聘

量子位正在招募编辑/,事情地点在北京中关村落。
期待有才华、有激情亲切的同学加入我们!
干系细节,请在量子位"大众年夜众号(QbitAI)对话界面,回答“招聘”两个字。

量子位 QbitAI · 号签约作者

վ'ᴗ' ի 追踪AI技能和产品新动态