Ultralytics YOLO27:

将 LabelMe 标注导出为 YOLO 格式并上传到 Ultralytics 平台#

LabelMe 是一款离线图像标注工具,提供开源 Python 应用。你无需在 Ultralytics 平台中配置实时 LabelMe 连接或 API 密钥。整个集成流程都在本地完成:在 LabelMe 中进行标注,使用 LabelMe Toolkit 将 LabelMe JSON 标注转换为 YOLO 格式,然后将生成的 ZIP 文件作为数据集上传。

1. 在 LabelMe 中标注图像#

通过桌面应用或开源 Python 包安装 LabelMe,然后打开存放图像的目录。LabelMe 会将每张图像的标注保存到对应的 JSON 文件中。

对于本指南中的 YOLO 检测流程,请在每个对象周围绘制矩形并指定类别名称。LabelMe 入门指南介绍了如何打开图像、绘制形状和保存标注;LabelMe 数据集指南则介绍了如何检查并准备完整的标注数据集。

源目录应包含图像和 LabelMe JSON 文件:

your_dataset/
├── image_001.jpg
├── image_001.json
├── image_002.jpg
└── image_002.json

2. 安装 LabelMe Toolkit#

按照 LabelMe 的工具包安装指南安装 LabelMe Toolkit。工具包及其导出操作都在本地运行。

导出需要 LabelMe Pro

export-to-yolo 是 LabelMe Pro Toolkit 的一部分,下载其安装程序需要登录 LabelMe。这是 LabelMe 产品本身的要求;生成的 ZIP 文件可通过任何 Platform 套餐上传。

验证安装,然后列出源数据集中找到的所有标签:

labelmetk --version
labelmetk list-labels your_dataset/

导出前请检查输出。未包含在 --class-names 中的标签会被跳过,你提供的标签顺序将成为 YOLO 类别 ID 的顺序。

3. 导出为 YOLO 格式#

使用源目录和以逗号分隔的类别名称列表运行 export-to-yolo:

labelmetk export-to-yolo your_dataset/ --class-names crack,normal

将 crack,normal 替换为 list-labels 返回的标签。LabelMe 会将结果写入 your_dataset.export/:

your_dataset.export/
├── classes.txt
├── images/
│   ├── image_001.jpg
│   └── image_002.jpg
└── labels/
    ├── image_001.txt
    └── image_002.txt

classes.txt 会按照 YOLO 标签文件中使用的顺序保留类别名称。请将它放在导出目录的根目录下。

此流程会创建检测数据集

LabelMe Toolkit 会将矩形导出为 YOLO 边界框。它还会将多边形和掩码简化为轴对齐边界框,因此 export-to-yolo 不会保留分割几何信息。使用此流程准备检测数据集时,请绘制矩形。

4. 创建 ZIP 压缩包#

压缩 your_dataset.export/ 中的内容,而不是包含这些内容的目录。在 macOS 或 Linux 上:

cd your_dataset.export
zip -r ../your_dataset.zip classes.txt images labels

在 Windows PowerShell 中:

Compress-Archive -Path .\your_dataset.export\* -DestinationPath .\your_dataset.zip

上传前请打开 ZIP 文件,确认 classes.txt、images/ 和 labels/ 位于根目录下。多出的 your_dataset.export/ 包装目录会导致 Platform 无法找到根目录中的类别列表。

5. 上传到 Ultralytics 平台#

  1. 打开 设置 > 集成 > LabelMe。
  2. 点击上传导出文件。
  3. 上传 your_dataset.zip 并完成数据集创建。
  4. 等待处理完成,然后检查图像、类别和标注。
  5. 在同一工作区中编辑标注、训练模型并部署模型。

Ultralytics 平台 LabelMe 数据集导入

LabelMe 和 YOLO 导出流程完全离线运行。只有你在上传对话框中选择的 ZIP 文件会发送到 Platform。

故障排查#

  • **类别名称为 class0、class1 等:**请确认 classes.txt 位于 ZIP 的根目录下。
  • **部分标注缺失:**重新运行 labelmetk list-labels your_dataset/,并在 --class-names 中包含所有必需标签。
  • **多边形变成了框:**这是 LabelMe 的 export-to-yolo 文档中说明的行为;它会将非矩形形状转换为边界框。
  • **数据集没有图像:**请确认导出的 images/ 目录已包含在 ZIP 文件中。
  • **Platform 找不到类别:**移除压缩包中的外层目录,使 classes.txt、images/ 和 labels/ 成为顶层条目。

如需了解完整的本地工作流程,请参阅 LabelMe 的 YOLO 训练指南和 export-to-yolo 参考文档。

常见问题#

  • 不需要。LabelMe 和导出流程都在本地运行,只有你上传的 ZIP 文件会发送到 Platform。export-to-yolo 命令属于 LabelMe Pro Toolkit,这是 LabelMe 的要求;不过,生成的 ZIP 文件可通过任何 Platform 套餐上传。

  • 此流程不支持。LabelMe Toolkit 会将多边形和掩码简化为轴对齐边界框,因此结果始终是检测数据集。准备此导出所需的数据时,请绘制矩形。

  • Platform 会从 ZIP 根目录下的 classes.txt 中读取类别名称。请压缩导出文件夹中的内容,而不是文件夹本身,这样 classes.txt、images/ 和 labels/ 就会成为顶层条目。

  • 只有传递给 --class-names 的标签会被导出,顺序与列出的顺序一致。请先运行 labelmetk list-labels,并包含所有要保留的标签。

评论