一个功能强大的数据集处理工具库,支持目标检测数据集的格式转换、可视化和处理。支持水平框(HBB)和旋转框(OBB)两种类型的数据集。
- 🔄 多格式转换:支持主流数据集格式的互相转换
- 👁️ 可视化工具:支持数据集的可视化和标注检查
- ✂️ 目标剪切:支持将目标区域剪切并按类别整理
- 🚀 高性能:多线程并行处理,显著提升处理速度
- 📊 进度监控:实时显示处理进度和详细统计
- 🖼️ 格式支持:支持多种图片格式 (jpg/jpeg/png/tif/tiff)
pip install dataset-tools
支持的格式:
- COCO (.json)
- VOC (.xml)
- YOLO (.txt)
from dataset_tools.hbb import HBBDatasetConverter, HBBDatasetVisualizer, HBBDatasetCropper
# 格式转换
converter = HBBDatasetConverter()
converter.convert(
source_dir="datasets/yolo",
source_format="yolo",
target_format="coco",
output_path="output/annotations.json",
classes_file="datasets/classes.txt"
)
# 数据集可视化
visualizer = HBBDatasetVisualizer()
visualizer.set_class_names(['person', 'car', 'dog'])
visualizer.visualize(
image_path='datasets/images',
label_path='datasets/labels',
format='yolo',
output_dir='output/vis'
)
# 目标剪切
cropper = HBBDatasetCropper()
cropper.crop(
image_path='datasets/images',
label_path='datasets/labels',
output_dir='output/crops',
format='yolo',
classes_file='datasets/classes.txt'
)
支持的格式:
- DOTA (.txt)
- 旋转COCO (.json)
from dataset_tools.obb import OBBDatasetConverter, OBBDatasetVisualizer, OBBDatasetCropper
# DOTA转COCO
converter = OBBDatasetConverter()
converter.set_categories(['plane', 'ship', 'storage-tank'])
converter.dota_to_coco(
dota_dir='datasets/dota',
output_path='output/annotations.json'
)
# 可视化旋转框
visualizer = OBBDatasetVisualizer()
visualizer.set_class_names(['plane', 'ship', 'storage-tank'])
visualizer.visualize(
image_path='datasets/images',
label_path='datasets/labelTxt',
format='dota',
output_dir='output/vis'
)
# 剪切旋转目标
cropper = OBBDatasetCropper()
cropper.crop(
image_path='datasets/images',
label_path='datasets/labelTxt',
output_dir='output/crops',
format='dota'
)
output/
├── crops/ # 剪切结果
│ ├── person/ # 按类别整理
│ │ ├── img1_100_200_300_400.jpg
│ │ └── img2_150_250_350_450.jpg
│ └── car/
│ └── img1_200_300_400_500.jpg
├── visualization/ # 可视化结果
│ ├── hbb/
│ │ ├── img1.jpg
│ │ └── img2.jpg
│ └── obb/
│ ├── img1.jpg
│ └── img2.jpg
└── converted/ # 格式转换结果
├── coco/
│ └── annotations.json
├── voc/
│ └── *.xml
└── yolo/
├── classes.txt
└── *.txt
{
"images": [{"id": 1, "file_name": "xxx.jpg", ...}],
"annotations": [{"id": 1, "image_id": 1, "category_id": 1, "bbox": [x,y,w,h], ...}],
"categories": [{"id": 1, "name": "person", ...}]
}
# classes.txt
person
car
dog
# label.txt (每行: class_id x_center y_center width height)
0 0.5 0.5 0.2 0.3
# labelTxt/*.txt
x1 y1 x2 y2 x3 y3 x4 y4 category difficulty
- 支持 YOLO 旋转框格式
- 数据集分割功能 (训练/验证/测试集)
- 标注文件检查和修复
- 数据增强功能
- 支持更多数据集格式 (KITTI等)
- 图形用户界面 (GUI)
- 实例分割数据集支持
- 数据集统计分析
- 关键点检测支持
- 数据集清洗工具
- 实现基础的格式转换功能
- 添加数据集可视化工具
- 添加目标区域剪切功能
- 支持多线程处理
- 添加数据集统计分析功能
- 添加数据集评估功能
- 添加视频转图片和图片转视频功能
- 图片转视频:支持设置图片尺寸、图片格式、图片质量、帧率、过渡帧、单帧持续帧数等参数
- 视频转图片:支持设置图片尺寸、图片格式、图片质量、帧采样间隔等参数
欢迎提交 Issue 和 Pull Request!
本项目采用 MIT 许可证。详见 LICENSE 文件。
类型 | 原图 | 可视化结果 |
---|---|---|
水平框(HBB) |
类型 | 原图 | 剪切示例 |
---|---|---|
水平框(HBB) |
类型 | 结果 |
---|---|
图像尺寸 | |
类别分布 | |
BBOX尺寸 | |
BBOX宽高比 | |
BBOX聚类 |
最终统计结果JSON文件
{
"image_count": 3842,
"bbox_count": 22341,
"category_count": 20,
"image_size": {
"width": {
"min": 590,
"max": 1389,
"mean": 805.0028630921395
},
"height": {
"min": 549,
"max": 989,
"mean": 794.7824049973972
}
},
"bbox_size": {
"width": {
"min": 2.0,
"max": 520.0,
"mean": 101.67740924757173
},
"height": {
"min": 4.0,
"max": 566.0,
"mean": 100.87780314220491
}
},
"aspect_ratio": {
"min": 0.36363636363636365,
"max": 3.7777777777777777,
"mean": 1.0415244429032822
},
"categories": {
"A2": 1729,
"A10": 924,
"A3": 1176,
"A19": 1236,
"A1": 1646,
"A13": 1652,
"A20": 981,
"A15": 618,
"A16": 2632,
"A17": 1397,
"A12": 702,
"A5": 1262,
"A14": 1778,
"A7": 680,
"A9": 1086,
"A4": 642,
"A18": 308,
"A8": 944,
"A11": 507,
"A6": 441
}
}
================================================================================
COCO Metrics:
--------------------------------------------------------------------------------
AP@[0.5:0.95] : 0.9252
AP@0.5 : 1.0000
AP@0.75 : 1.0000
AP (small) : -1.0000
AP (medium) : 0.9000
AP (large) : 0.9505
AR@1 : 0.7000
AR@10 : 0.9250
AR@100 : 0.9250
COCO Per-class AP:
--------------------------------------------------------------------------------
Category AP@[0.5:0.95] AP@0.5 AP@0.75
--------------------------------------------------------------------------------
person 0.9505 1.0000 1.0000
car 0.9000 1.0000 1.0000
dog -1.0000 -1.0000 -1.0000
bicycle -1.0000 -1.0000 -1.0000
==================================================
VOC Metrics:
--------------------------------------------------
mAP@0.5: 0.4625
VOC Per-class AP@0.5:
--------------------------------------------------
person : 0.9500
car : 0.9000
dog : 0.0000
bicycle : 0.0000