Skip to content

Repository files navigation

YOLO Data Batch Preprocess

一组用于 YOLO 数据集批处理的小工具,覆盖常见的数据准备流程:

  • 批量按同一区域裁剪图片,并同步修正 YOLO 检测/分割标签。
  • 批量增强图片,并复制对应标签。
  • 将 YOLO 标签转换为 LabelMe JSON,便于人工检查。
  • 按图片文件名从旧数据集复制同名标签。

这个仓库主要解决数据处理后标签仍需保持一致的问题。裁剪时会同步裁剪并重新归一化 detection 边界框和 segmentation 多边形,而不是只处理图片。

环境

建议使用 Python 3.10 或更新版本。

python -m venv .venv
.\.venv\Scripts\activate
pip install -r requirements.txt

labelme 只在需要打开人工标注/检查界面时使用;如果只运行裁剪、增强和标签匹配脚本,可以不安装它。

数据目录约定

工具默认使用 YOLO 常见目录结构:

dataset_root/
  images/
    xxx.jpg
  labels/
    xxx.txt

仓库中的 sample_folder/ 是一个最小示例。处理结果保存在 new_data/,其中生成的图片、标签和中间文件已加入 .gitignore

使用方式

1. 批量裁剪

Windows 下可双击:

.\batch_crop.bat

或直接运行:

python .\batch_cropping.py

选择 images 目录或多张图片后,在第一张图上框选裁剪区域。程序会对全部图片使用同一裁剪区域,并把结果输出到 new_data/temp_crop/imagesnew_data/temp_crop/labels

2. 批量增强

Windows 下可双击:

.\batch_enhance.bat

或直接运行:

python .\batch_enhancing.py

默认增强配置保存在 config/enhance/e0.json。生成结果默认输出到 new_data/temp_<配置名>/imagesnew_data/temp_<配置名>/labels

3. 生成 LabelMe 检查文件

python .\labels_checking.py .\sample_folder --check check

输出目录默认为 check/<数据集目录名>/。脚本会复制图片并生成同名 .json,方便用 LabelMe 打开检查。

如果有类别名配置,可通过 --data 指定 YOLO 的 data.yaml / data.txt

python .\labels_checking.py .\sample_folder --data .\data.yaml

4. 按文件名补齐标签

python .\labels_matching.py --new .\new_data\pending_data --old .\old_data_det

脚本会读取 --new 目录下的 images,从 --old/labels 中复制同名 .txt--new/labels

5. 打开 LabelMe

.\labelme_enter.bat

等价于运行 labelme。如果你使用 conda 环境,请先自行激活对应环境。

配置

增强配置文件位于:

config/enhance/e0.json

可在 GUI 中保存新的配置,例如 e1.json。增强输出文件名会附加配置名前缀,例如 image_e0.jpg

测试

pip install -r requirements-dev.txt
python -m pytest -q

测试覆盖检测框裁剪与重新归一化、裁剪边界截断、YOLO 到 LabelMe 的转换,以及按文件名补齐标签。

仓库内容

.
├── batch_cropping.py      # 批量裁剪并同步 YOLO 标签
├── batch_enhancing.py     # 批量图像增强并复制标签
├── labels_checking.py     # YOLO 标签转 LabelMe JSON
├── labels_matching.py     # 按图片名复制匹配标签
├── config/enhance/e0.json # 默认增强配置
├── sample_folder/         # 最小示例数据
├── tests/                 # 标签处理测试
├── requirements-dev.txt   # 测试依赖
└── new_data/.gitkeep      # 本地输出目录占位

注意事项

  • 支持 .jpg.jpeg.png.bmp.tif.tiff.webp
  • 裁剪脚本支持 YOLO detection 和 segmentation 标签。
  • new_data/ 中的处理结果和 check/ 中的检查文件已加入 .gitignore

About

Dataset preprocessing toolkit for YOLO detection and segmentation, including synchronized cropping, augmentation, label inspection and LabelMe conversion.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages