Skip to main content

一个用于加载、处理和导出计算机视觉数据集的工具包

Project description

Dataset Toolkit

一个功能强大、易于使用的 Python 工具包,用于处理计算机视觉数据集。支持多种数据格式的加载、合并、转换和导出。

✨ 特性

  • 🔄 多格式支持:支持 YOLO、COCO 等常见格式
  • 🔗 数据集合并:轻松合并多个数据集,支持类别重映射
  • 📤 灵活导出:导出为 COCO JSON、TXT 等多种格式
  • 🛠️ 工具函数:提供坐标转换等实用工具
  • 📦 标准化数据模型:统一的内部数据表示,方便扩展

📦 安装

从 PyPI 安装(推荐)

pip install dataset-toolkit

从源码安装

git clone https://github.com/yourusername/dataset-toolkit.git
cd dataset-toolkit
pip install -e .

开发模式安装

pip install -e ".[dev]"

🚀 快速开始

基本用法

from dataset_toolkit import load_yolo_from_local, merge_datasets, export_to_coco

# 1. 加载 YOLO 格式数据集
dataset1 = load_yolo_from_local(
    "/path/to/dataset1",
    categories={0: 'cat', 1: 'dog'}
)

dataset2 = load_yolo_from_local(
    "/path/to/dataset2",
    categories={0: 'car', 1: 'bicycle'}
)

# 2. 合并数据集(带类别重映射)
final_categories = {0: 'animal', 1: 'vehicle'}
category_mapping = {
    'cat': 'animal',
    'dog': 'animal',
    'car': 'vehicle',
    'bicycle': 'vehicle'
}

merged = merge_datasets(
    datasets=[dataset1, dataset2],
    category_mapping=category_mapping,
    final_categories=final_categories,
    new_dataset_name="merged_dataset"
)

# 3. 导出为 COCO 格式
export_to_coco(merged, "output/merged.json")

链式 API 用法

from dataset_toolkit import DatasetPipeline

# 使用管道模式处理数据集
pipeline = DatasetPipeline()
result = (pipeline
    .load_yolo("/path/to/dataset1", {0: 'cat', 1: 'dog'})
    .load_yolo("/path/to/dataset2", {0: 'car'})
    .merge(
        category_mapping={'cat': 'animal', 'dog': 'animal', 'car': 'vehicle'},
        final_categories={0: 'animal', 1: 'vehicle'}
    )
    .export_coco("output/merged.json")
    .execute())

📚 API 文档

数据加载器

load_yolo_from_local(dataset_path, categories)

从本地文件系统加载 YOLO 格式的数据集。

参数:

  • dataset_path (str): 数据集根目录路径,应包含 images/labels/ 子目录
  • categories (Dict[int, str]): 类别ID到类别名的映射

返回:

  • Dataset: 标准化的数据集对象

示例:

dataset = load_yolo_from_local(
    "/data/my_dataset",
    categories={0: 'person', 1: 'car'}
)

数据处理器

merge_datasets(datasets, category_mapping, final_categories, new_dataset_name)

合并多个数据集,支持类别重映射。

参数:

  • datasets (List[Dataset]): 要合并的数据集列表
  • category_mapping (Dict[str, str]): 旧类别名到新类别名的映射
  • final_categories (Dict[int, str]): 最终的类别体系
  • new_dataset_name (str, optional): 合并后数据集的名称

返回:

  • Dataset: 合并后的数据集对象

数据导出器

export_to_coco(dataset, output_path)

导出为 COCO JSON 格式。

参数:

  • dataset (Dataset): 要导出的数据集
  • output_path (str): 输出文件路径

export_to_txt(dataset, output_path, use_relative_paths, base_path)

导出为 TXT 格式。

参数:

  • dataset (Dataset): 要导出的数据集
  • output_path (str): 输出文件路径
  • use_relative_paths (bool, optional): 是否使用相对路径
  • base_path (str, optional): 相对路径的基准目录

🏗️ 架构设计

dataset_toolkit/
├── models.py              # 数据模型定义
├── loaders/              # 数据加载器
│   ├── local_loader.py   # 本地文件系统加载器
│   └── remote_loader.py  # 远程数据源加载器(待开发)
├── processors/           # 数据处理器
│   ├── merger.py         # 数据集合并
│   └── filter.py         # 数据过滤(待开发)
├── exporters/            # 数据导出器
│   ├── coco_exporter.py  # COCO格式导出
│   └── txt_exporter.py   # TXT格式导出
└── utils/                # 工具函数
    └── coords.py         # 坐标转换

🔧 高级用法

自定义数据加载器

from dataset_toolkit.models import Dataset, ImageAnnotation
from dataset_toolkit.loaders import BaseLoader

class CustomLoader(BaseLoader):
    def load(self, path, **kwargs):
        # 实现你的自定义加载逻辑
        dataset = Dataset(name="custom")
        # ... 加载数据 ...
        return dataset

批量处理

from pathlib import Path
from dataset_toolkit import load_yolo_from_local, export_to_coco

# 批量处理多个数据集
dataset_dirs = [
    "/data/dataset1",
    "/data/dataset2",
    "/data/dataset3"
]

categories = {0: 'object'}

for dataset_dir in dataset_dirs:
    ds = load_yolo_from_local(dataset_dir, categories)
    output_name = Path(dataset_dir).name + ".json"
    export_to_coco(ds, f"output/{output_name}")

🧪 测试

运行测试:

pytest

生成测试覆盖率报告:

pytest --cov=dataset_toolkit --cov-report=html

📝 开发计划

  • 支持更多数据格式(Pascal VOC、YOLO v8等)
  • 添加数据增强功能
  • 支持远程数据源(S3、HTTP等)
  • 添加数据统计和可视化功能
  • 提供命令行工具
  • 支持视频数据集

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📄 许可证

MIT License

📧 联系方式

如有问题,请通过以下方式联系:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dataset_toolkit-0.1.2.tar.gz (20.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dataset_toolkit-0.1.2-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

File details

Details for the file dataset_toolkit-0.1.2.tar.gz.

File metadata

  • Download URL: dataset_toolkit-0.1.2.tar.gz
  • Upload date:
  • Size: 20.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for dataset_toolkit-0.1.2.tar.gz
Algorithm Hash digest
SHA256 e79d1097a30755b749c2261d04b756dc243795f659b6a877696f3fd5297a741e
MD5 eb977fe0c7c16cf0f3df1bed3208e123
BLAKE2b-256 9d2bcd636533b84d1dd9b419c63aa05d9142aedfcdd990712579c34d73afc9b0

See more details on using hashes here.

File details

Details for the file dataset_toolkit-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for dataset_toolkit-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 449fde499dd42824a8f51cf9a9224cb3d153249290bdfac352f9daf99a91ee1d
MD5 f003c56018ce315c13702c4b86dd0559
BLAKE2b-256 1f70528b90d4b02f5fc4c990d4cc33208eb80b4b03220344a82abb83426b1ca4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page