【YOLO】X-AnyLabeling 半自动标注

【YOLO】X-AnyLabeling 半自动标注

  • 前言
  • 整体思路
  • 模型转换
  • 修改模型 YAML 文件
  • 导入自定义模型
  • 常见错误
    • export 导出错误
      • AttributeError: module 'numpy' has no attribute 'typeDict'
      • ONNX: export failure: Unsupported ONNX opset version: 13
    • X-AnyLabeling 加载自定义模型报错

前言

本文介绍如何使用 X-AnyLabeling 进行半自动图像标注。

大致原理:
先用小数据集训练一个初步模型,让其自动标注更多数据,再人工修正不准确的部分,最终导出完整数据集进行训练,以提升模型精度。

关联文章:

  • 【YOLO V5】目标检测 WSL2 AutoDL VScode SSH
  • 【YOLO】数据集标注 X-Anylabeling
  • 【YOLO】AutoDL 训练模型

参考资料:

  • X-AnyLabeling 自定义模型
  • X-AnyLabeling自动标注数据集并训练自己的YOLO11目标检测模型
  • 【YOLO】X-AnyLabeling自动标注工具,AI帮你解放双手

整体思路

制作小数据集–训练小模型–模型转换–修改模型YAML文件–导入自定义模型AI标注–全部微调后导出数据集

  1. 制作小数据集:请参考【YOLO】数据集标注 X-Anylabeling
  2. 训练小模型:请参考【YOLO】AutoDL 训练模型
  3. 模型转换:将训练好的 .pt 文件转换为 .onnx 格式
  4. 修改模型 YAML 文件:调整模型配置文件,使 X-AnyLabeling 能正确读取模型信息
  5. 导入小模型进行 AI 标注:加载小模型及其配置文件,实现自动标注。
  6. 微调并导出数据集:手动修正标注后,导出完整数据集。请参考【YOLO】数据集标注 X-Anylabeling

模型转换

参考文档:X-AnyLabeling 自定义模型

  1. 安装依赖库
pip install onnx coremltools onnx-simplifier
  1. 转换模型
    由于 X-AnyLabeling 需要使用 ONNX 格式的模型进行推理,而 YOLO 训练得到的权重默认为 .pt 格式,因此需要将其转换为 ONNX 以确保兼容性。
python export.py --weights /home/abaaba/yolo/yolo_v5/yolov5-6.0/best.pt --include onnx

ps:X-AnyLabeling 使用 ONNX 进行推理,因为它具备跨框架兼容性、优化的推理性能、轻量化部署能力,并且是官方支持的标准格式。相比 .pt,ONNX 更高效且适用于多种硬件和应用场景,因此需要先将 .pt 转换为 ONNX,确保模型能够正确加载并用于自动标注。

修改模型 YAML 文件

参考文档:X-AnyLabeling 自定义模型

X-AnyLabeling 的自训练模型需要自定义的 YAML 文件,以便软件正确解析和使用模型,而不仅仅依赖 ONNX 权重。

  1. 下载 YAML 文件
    点击Model List下载所需 YAML 文件
  2. 示例 yolov5s.yaml
type: yolov5
name: yolov5s-r20230520
display_name: YOLOv5s Ultralytics
model_path: 'C:\Users\agt26\OneDrive\Desktop\dataset-anylabeling\best.onnx'
nms_threshold: 0.45
confidence_threshold: 0.25
classes:
  - fruit
  - veg
  - drink
  1. 修改参数

参数说明
type 和 name不可修改,否则可能导致 X-AnyLabeling 无法识别模型
display_name可自定义,用于前端显示模型名称
model_path:需修改为实际的 .onnx 模型文件路径。注意路径格式必须严格遵循上述示例,否则可能导致 X-AnyLabeling 报错或崩溃。
classes:需调整为模型识别的类别名称,顺序必须与 classes.txt 中的标签一致

导入自定义模型

  1. 加载模型
    点击 加载自定义模型,选择上一步修改好的 YAML 文件

【YOLO】X-AnyLabeling 半自动标注_第1张图片
2. 验证模型效果
成功加载后,界面如下:【YOLO】X-AnyLabeling 半自动标注_第2张图片
3. 测试与批量推理

  • 选择合适的置信度,运行几张图片,检查标注效果
  • 若结果基本合理,点击 一次运行所有图片,完成整批推理。
  • 推理完成后,手动微调标注,再导出数据集。
    【YOLO】X-AnyLabeling 半自动标注_第3张图片
  1. 导出数据集
    具体操作请参考:【YOLO】数据集标注 X-Anylabeling

常见错误

export 导出错误

AttributeError: module ‘numpy’ has no attribute ‘typeDict’

这个错误是由于 numpy 版本不兼容导致的。numpy 的新版本中移除了 typeDict 属性。可以通过降级 numpy 版本来解决这个问题。尝试安装一个较旧的 numpy 版本,例如 1.21.0:

pip install numpy==1.21.0

ONNX: export failure: Unsupported ONNX opset version: 13

果遇到 ONNX: export failure: Unsupported ONNX opset version: 13 错误,请尝试使用较低的 opset 版本:

python export.py --weights /home/abaaba/yolo/yolo_v5/yolov5-6.0/best.pt --include onnx --opset 12

X-AnyLabeling 加载自定义模型报错

X-AnyLabeling 加载自定义模型时报错,通常是由于 .yaml 文件中的 .onnx 路径格式不正确。请确保路径严格符合示例 .yaml 文件的格式,并检查 classes 是否与标签顺序一致,以避免错误。

你可能感兴趣的:(YOLO)