树莓派上利用 Tensorflow 实现小车的自动驾驶
先抛出大家最关心的——代码地址:
github传送门:https://github.com/Timthony/self_drive
码云传送门:https://gitee.com/tiantianhang/self_drive
基于树莓派的人工智能自动驾驶小车
整体流程
电机控制
摄像头调试
道路数据采集
搭建深度学习模型,参数调试
自动驾驶真实道路模拟
参数最终调试
使用方法:
先将树莓派小车硬件组装好
使用zth_car_control.py来控制小车的前后左右移动,配合zth_collect_data.py来人工操作,使小车在自己制作的跑道进行数据采集。(该过程在树莓派进行)
数据采集完成以后使用zth_process_img.py来对采集的数据进行处理,之前当前先完成一些数据清洗的工作。(电脑上执行)
使用神经网络模型对数据进行训练zth_train.py,得到训练好的模型。(电脑上执行)
在树莓派小车上使用zth_drive和训练好的模型,载入模型,即可实现在原先跑道的自动驾驶。(树莓派上执行)
注意:只需要使用上述提到的代码即可,别的都是一些初始版本或者正在增加的一些新模块。
注意事项:
赛道需要自己制作,很重要,决定了数据质量。(我是在地板上,贴的有色胶带,然后贴成了跑道的形状)。
赛道的宽度大约是车身的两倍。
大约采集了五六万张图像,然后筛选出三四万张。
摄像头角度问题
具体制作流程:
小车原始模型,某宝购买玩具车即可,比如:有电机,有自带电池盒(给电机供电)
树莓派,摄像头,蓄电电池组(用于树莓派供电)
使用一些螺栓,螺柱,亚克力板将树莓派,蓄电电池固定在小车上(具体方法,看手头的工具吧)
组装好以后,树莓派通过VNC连接电脑,登陆树莓派,在树莓派安装keras环境,以便最后调用训练好的模型。
关于小车的控制(电机控制,摄像头采集数据),都在源文件,有注释,大致思路就是通过方向键AWSD来控制方向,使用了pygame的工具包。
通过电脑端的wasd方向键手动控制小车(已经VNC连接好)在制作好的赛道上进行图像采集,直线部分按w,左拐弯按a,右拐弯按d等,建议采集50000张以上。
(采集的图像命名要求为,0_xxxx,1_xxxx,其中首位字母就代表了你按下的是哪个键,比如图像是0开头,那么这张图像就是直行,按下的是w键,这些0,1,2,3,4 数字就相当于数据的标签值)将图片从树莓派拷贝下来,进行数据清洗,使用电脑端的深度学习环境进行模型训练,使用的模型可以自行定义。
将训练好的模型文件.h5拷贝到树莓派,然后通过树莓派调用载入模型,即可处理实时的图像,并且根据图像预测出是0,1,2,3,4等数字,也就表示了树莓派该怎么移动,通过树莓派控制电机即可。
正在进行一些改进:
1.使用迁移学习进行fine-tuning是否可以提高精度
2.处理光照问题
3.处理数据类别不平衡的问题
欢迎交流讨论
树莓派上利用 Tensorflow 实现小车的自动驾驶相关推荐
- 树莓派上利用Tensorflow实现小车的自动驾驶
先抛出大家最关心的--代码地址: github传送门:github.com/Timthony/se- 基于树莓派的人工智能自动驾驶小车 # 整体流程 电机控制 摄像头调试 道路数据采集 搭建深度学习模 ...
- 树莓派python3.6 tensorflow_树莓派上运行Tensorflow
由于学校里的一个比赛需要搭建一个机器视觉的系统,我一时兴起,想着能不能用树莓派+深度学习(tensorflow框架)来实现一下.所以就买了一块树莓派的板子,做了一些尝试,终于能在树莓派上运行tenso ...
- 王权富贵:在树莓派上构建tensorflow
前言: 搜索了很多资料,重装了好多次系统,总结一句话"树莓派的Linux!=Linux".不是所有在Linux上装的东西在树莓派上都能装. 修改: 2018/9/28-大幅度加入了 ...
- 树莓派udev不能自动挂载_英伟达:抢占‘树莓派市场,发布基于云的自动驾驶仿真平台...
英伟达在自动驾驶应用布局谨慎而全面,由通用的模块渐渐为L2专门定制出专属模块,同时基于云的仿真平台也在拓展了虚拟测试的边界. 北京时间3月19日凌晨5点,英伟达GTC 2019大会(GPU技术大会)在 ...
- 【Github上有趣的项目】TensorKart 自动驾驶马里奥赛车(玩不了)
文章目录 介绍 玩法步骤 下载项目 下载并安装模拟器mupen64plus 启动模拟器程序(mupen64plus)并运行Mario Kart 64 启动TensorKart-master 介绍 Te ...
- 我们是如何成为在视频分析的基础上做到应用于联合收割机的自动驾驶系统的世界领先公司
有CAN总线的话,这就是整一套 仅在五年前,还没有可以正常运行的神经网络系统可以区分障碍物和茎秆,因此也没有视频分析.那时是"盲" 的GPS方法,实际上,这种方法并不是最佳的,它大 ...
- python读取传感器数据实时上传_树莓派上利用python读取传感器DHT11的温湿度
昨晚测试Python操作dht11传感器失败!本来想着利用树莓派,传感器,数据库搭建一个机房环境监控系统,卡在了python读取数据上,怎么读取数据都是有问题.世上无难事,只要肯放弃,决定暂时放弃实验 ...
- 树莓派上的tensorflow视频识别+远程视频流传输
1.下载models: 第一步:git clone https://github.com/tensorflow/models.git models-master 这篇文章配置一定要注意一定不要把mod ...
- 基于树莓派搭建自动驾驶小车;Donkey Car组装硬件DIY
还是想朝着人工智能方向靠一靠,之前研究图像有关的分类.识别,还是觉得太枯燥了.后来结合自己接触较多的Unity引擎,发现有自动驾驶用Unreal或者Unity之类的游戏引擎进行虚拟训练.接着发现了微软 ...
最新文章
- 一位编程15年的大佬:我的OpenCV开发高手成长之路
- jmeter的性能监控框架搭建记录(Influxdb+Grafana+Jmeter)
- 【Rain in ACStar HDU-3340】
- 有意思的 Node.js 内存泄漏问题
- 嵌入式-C语言面试题【转】
- mysql中起飞到达城市查询_让mysql慢慢起飞 - 初识慢日志
- python如何控制伺服驱动_关于伺服电机的21个关键问题
- Android:实现弹窗效果
- 日志表数据量大查询慢问题
- 华硕aura完全卸载_AURA神光同步是什么意思?AURA SYNC神光同步教程
- 如何将本地图片转成链接?
- indesign里怎么打根号_indesign 数学符号
- jQuery LigerUI使用教程入门篇
- mysql的索引结构
- 产品经理02_竞品分析
- 如何学习3dsmax?3dsmax教程 中英文版本
- 看医疗行业如何建立信息化战略决策
- 驱动以SN码获取流程定制Barcode属性
- Java面向对象高阶
- 重庆的小面50强[转自经典重庆]