📌 专栏:嵌入式AI实战项目合集
🔥 前置项目:AI智能激光灭蚊机器人完整开源教程(双硬件方案+全套源码)
💡 适用人群:大学生课设、嵌入式科创竞赛、嵌入式AI零基础开发者
✅ 配套资料:LabelImg标注模板 + YOLOv8训练yaml配置 + 完整训练脚本 + ONNX量化脚本
一、前言
上期更新了AI智能激光灭蚊机器人完整版实战教程,很多小伙伴私信我索要配套的数据集标注文件、模型训练配置文件。
本期直接免费开源全套配套文件,无需修改、开箱即用,完美适配项目里的双目标检测:蚊虫(0)、人体(1),全程和下位机串口代码、树莓派Python推理代码一一对应,不会出现类别错乱、识别不匹配问题。
⚠️重要提醒:类别顺序绝对不能调换!调换会导致人体和蚊虫识别完全颠倒,激光安全防护直接失效。
二、项目数据集整体目录(直接照搬)
标准YOLO数据集目录,符合官方规范,训练零报错:
mosquito_dataset/
├── images/
│ ├── train/ # 训练集图片 80%
│ ├── val/ # 验证集图片 10%
│ └── test/ # 测试集图片 10%
├── labels/
│ ├── train/ # 训练集标签txt
│ ├── val/ # 验证集标签txt
│ └── test/ # 测试集标签txt
└── mosquito_person.yaml # YOLOv8核心训练配置文件
三、数据集标注模板(LabelImg专用,直接复制)
3.1 标签配置文件 classes.txt
放在LabelImg安装根目录,打开软件自动加载标签,不用手动输入:
txt
mosquito
person
对应索引:0=蚊虫,1=人体(和程序硬编码完全一致)
3.2 LabelImg标注关键设置(避坑必看)
- 左上角切换格式:PascalVOC 改为 YOLO
- View勾选:Auto Save 自动保存标签
- 禁止中文路径、禁止图片中文名,否则训练报错
- 标注要求:蚊虫紧贴虫体,人体标注手部/脸部/全身均可,补齐暗光、逆光复杂场景图片
3.3 YOLO标签txt标准模板
归一化坐标格式:类别id x y w h
txt
# 单蚊虫目标
0 0.452 0.336 0.041 0.039
# 单人体目标
1 0.361 0.425 0.485 0.562
# 蚊虫+人体共存场景(设备核心场景)
0 0.712 0.291 0.036 0.033
1 0.255 0.521 0.472 0.558
四、YOLOv8官方训练配置文件 mosquito_person.yaml
直接复制保存,修改path路径即可开始训练,适配nano轻量化模型,嵌入式友好:
yaml
# ==================== AI激光灭蚊机器人 数据集配置 ====================
# 数据集根路径,根据自己电脑路径自行修改
path: D:/AI_Project/mosquito_dataset
train: images/train
val: images/val
test: images/test
# 检测类别数量
nc: 2
# 对应类别名称,禁止调换顺序
names:
0: mosquito
1: person
# 轻量化数据增强,适配小样本数据集,防止过拟合
augment:
hsv_h: 0.015
hsv_s: 0.7
hsv_v: 0.4
degrees: 10.0
flipud: 0.2
fliplr: 0.5
五、完整可直接运行训练代码 train.py
参数和前文项目完全对齐:120轮迭代、0.4置信度、自动导出ONNX嵌入式模型,CPU/GPU均可运行
python
from ultralytics import YOLO
# 加载预训练轻量化YOLOv8-nano模型,嵌入式最优选择
model = YOLO("yolov8n.pt")
if __name__ == '__main__':
# 模型训练
results = model.train(
data="mosquito_person.yaml",
epochs=120,
imgsz=640,
batch=8,
conf=0.4,
patience=20,
device=0, # 无GPU改为 device="cpu"
workers=2,
project="runs/train",
name="mosquito_person_nano",
exist_ok=True
)
# 模型验证
model.val()
# 导出嵌入式专用ONNX模型(树莓派/ESP32-S3通用)
model.export(format="onnx", opset=12)
print("✅ 训练完成,ONNX模型导出成功,可直接用于嵌入式部署")
六、INT8模型量化脚本(嵌入式提速必备)
针对ESP32-S3、树莓派算力弱问题,量化后推理帧率提升40%,解决画面卡顿、云台跟随延迟问题
python
from onnxruntime.quantization import quantize_dynamic, QuantType
# 原始模型路径 & 量化后模型保存路径
origin_onnx = "runs/train/mosquito_person_nano/weights/best.onnx"
quant_onnx = "mosquito_person_nano_int8.onnx"
# 动态INT8量化
quantize_dynamic(
origin_onnx,
quant_onnx,
weight_type=QuantType.QUInt8
)
print("✅ 模型INT8量化完成,嵌入式设备运行帧率大幅提升")
安装依赖:
bash
pip install onnxruntime onnxruntime-tools
七、常见训练&标注报错解决
| 报错现象 | 解决方案 |
|---|---|
| 找不到数据集路径 | yaml文件内path改为绝对路径,全部文件夹无中文 |
| 识别人体和蚊虫颠倒 | 严禁调换yaml和classes.txt内部类别顺序 |
| 嵌入式推理帧率低 | 使用INT8量化模型,关闭opencv画面预览 |
| 小样本过拟合 | 降低batch,适度减少图像旋转增强角度 |
八、配套项目全套资料汇总
- ✅ ESP32-S3+Arduino下位机全套源码
- ✅ 树莓派4B一体化Python完整源码
- ✅ 双版本硬件采购清单
- ✅ 数据集标注模板+训练配置文件
- ✅ 整机调试故障排查手册