Files
knife-ai-train/train_and_export.py
T
yuzl6 1753cafaab feat(yolo): 添加刀具识别AI模型训练与自动标注功能
- 新增 README.md 文档,包含完整的 YOLOv8 训练环境搭建指南
- 添加 docker-compose.yml 配置文件,支持 Mac M系列环境下的容器化部署
- 实现 train_and_export.py 核心脚本,集成模型训练、验证和ONNX格式导出功能
- 创建 data.yaml 数据集描述文件,定义刀具分类(普通刀具和管制刀具)
- 开发 auto_label.py 自动标注脚本,支持AI辅助的数据集标注处理
- 集成 YOLOv8 中型模型,优化标注准确率和识别能力
- 添加数据集验证和可视化功能,便于标注质量检查
2026-03-10 17:15:05 +08:00

45 lines
1.4 KiB
Python

import os
from ultralytics import YOLO
def main():
# 1. 选择基础模型 (yolov8n 是最轻量级,适合嵌入式和实时推理)
print(">>> 正在加载预训练模型...")
model = YOLO('yolov8n.pt')
# 2. 开始训练
# data: 指向 data.yaml 路径
# epochs: 训练轮数 (模拟测试可设为 1-5,正式环境建议 100+)
# imgsz: 图片输入尺寸 (标准为 640)
# device: 'cpu' (Docker 模拟环境建议用 cpu)
print(">>> 启动模型训练...")
results = model.train(
data='/usr/src/app/datasets/knife_data/data.yaml',
epochs=10,
imgsz=640,
device='cpu',
project='models',
name='knife_task'
)
# 3. 验证模型 (在验证集上跑一遍结果)
print(">>> 正在执行模型验证...")
metrics = model.val()
print(f"模型精度 (mAP@50-95): {metrics.box.map}")
# 4. 导出为 ONNX 格式 (Java / Spring Boot 推理必选)
# format: 'onnx'
# opset: 推荐 12-17,确保 Java 库的兼容性
# slim: 压缩模型,减少体积
print(">>> 正在导出为 ONNX 格式...")
onnx_path = model.export(
format='onnx',
imgsz=640,
opset=12,
simplify=True
)
print(f"\n[成功] 模型训练、验证与导出已完成!")
print(f"最终推理模型位于: {onnx_path}")
if __name__ == "__main__":
main()