Self-Driving Pi Car数据收集实战:从摄像头采集到图像标签的完整教程

【免费下载链接】self_driving_pi_car A deep neural network based self-driving car, that combines Lego Mindstorms NXT with the computational power of a Raspberry Pi 3. 【免费下载链接】self_driving_pi_car 项目地址: https://gitcode.com/gh_mirrors/se/self_driving_pi_car

Self-Driving Pi Car是一个基于深度神经网络的自动驾驶项目,它将Lego Mindstorms NXT与Raspberry Pi 3的计算能力相结合,让你能够打造属于自己的自动驾驶小车。数据收集是训练自动驾驶模型的基础,本教程将带你完成从摄像头图像采集到数据标签生成的全过程。

准备工作:环境搭建与依赖安装

开始数据收集前,需要先配置好开发环境。项目提供了详细的依赖清单,确保你已安装所有必要组件:

  1. 克隆项目仓库:
git clone https://gitcode.com/gh_mirrors/se/self_driving_pi_car
  1. 安装Python依赖:
pip install -r requirements.txt
pip install -r raspberry_pi_requirements.txt

数据收集核心组件解析

项目的数据收集功能主要由self_driving/data_collection/DataCollector.py模块实现,该模块包含两个关键类:

  • DataCollector:抽象基类,提供图像保存和数据字典管理的基础功能
  • BasicDiffCollector:继承自DataCollector,专为差分驱动模型设计,支持键盘控制和方向标签(上、下、左、右)

硬件连接要求

数据收集需要以下硬件组件:

  • Raspberry Pi 3(或兼容型号)
  • Lego Mindstorms NXT机器人
  • 摄像头模块(通过vision/Camera.py控制)
  • 蓝牙模块(用于控制NXT机器人)

实战步骤:使用BasicDiffCollector采集数据

1. 启动数据收集程序

通过以下命令启动数据收集脚本:

python self_driving/data_collection/DataCollector.py -n my_dataset

其中-n参数指定数据集文件夹名称,默认为"pista"。

2. 键盘控制与数据采集

程序启动后,你可以使用键盘控制小车并采集数据:

  • 上箭头:前进并记录"up"标签
  • 下箭头:后退(不记录数据)
  • 左箭头:左转并记录"left"标签
  • 右箭头:右转并记录"right"标签
  • Q键:退出程序

每次按键操作时,系统会自动:

  1. 从摄像头捕获图像(通过Camera.take_picture_rgb()方法)
  2. 执行相应的小车控制指令
  3. 将图像保存为PNG文件(格式:{count}.png)
  4. 在数据字典中记录图像与标签的对应关系

3. 数据存储结构

采集的数据将保存在两个位置:

  • 图像文件:保存在{name}/{date}/目录下(如my_dataset/20230702/
  • 标签数据:保存在{name}/{date}_pickle文件中,使用pickle格式存储

数据采集场景示例

为了获得高质量的训练数据,建议在类似下图的标准化赛道上进行采集:

Self-Driving Pi Car赛道示例

这个赛道使用白色胶带在棕色地面上铺设,提供了清晰的视觉边界,有助于模型学习路径跟踪。你可以根据需要调整赛道形状和复杂度,逐步增加训练难度。

数据采集最佳实践

1. 采集足够数量的样本

为了训练出稳健的模型,建议每个方向至少采集200张图像。可以通过多次运行数据收集程序来累积样本。

2. 多样化采集条件

  • 尝试不同的光照条件(白天/夜晚)
  • 改变赛道复杂度(直道、弯道、交叉路口)
  • 调整行驶速度(慢速、中速)

3. 数据质量检查

采集完成后,可以通过self_driving/data_manipulation/test/pictures_for_test/toy_data/目录中的示例图像,检查你的数据质量是否符合要求。

数据后续处理

采集完成的数据可以通过以下模块进行进一步处理:

  • 数据增强:self_driving/data_manipulation/data_aug.py
  • 图像转换:self_driving/data_manipulation/img2array.py
  • 数据处理工具:self_driving/data_manipulation/util.py

这些工具可以帮助你扩展数据集、标准化图像格式,为模型训练做好准备。

总结

数据收集是Self-Driving Pi Car项目中至关重要的一步。通过本教程,你已经了解了如何使用BasicDiffCollector类从摄像头采集图像、生成标签,并掌握了数据采集的最佳实践。有了高质量的训练数据,你就可以开始训练自己的自动驾驶模型了!

下一篇教程将介绍如何使用self_driving/ml_training/模块训练神经网络模型,敬请期待!

【免费下载链接】self_driving_pi_car A deep neural network based self-driving car, that combines Lego Mindstorms NXT with the computational power of a Raspberry Pi 3. 【免费下载链接】self_driving_pi_car 项目地址: https://gitcode.com/gh_mirrors/se/self_driving_pi_car

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐