深入浅出自动驾驶(四):模拟自动驾驶

简单的介绍下如何用卷积神经网络来实现模拟自动驾驶,事实上并不难,还是挺浅显易懂的。

Udacity专门为这门课程开发了一款小游戏,如图所示,类似于极品飞车吧,还挺好玩的,就是难度小了点:)

Paste_Image.png

首先操作这辆汽车,类似于玩赛车游戏,过程中会事实记录你的照片,例如上图,以及照片对应的车辆角度。而后你的训练数据就是照片,目标就是角度。最后运行你的训练模型,得出车辆的角度,小车就自己跑起来拉。

最困难的并非模型的选择,卷积模型已经比较成熟了,而且有很多现成的模型可以选择,最困难的是在图像的预处理和数据的剪裁。以下分为图片识别、模型和数据选取分别来叙述。

一 图像预处理

人眼能完美的识别图像,但计算机能,显然不行的,图片在计算机里由像素组成,表现为一个数组,如下图所示:

Paste_Image.png

而且图片长成这个样子

Paste_Image.png

除了道路外还有其它信息,用什么才是用来判断角度的呢?是树木吗?还是天空,或者是土地,等等。虽然我们有深度学习网络,但也应该对图片进行一些剪裁。

1 翻转
我们的图片数据并不多,总共4000多幅,那么可以把图片做一下左右翻转,角度也同时翻转一下,这样就有8000多的数据了。

Paste_Image.png

2 亮度
为了模拟现实中的真实情况,我们可以给图像加上亮度。同时,也可以让神经网络真正识别出有用的部分,这里有个例子,据说一次神经网络识别猫狗大赛,最后发现神经网络其实是通过背景来识别的,为了避免这种情况发生,我们需要加上一些噪音。

Paste_Image.png

3 蒙板
同样,为了避免背景噪音干扰

Paste_Image.png

4 缩放、裁剪
原图片太大了,包含的信息过多,直接使用的话会对机器性能造成非常大的负担,这里我把图片缩小了等比例缩小了四倍,而且事实上对最后结果并没有很大影响。

Paste_Image.png

当然,还有很多其它的处理方法,比如用kera的图片预处理模块通过一张图片衍生出许多图片,如下图所示,都是第一张图片的变种。

Paste_Image.png

二 卷积模型

NVIDIA在论文中给出了一个自动驾驶的模型,论文地址
https://arxiv.org/abs/1604.07316

Paste_Image.png

有5层卷积,每一层卷积都是对图片递进的识别,比如第一层识别一个点,第二层某个元器件,第三层就是一个车门,第四层识别车辆,第五层识别路上的车辆....等等,之类。这里就不再详述,在第二篇也有详细介绍,大家可以去查查。

把数据塞到这个模型中,好拉,这样就玩起来了,开始训练,训练完后导入真实环境,小车跑起来。但并非如此简单,数据集本身存在一些问题,下面详细叙述。

三 数据集的迭代

首先用代码看了下角度的分布,结果角度分布是这样的

Paste_Image.png

0角度这里一柱擎天:)其它角度基本看不到。车辆直行的太多,导致0角度太多,这个数据是不能直接拿来训练的,否则车辆会一直直行。

而后用代码做了一个random,0角度只读取一部分,将数据集调整成这个样子

Paste_Image.png

好了,这样看起来就比较漂亮了,比较均匀,还有点类似正态分布,我们就采取这个测试集训练,训练完后正式跑模型,结果车撞墙了,如下图所示

Paste_Image.png

在普通地面上都能正常行驶,但很不幸,撞到了黑墙上面,当时就想,是不是图片信息不够明确,为啥普通路段能行驶,黑墙就挂了?于是我灵机一动,将图片做了下HSV变换,
代码:cv2.cvtColor(image,cv2.COLOR_RGB2HSV)
图片:

HSV

而后继续训练,跑模型,完美通过黑路路段。但是,在一个尖锐的拐弯处,冲出弯道,到水里去了

Paste_Image.png

回头看了下角度的分布,发现角度普遍比较小

Paste_Image.png

所以又想是不是能够加入一些剧烈转弯的数据,于是我又运行模拟器,生成了一些角度比较大的数据,如下图所示

Paste_Image.png

然后,跑起来!于是,我们的小车就能够完整的跑起来拉。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容