# self_drive
基于树莓派的人工智能自动驾驶小车
Artificial intelligence automatic driving car based on raspberry pie
github传送门:https://github.com/Timthony/self_drive
# 整体流程(Technological process)
电机控制(Motor control)
摄像头调试(Camera debugging)
道路数据采集(Road data acquisition)
搭建深度学习模型,参数调试(Build deep learning model, parameter debug)
自动驾驶真实道路模拟(Real road simulation of automatic driving)
参数最终调试(Final debugging of parameters)
使用方法(Usage method):
1. 先将树莓派小车硬件组装好(assemble the raspberry cart hardware.)
2. 使用zth_car_control.py来控制小车的前后左右移动,配合zth_collect_data.py来人工操作,使小车在自己制作的跑道进行数据采集。(该过程在树莓派进行)
(Use zth_car_control.py to control the front and rear movement of the car, and cooperate with zth_collect_data.py to operate manually, so that the car can collect data on its own runway. (the process is carried out in raspberry pie).)
3. 数据采集完成以后使用zth_process_img.py来对采集的数据进行处理,之前当前先完成一些数据清洗的工作。(电脑上执行)
(After data acquisition is completed, zth_process_img.py is used to process the collected data, and some data cleaning work is completed before. (computer execution))
4. 使用神经网络模型对数据进行训练zth_train.py,得到训练好的模型。(电脑上执行)
( using neural network model to train data, zth_train.py, get a trained model. (computer execution))
5. 在树莓派小车上使用zth_drive和训练好的模型,载入模型,即可实现在原先跑道的自动驾驶。(树莓派上执行)
(Auto-driving on the original runway can be realized by using zth_drive and trained model in the raspberry dispatch car and loading the model. (raspberry pie execution))
注意:只需要使用上述提到的代码即可,别的都是一些初始版本或者正在增加的一些新模块。
(Note: All you need to do is use the code mentioned above. Others are original versions or new modules that are being added.)
![](https://ws3.sinaimg.cn/large/006tNbRwly1fw2xwxarf2j30u0140tbg.jpg)
![](https://ws4.sinaimg.cn/large/006tNbRwly1fx7tmmq5jjj30u00hgq6z.jpg)
# 注意事项(Matters needing attention):
1. 赛道需要自己制作,很重要,决定了数据质量。(我是在地板上,贴的有色胶带,然后贴成了跑道的形状)。
(the track needs to be produced by itself, which is very important and determines the quality of data. (I was on the floor, taped with colored tape, and then pasted into the shape of the runway).)
2. 赛道的宽度大约是车身的两倍。
(the width of the track is about two times that of the body.)
3. 大约采集了五六万张图像,然后筛选出三四万张。
(about fifty thousand or sixty thousand images were collected and thirty thousand or forty thousand were screened out.)
4. 摄像头角度问题
(camera angle problem)
# 具体制作流程(Specific production process):
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等数字,也就表示了树莓派该怎么移动,通过树莓派控制电机即可。
# 正在进行一些改进:
1.使用迁移学习进行fine-tuning是否可以提高精度
2.处理光照问题
3.处理数据类别不平衡的问题
欢迎交流讨论
# 使用的网络介绍:
基于英伟达提出的NVIDIA end-to-end Model
![](https://ws2.sinaimg.cn/large/006tNc79ly1fyyxtou4l7j30iu0pjwin.jpg)
简单介绍一下该模型的结构:
网络的第一层归一化层(Normalization Layer)采用了归一化操作,将图像每个维度都除以255并-0.5,将所有元素归一化到-0.5到0.5之间。这里不涉及学习过程,归一化作为输入卷积层之前的预处理操作,进行归一化操作有助于适配不同类型的网络结构,并且加速模型在GPU上的训练。
接下来的紧跟着五个卷积层(Convolutional Layer),卷积层的作用是特征提取以便后续的训练。前三个卷积层选择了5x5的kernel和2x2的strides,后两层卷积层选择了3x3的kernel并且没有strides,kernel是选择的卷积核,strides可以理解为卷积核在矩阵上的移动步长。关于卷积核和strides参数的选取NVIDIA没有做过多的解释,只是用“chosen empirically through a series of experiments that vary layer configurations”一句带过,这就是选择深度学习参数的玄妙之处了,实际应用中需要对几个典型的参数都尝试一遍并选择效果比较好的参数,但是可能无法给出合理的解释。
卷积核数量逐层增多是有一定的解释的,卷积神经网络的特点是“局部视野”+“权值共享”,通过选取图像中部分区域(通过卷积核的大小决定)并选择多个卷积核(权值共享)来将提取到的局部特征应用到全局图片,卷积核的数量和层数越多可以提取到的特征越“通用”,但是层数越多对于训练也是个挑战,在实际应用中需要针对不同的问题选择合适的网络结构。
卷积层之后,NVIDIA又增加了3个全连接层(full connected),fc层用来对卷积层提取到的特征进行训练并最终输出转向控制信号。
NVIDIA提出的结构是端到端(end-to-end)的,所谓端到端是指神经网络的输入为原始图片,神经网络的输出为直接控制的指令。端到端深度神经网络的特点在于,特征提取层和控制输出层的分界并不明显了,因为网络中的每一个部分对于系统来说都起着特征提取(feature extractor)和控制(controller)的作用。
没有合适的资源?快使用搜索试试~ 我知道了~
基于树莓派的自动驾驶小车源码+项目说明(树莓派和tensorflow实现小车在赛道的自动驾驶).zip
共2002个文件
jpg:1981个
py:12个
xml:5个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 51 浏览量
2024-01-25
21:58:04
上传
评论
收藏 241.57MB ZIP 举报
温馨提示
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于树莓派的自动驾驶小车源码+项目说明(树莓派和tensorflow实现小车在赛道的自动驾驶).zip
资源推荐
资源详情
资源评论
收起资源包目录
基于树莓派的自动驾驶小车源码+项目说明(树莓派和tensorflow实现小车在赛道的自动驾驶).zip (2002个子文件)
.DS_Store 2.32MB
.DS_Store 10KB
model-000.h5 41.23MB
2_image1538298617.6908588.jpg 7KB
2_image1538298617.5558288.jpg 7KB
2_image1538298616.8254213.jpg 6KB
2_image1538298617.893925.jpg 6KB
2_image1538298617.4662192.jpg 6KB
4_image1538295540.7105553.jpg 6KB
2_image1538298618.2263153.jpg 6KB
2_image1538298619.684713.jpg 6KB
2_image1538297015.5288434.jpg 6KB
4_image1538295535.5267653.jpg 6KB
2_image1538298618.7444003.jpg 6KB
4_image1538295541.9657376.jpg 6KB
4_image1538295544.4319046.jpg 6KB
4_image1538295543.2708297.jpg 6KB
4_image1538295540.7293901.jpg 6KB
0_image1538295766.122626.jpg 6KB
4_image1538295539.5805078.jpg 6KB
0_image1538295766.309164.jpg 6KB
4_image1538295541.8654892.jpg 6KB
4_image1538295539.3522887.jpg 6KB
4_image1538295543.9326854.jpg 6KB
4_image1538295539.3147745.jpg 6KB
0_image1538295765.7504265.jpg 6KB
0_image1538295940.3211203.jpg 6KB
2_image1538298619.231457.jpg 6KB
4_image1538295539.7367744.jpg 6KB
0_image1538295752.920506.jpg 6KB
2_image1538296979.5435905.jpg 6KB
0_image1538295767.237082.jpg 6KB
0_image1538295767.1788077.jpg 6KB
1_image1538296754.8389828.jpg 6KB
0_image1538295765.6108341.jpg 6KB
1_image1538297763.5197423.jpg 6KB
2_image1538297183.6737685.jpg 6KB
2_image1538297136.7107944.jpg 6KB
0_image1538295940.1239746.jpg 6KB
2_image1538297138.3716311.jpg 6KB
0_image1538295755.0359244.jpg 6KB
0_image1538295766.6782823.jpg 6KB
1_image1538296755.4070442.jpg 6KB
2_image1538298618.3245971.jpg 6KB
2_image1538295319.567199.jpg 6KB
2_image1538295318.536468.jpg 6KB
2_image1538296979.6969876.jpg 6KB
2_image1538295322.6134293.jpg 6KB
2_image1538295323.0654798.jpg 6KB
2_image1538298618.289829.jpg 6KB
2_image1538297763.6054714.jpg 6KB
0_image1538295766.6130702.jpg 6KB
2_image1538295319.9669344.jpg 6KB
2_image1538295323.7995634.jpg 6KB
2_image1538295319.9338415.jpg 6KB
2_image1538295323.2691643.jpg 6KB
2_image1538295320.5000012.jpg 6KB
2_image1538295324.9988155.jpg 6KB
2_image1538295323.1015906.jpg 6KB
2_image1538295322.6739058.jpg 6KB
2_image1538297013.9318419.jpg 6KB
2_image1538297461.932244.jpg 6KB
2_image1538295321.9329734.jpg 6KB
2_image1538297014.1076195.jpg 6KB
0_image1538295940.021414.jpg 6KB
2_image1538297462.987747.jpg 6KB
2_image1538297462.4330318.jpg 6KB
0_image1538295281.3574743.jpg 6KB
2_image1538295325.3988984.jpg 6KB
0_image1538295275.027631.jpg 6KB
2_image1538297462.8279147.jpg 6KB
1_image1538297765.438697.jpg 6KB
2_image1538297461.0581193.jpg 6KB
0_image1538295758.914315.jpg 6KB
0_image1538295275.0580473.jpg 6KB
0_image1538295758.2426214.jpg 6KB
0_image1538295768.2601302.jpg 6KB
2_image1538297463.2268155.jpg 6KB
2_image1538297462.1832662.jpg 6KB
2_image1538297136.60303.jpg 6KB
2_image1538298356.499487.jpg 6KB
2_image1538297461.1188686.jpg 6KB
0_image1538295939.7880876.jpg 6KB
0_image1538295274.585463.jpg 6KB
2_image1538297461.6267028.jpg 6KB
2_image1538297463.0536902.jpg 6KB
0_image1538295756.8766615.jpg 6KB
0_image1538295959.8449433.jpg 6KB
2_image1538297138.1641893.jpg 6KB
2_image1538297464.1099887.jpg 6KB
2_image1538297460.423517.jpg 6KB
2_image1538297760.4837828.jpg 6KB
2_image1538298356.5285878.jpg 6KB
2_image1538297460.321079.jpg 6KB
2_image1538295313.4710023.jpg 6KB
2_image1538295292.5494952.jpg 6KB
2_image1538295313.375506.jpg 6KB
0_image1538297022.824691.jpg 6KB
0_image1538295958.3709097.jpg 6KB
2_image1538297459.5013077.jpg 6KB
共 2002 条
- 1
- 2
- 3
- 4
- 5
- 6
- 21
资源评论
土豆片片
- 粉丝: 1840
- 资源: 5690
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 所有算法均在 Python 3 中实现,是 hacktoberfest2020 的一个项目 - 没有针对 hacktoberfest 2021 的问题或 PR.zip
- 用springmvc实现的校园选课管理系统
- 我的所有 Python 代码都存储在这个文件夹中 .zip
- 以下是关于毕业设计项目开发的详细资源.docx
- 嵌入式系统安全-C2000 MCU利用JTAGLOCK特征增强设备安全性
- 在Android Studio中创建一个简单的计算器应用.docx
- 我的 Python 演示.zip
- 以下是关于MySQL的详细学习资源.docx
- 西安电子科技大学的微机原理实验.docx
- OpenCV入门教程及案例.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功