Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MyAutoTrain

一个面向 YOLO 目标检测与图像分类的桌面训练工具集。它把采集/整理数据、跟踪标注、模型训练、模型导出和推理测试整合到同一套流程中,适合在 Windows 上快速完成从原始图片或视频到可测试模型的工作。

教程在哪里呢

教程在【【Yolo】视频追踪自动标注、训练、预测一体化平台-哔哩哔哩】 https://b23.tv/46vfMeu

能做什么

  • 通过浏览器面板集中操作训练、标注、导出和测试功能。
  • 从视频、摄像头或有序图片中抽帧,并通过目标跟踪辅助生成 VOC XML 标注。
  • 使用图片和 VOC XML 标注训练 YOLO 目标检测模型。
  • 使用按类别分目录的图片训练 YOLO 图像分类模型。
  • 支持本地训练,也支持提交到远程 Windows 训练环境。
  • 导出 ONNX 模型,并可进一步转换为 MaixCAM 可用模型。
  • 使用训练得到的 .pt 模型测试摄像头、单张图片或整个图片文件夹。

使用前准备

1. 安装 Python

请安装 Python 3.103.113.12,安装时勾选“Add Python to PATH”。在项目目录打开 PowerShell 后运行:

python --version

能显示版本号即可继续。

2. 安装依赖

在项目根目录执行:

python -m pip install -r requirements.txt

如需使用 NVIDIA 显卡训练,请先确认显卡驱动正常,再根据你的 CUDA 环境安装匹配版本的 PyTorch。没有显卡也可以使用 CPU 训练,但速度会明显更慢。

3. 创建本机配置

首次使用请复制配置示例:

Copy-Item train_panel_defaults.example.json train_panel_defaults.json

随后打开 train_panel_defaults.json,按需要填写你的数据目录、模型目录和远程训练地址。该文件仅保存本机设置,不需要分享给其他人。

启动训练面板

推荐直接运行:

.\train_panel.ps1

也可以执行:

python train_panel.py --host 127.0.0.1 --port 8989

启动后,在浏览器中访问:

http://127.0.0.1:8989

面板中可选择训练任务、数据目录、模型、训练参数,以及标注和测试功能。填写完成后按界面提示执行即可。

数据准备

目标检测

目标检测需要图片和对应的 VOC XML 标注文件。

你的数据目录/
├─ images/          # 图片,例如 001.jpg、002.jpg
└─ annotations/     # 对应标注,例如 001.xml、002.xml

要求:

  • 图片与 XML 文件应同名,例如 001.jpg 对应 001.xml
  • XML 内的类别名称应保持一致,例如全部使用 seed,不要混用 Seedseed 和中文名称。
  • 每个 XML 标注框应位于图片范围内。
  • 尽量准备足够多、光照和背景有差异的数据,以提升模型泛化效果。

图像分类

图像分类按“一个类别一个文件夹”的方式准备数据:

你的分类数据目录/
├─ healthy/
│  ├─ 001.jpg
│  └─ 002.jpg
├─ damaged/
│  ├─ 003.jpg
│  └─ 004.jpg
└─ unknown/
   └─ 005.jpg

文件夹名称就是分类标签。各类别图片数量尽量保持平衡,避免某一个类别图片远多于其他类别。

视频跟踪标注

可通过视频或摄像头快速生成训练图片和 VOC XML 标注。基本示例:

python video_track_label.py --video path\to\video.avi --labels object --images-dir images --annotations-dir annotations

常用参数:

  • --video:视频文件路径;也可填写摄像头编号。
  • --labels:类别名称;多个类别以英文逗号分隔,例如 seed,defect
  • --images-dir:保存抽帧图片的目录。
  • --annotations-dir:保存 XML 标注的目录。
  • --interval:每隔多少帧保存一次,数值越小,保存图片越密集。
  • --tracker:跟踪方式;默认推荐 csrt

运行过程中先在画面中框选目标,工具会尝试在后续画面中持续跟踪。请定期检查跟踪框是否偏移;目标遮挡、快速移动或画面变化较大时,应重新框选后再继续保存。

模型训练

建议优先在 Web 面板中操作:选择任务类型、填写数据路径、设置训练轮数和基础模型后开始训练。

常见参数建议:

参数 建议
图片尺寸 640 开始;小目标可适当提高,但显存占用也会增加。
训练轮数 首次可用 50100 轮;数据量较大或效果不足时再增加。
批量大小 显存充足时可增大;如果显存不足,设置为较小值或使用 -1 自动选择。
基础模型 检测任务可选择 yolov8n.ptyolo11n.pt 等;分类任务请选择带 -cls 的模型。
训练设备 有可用 NVIDIA 显卡时选择 cuda;否则选择 cpu

训练完成后,常用模型文件为 best.pt,它通常表示验证效果最好的权重。训练输出目录会保存曲线、指标和导出文件,便于对比不同实验结果。

测试模型

测试单张图片

python model_test.py --model path\to\best.pt --source image --image path\to\test.jpg

程序会显示预测结果,并在原图片旁生成带标注的预测图片。

批量测试图片文件夹

python model_test.py --model path\to\best.pt --source folder --folder path\to\images --output-dir predict_results

结果图片和 predictions.csv 会保存到指定输出目录;不指定 --output-dir 时,默认保存到输入文件夹的 predict_results 子目录。

测试摄像头

python model_test.py --model path\to\best.pt --source camera --camera-index 0

QEsc 退出预览窗口。若电脑连接多个摄像头,可尝试将 --camera-index 改为 12 等。

导出与 MaixCAM 转换

训练流程可以导出 ONNX 模型。若需要部署到 MaixCAM,可在面板中配置模型路径、类别文件、校准图片目录和测试图片,然后执行转换。

转换 MaixCAM 模型前,请确认:

  • ONNX 模型与类别文件来自同一次训练。
  • 校准图片与实际使用场景尽量接近。
  • 转换环境需要 Docker。默认开启容器内 TPU-MLIR 自动补齐:当镜像没有转换工具时,脚本会执行 python3 -m pip install tpu_mlir 后继续;这要求 VM 可从容器访问对应 Python 软件源。首次执行会更慢,且自动安装只保存在本次临时容器中。
  • 更稳定的做法是使用已验证的固定镜像标签,并通过 IMAGE_NAME 指定;若希望禁止自动安装,设置 AUTO_INSTALL_TPU_MLIR=0。如需固定自动安装的包版本,可设置 TPU_MLIR_PIP_SPEC=tpu_mlir==<版本>
  • 输出模型适配目标设备;转换后建议先使用测试图片验证识别结果。

MUD 后处理参数

MUD Model Type 必须与实际导出的 ONNX 输出和设备端后处理协议一致,不能仅根据训练权重名称填写。即使训练基础权重名为 yolov5s.pt,当前 Ultralytics 导出的 ONNX 也可能是无锚框输出;此时应使用对应的无锚框 MUD 类型(例如 yolov8)并将 MUD Anchors 留空。

仅当同时满足以下条件时,才填写 MUD Anchors

  1. MUD Model Type 明确选择为 yolov5
  2. 设备端使用传统锚框 YOLOv5 后处理,并且加载日志要求 anchors
  3. 该 ONNX/模型确实来自传统锚框 YOLOv5 导出。

满足上述条件时,MUD Anchors 为必填项。填写训练或导出配置中实际使用的 anchors,以英文逗号分隔,例如:

10, 13, 16, 30, 33, 23, 30, 61, 62, 45, 59, 119, 116, 90, 156, 198, 373, 326

上述数值仅适用于确实使用该默认 YOLOv5 anchors 的模型;若训练启用了自动锚框优化或使用自定义配置,必须改用该模型训练/导出时的最终 anchors。转换流程会拒绝缺少 anchors 的 YOLOv5 MUD,防止生成设备端无法加载的模型。

历史 outputs_*convert_outputs_* 目录内的 vm_convert_pack.sh 是生成当时的归档副本,不要直接执行,也不要重新运行旧 ZIP 或 VM 上遗留的 job_* 目录;其中可能仍将容器 /workspace 覆盖为转换目录,导致 TPU-MLIR 环境不可见。需要重新转换时,请从项目根目录通过面板或 host_train_export.py 发起,重新生成任务包。

每次新转换的日志都会先输出 CONVERT_SCRIPT_SOURCECONVERT_SCRIPT_PACKAGECONVERT_SCRIPT_REVISION=20260726-yolov8-head-outputs-v2。如果缺少该修订号,说明执行的仍是旧归档脚本,应停止并用当前面板重新发起转换。

设备端类与 MUD 类型必须一致

.mudmodel_type 不是训练基础权重的名称,而是 MaixPy 设备端后处理协议,必须与代码中的类一致:

设备端代码 MUD model_type 转换输出要求
nn.YOLOv5(model=...) yolov5 传统锚框 YOLOv5 输出;必须有真实 anchors
nn.YOLOv8(model=...) yolov8 无锚框 YOLOv8 式输出;转换必须选择 DFL 和分类 Sigmoid 两个检测头输出。

例如,ball_3.onnx 虽由 yolov5s.pt 基础权重训练,但其 ONNX 元数据为 Ultralytics 8.4.98、检测头为无锚框 Detect 格式。因此应使用 nn.YOLOv8 + model_type = yolov8,并且必须使用本脚本修订号 20260726-yolov8-head-outputs-v2 重新转换。旧版脚本只转换 ONNX 的单个 output0,会导致 nn.YOLOv8.detect()model output not valid

常见问题

启动面板后无法打开网页

  • 确认终端没有报错,并访问 http://127.0.0.1:8989

  • 如果端口被占用,可改用其他端口,例如:

    python train_panel.py --host 127.0.0.1 --port 8990

提示找不到 cv2ultralytics 或其他模块

请重新安装依赖:

python -m pip install -r requirements.txt

如系统同时安装了多个 Python,请使用启动程序时对应的 Python 执行安装命令。

跟踪标注无法使用 CSRT

请安装带扩展模块的 OpenCV:

python -m pip install --upgrade opencv-contrib-python

安装完成后重新启动标注工具。

训练时显存不足

  • 降低批量大小,例如从 16 改为 84
  • 降低图片尺寸,例如从 640 改为 448
  • 使用更小的基础模型,例如 yolov8n.pt
  • 关闭训练缓存或切换为 CPU 训练。

训练效果不稳定

  • 检查图片与 XML 是否一一对应。
  • 检查类别名称拼写是否完全一致。
  • 删除错误、模糊或重复的标注。
  • 补充复杂背景、不同角度、不同距离和不同光照条件下的数据。
  • 保留一部分未参与训练的数据,用于独立测试模型效果。

数据与模型说明

项目默认不会包含你的图片、视频、标注、模型权重和训练结果。请妥善保管这些文件,并确保对所使用的数据和模型拥有合法的使用与发布权限。

About

一个集自动标注、模型训练、模型评估、模型测试于一体的平台

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages