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

先抛出你们最关心的——代码地址:git

github传送门:https://github.com/Timthony/self_drivegithub

码云传送门:https://gitee.com/tiantianhang/self_drive网络

基于树莓派的人工智能自动驾驶小车工具

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

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

 


# 注意事项:
1. 赛道须要本身制做,很重要,决定了数据质量。(我是在地板上,贴的有色胶带,而后贴成了跑道的形状)。
2. 赛道的宽度大约是车身的两倍。
3. 大约采集了五六万张图像,而后筛选出三四万张。
4. 摄像头角度问题调试

# 具体制做流程: 
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等数字,也就表示了树莓派该怎么移动,经过树莓派控制电机便可。blog


# 正在进行一些改进:    
1.使用迁移学习进行fine-tuning是否能够提升精度    
2.处理光照问题    
3.处理数据类别不平衡的问题    
欢迎交流讨论    图片

相关文章
相关标签/搜索