树莓派上利用 Tensorflow 实现小车的自动驾驶

2018 年 11 月 17 日 开源中国


作者:Timthony

链接:

https://my.oschina.net/u/3858986/blog/2875027


01

整体流程

电机控制    
摄像头调试    
道路数据采集    
搭建深度学习模型,参数调试    
自动驾驶真实道路模拟    
参数最终调试 


02

使用方法

1. 先将树莓派小车硬件组装好
2. 使用zth_car_control.py来控制小车的前后左右移动,配合zth_collect_data.py来人工操作,使小车在自己制作的跑道进行数据采集。(该过程在树莓派进行)
3. 数据采集完成以后使用zth_process_img.py来对采集的数据进行处理,之前当前先完成一些数据清洗的工作。(电脑上执行)
4. 使用神经网络模型对数据进行训练zth_train.py,得到训练好的模型。(电脑上执行)
5. 在树莓派小车上使用zth_drive和训练好的模型,载入模型,即可实现在原先跑道的自动驾驶。(树莓派上执行)    
注意:只需要使用上述提到的代码即可,别的都是一些初始版本或者正在增加的一些新模块。



03

注意事项

1. 赛道需要自己制作,很重要,决定了数据质量。(我是在地板上,贴的有色胶带,然后贴成了跑道的形状)。
2. 赛道的宽度大约是车身的两倍。
3. 大约采集了五六万张图像,然后筛选出三四万张。
4. 摄像头角度问题


04

具体制作流程

1. 小车原始模型,某宝购买玩具车即可,比如:有电机,有自带电池盒(给电机供电)
2. 树莓派,摄像头,蓄电电池组(用于树莓派供电)
3. 使用一些螺栓,螺柱,亚克力板将树莓派,蓄电电池固定在小车上(具体方法,看手头的工具吧)
4. 组装好以后,树莓派通过VNC连接电脑,登陆树莓派,在树莓派安装keras环境,以便最后调用训练好的模型。
5. 关于小车的控制(电机控制,摄像头采集数据),都在源文件,有注释,大致思路就是通过方向键AWSD来控制方向,使用了pygame的工具包。
6. 通过电脑端的wasd方向键手动控制小车(已经VNC连接好)在制作好的赛道上进行图像采集,直线部分按w,左拐弯按a,右拐弯按d等,建议采集50000张以上。
(采集的图像命名要求为,0_xxxx,1_xxxx,其中首位字母就代表了你按下的是哪个键,比如图像是0开头,那么这张图像就是直行,按下的是w键,这些0,1,2,3,4 数字就相当于数据的标签值)
7. 将图片从树莓派拷贝下来,进行数据清洗,使用电脑端的深度学习环境进行模型训练,使用的模型可以自行定义。
8. 将训练好的模型文件.h5拷贝到树莓派,然后通过树莓派调用载入模型,即可处理实时的图像,并且根据图像预测出是0,1,2,3,4等数字,也就表示了树莓派该怎么移动,通过树莓派控制电机即可。


05

正在进行一些改进

1.使用迁移学习进行fine-tuning是否可以提高精度    
2.处理光照问题    
3.处理数据类别不平衡的问题    
欢迎交流讨论  


码云传送门:

  • https://gitee.com/tiantianhang/self_drive


Github传送门:

  • https://github.com/Timthony/self_drive


开源中国征稿开始啦!


开源中国 www.oschina.net 是目前备受关注、具有强大影响力的开源技术社区,拥有超过 200 万的开源技术精英。我们传播开源的理念,推广开源项目,为 IT 开发者提供一个发现、使用、并交流开源技术的平台。


现在我们开始对外征稿啦!如果你有优秀的技术文章想要分享,热点的行业资讯需要报道等等,欢迎联系开源中国进行投稿。投稿详情及联系方式请参见:我要投稿







推荐阅读

Java 免费!亚马逊开源 Java SE 发行版的直接替代品 Corretto

寒冬已至?四面楚歌的 Android 工程师该何去何从?

三星宣布 Linux on DeX:手机秒变 Ubuntu 桌面环境

类 XP 系统 ReactOS 0.4.10 正式发布,更稳定更漂亮

我该用 Java12 还是坚持 Java11?

更多详情请查看阅读原文↓↓↓↓↓

登录查看更多
1

相关内容

自动驾驶汽车,又称为无人驾驶汽车、电脑驾驶汽车或轮式移动机器人,是自动化载具的一种,具有传统汽车的运输能力。作为自动化载具,自动驾驶汽车不需要人为操作即能感测其环境及导航。完全的自动驾驶汽车仍未全面商用化,大多数均为原型机及展示系统,部分可靠技术才下放至商用车型,但有关于自驾车逐渐成为现实,已经引起了很多有关于道德的讨论。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
【Google】利用AUTOML实现加速感知神经网络设计
专知会员服务
29+阅读 · 2020年3月5日
【综述】自动驾驶领域中的强化学习,附18页论文下载
专知会员服务
172+阅读 · 2020年2月8日
【GitHub实战】Pytorch实现的小样本逼真的视频到视频转换
专知会员服务
35+阅读 · 2019年12月15日
初学者的 Keras:实现卷积神经网络
Python程序员
24+阅读 · 2019年9月8日
自动驾驶仿真软件列表
智能交通技术
13+阅读 · 2019年5月9日
无人驾驶开源仿真平台整理
智能交通技术
27+阅读 · 2019年5月9日
TensorFlow实现神经网络入门篇
机器学习研究会
10+阅读 · 2017年11月19日
图像识别 | 道路识别的自动驾驶算法基本原理
沈浩老师
6+阅读 · 2017年5月12日
Mesh R-CNN
Arxiv
4+阅读 · 2019年6月6日
Arxiv
8+阅读 · 2018年6月19日
VIP会员
相关VIP内容
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
【Google】利用AUTOML实现加速感知神经网络设计
专知会员服务
29+阅读 · 2020年3月5日
【综述】自动驾驶领域中的强化学习,附18页论文下载
专知会员服务
172+阅读 · 2020年2月8日
【GitHub实战】Pytorch实现的小样本逼真的视频到视频转换
专知会员服务
35+阅读 · 2019年12月15日
相关资讯
初学者的 Keras:实现卷积神经网络
Python程序员
24+阅读 · 2019年9月8日
自动驾驶仿真软件列表
智能交通技术
13+阅读 · 2019年5月9日
无人驾驶开源仿真平台整理
智能交通技术
27+阅读 · 2019年5月9日
TensorFlow实现神经网络入门篇
机器学习研究会
10+阅读 · 2017年11月19日
图像识别 | 道路识别的自动驾驶算法基本原理
沈浩老师
6+阅读 · 2017年5月12日
Top
微信扫码咨询专知VIP会员