SmartFruit是一款基于单片机、大数据和视觉识别的智能果实分析系统,结合了计算机视觉、嵌入式系统和机器学习技术,实现了水果的自动识别、重量测量和数据管理等功能。通过摄像头识别水果种类,通过重量传感器测量重量,同时将数据存储到数据库中进行管理和分析,对水果零售业进行了革命性的改革,实现了无人化、自动化、智能化营养,淘汰了标签等不利于环境的因素,最终实现了商家基于大数据进行预判式管控、对购买者交互友好的商业模式(具体的商业分析可以参考“基于单片机、大数据和视觉识别的smartfruit智能系统.pdf”文件
“基于单片机、大数据和视觉识别的smartfruit智能系统.pdf”是第一版,后面进行了更新,将单片机更新为了STM32F407VET
由于 Github 有上传文件大小限制,所以无法上传这个 PDF 文件,有需要请通过 README 最后的邮箱联系我
SmartFruit系统由三个主要模块组成:
- 硬件:OV7670摄像头、STM32 F4微控制器
- 功能:捕获水果图像,通过串口传输图像数据到计算机
- 技术:DCMI接口图像采集,UART串口通信
- 硬件:HX711重量传感器、STM32微控制器
- 功能:精确测量水果重量,数据通过串口传输到计算机
- 技术:HX711信号放大和转换,串口数据传输
- 框架:YOLOv5目标检测
- 功能:水果种类识别、数据分析与存储
- 技术:深度学习、MySQL数据库、Python数据处理
- 实时水果识别:能够识别至少18种不同种类的水果,包括苹果、香蕉、橙子、草莓、猕猴桃等
- 精确重量测量:通过高精度传感器测量水果重量
- 数据管理与分析:结合MySQL数据库存储和管理测量数据
- 跨平台兼容:支持Windows、macOS和Linux系统
- 模型导出功能:支持将训练好的模型导出为ONNX、TFLite等格式,方便在单片机上部署
OV7670摄像头通过STM32 F4微控制器的DCMI接口采集图像,然后通过高速串口(UART)将图像数据传输到计算机。计算机端使用Python程序接收图像数据,并结合YOLOv5模型进行水果种类识别。
# 运行视觉模块显示程序
python ov7670_image_display.py -p COMx使用YOLOv5框架训练水果识别模型,识别过程包括:
- 准备带标签的水果图像数据集
- 配置训练参数(fruits.yaml)
- 使用迁移学习训练YOLOv5模型
- 将模型部署到应用程序中
# 训练水果识别模型
python train_fruits.py --epochs 100 --batch-size 16 --img-size 640
# 导出优化后的模型
python export_model.py --img-size 320 --format onnx重量传感器通过HX711模块将模拟信号转换为数字信号,由STM32微控制器读取并通过串口发送到计算机。计算机端程序接收重量数据,并存储到MySQL数据库中。
# 运行重量数据采集与存储程序
python duqu3.py
# 查看数据库中的重量记录
python db_monitor.py- Python 3.7或更高版本
- PyTorch 1.7或更高版本(用于YOLOv5)
- OpenCV 4.5或更高版本
- MySQL数据库
- STM32开发环境(Keil MDK或STM32CubeIDE)
-
克隆仓库到本地:
git clone https://github.com/yourusername/smartfruit.git cd smartfruit -
安装Python依赖:
pip install -r requirements.txt -
配置数据库:
- 创建MySQL数据库
weight_data - 导入数据库结构(可选)
- 创建MySQL数据库
-
硬件连接:
- 将OV7670摄像头连接到STM32 F4开发板
- 将重量模块连接到另一STM32开发板
- 通过串口将两个模块连接到计算机
-
烧录相应固件到STM32开发板:
- 视觉模块固件
- 重量模块固件
-
启动视觉识别程序:
python ov7670_image_display.py -p COMx -
启动重量数据采集程序:
python duqu3.py -
访问数据管理界面:
python db_monitor.py
如需重新训练水果识别模型,按照以下步骤操作:
- 准备数据集,放置在
机器学习/dataset目录下 - 修改
fruits.yaml配置类别和路径 - 运行训练脚本:
python train_fruits.py --epochs 200 --batch-size 16 - 等待训练完成,模型将保存在
models目录下
- 收集新水果的图像
- 使用标注工具标注图像
- 更新
fruits.yaml中的类别列表 - 重新训练模型
修改重量模块固件中的校准参数,适应不同量程的需求。
-
视觉模块图像不显示
- 检查摄像头连接
- 确认串口配置正确
- 查看Python控制台错误信息
-
水果识别不准确
- 尝试改善光照条件
- 提供更多训练数据
- 调整模型识别阈值
-
重量测量不稳定
- 检查传感器连接
- 重新校准重量传感器
- 确保测量平台稳定
欢迎对SmartFruit项目做出贡献!请按照以下步骤:
- Fork本仓库
- 创建新的特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建Pull Request
项目维护者: ceilf6 邮箱: 3506456886@qq.com
SmartFruit - 让果实商业更智能