Skip to main content

Tools to randomly move images and split datasets (local or S3) into train/val/test.

Project description

SplitDatasets

SplitDatasets — это CLI-инструмент на Python для работы с изображениями и разметками: выбор случайных изображений, разбиение на обучающую/валидационную/тестовую выборки как в локальной файловой системе, так и в S3.

📦 Установка

🔹 Установка с помощью uv

uv pip install -e .

Установит проект в режиме разработки (editable).

🔹 Установка глобально с помощью pipx

pipx install .

Если пакет уже установлен, но вы внесли изменения в код — переустановите:

pipx uninstall splitdatasets
pipx install .

🚀 Использование

1. Случайный выбор изображений

Копирует случайные изображения из source_dir в target_dir, с возможным переименованием.

random-move SOURCE_DIR TARGET_DIR [--count 100] [--prefix PREFIX] [--extensions .jpg .jpeg .png] [--seed 42]

Пример:

random-move ./images ./sample --count 50 --prefix selected --seed 123

2. Разделение локального датасета

Разбивает изображения на поддиректории images/train, images/val, images/test и labels/...

split-dataset-local SOURCE_DIR TARGET_DIR [--labels_dir LABELS_DIR] [--train_ratio 0.7] [--val_ratio 0.2] [--test_ratio 0.1] [--seed 42]

Пример:

split-dataset-local ./dataset/images ./dataset_split --labels_dir ./dataset/labels --seed 42

3. Разделение датасета в S3 (MinIO)

Разделяет изображения и метки, находящиеся в хранилище S3, по тем же правилам.

split-dataset-s3 --bucket BUCKET \
                 --source_prefix SOURCE_PREFIX \
                 --target_prefix TARGET_PREFIX \
                 --endpoint http://IP:PORT \
                 --access_key ACCESS \
                 --secret_key SECRET \
                 [--labels_prefix LABELS_PREFIX] \
                 [--train_ratio 0.7] \
                 [--val_ratio 0.2] \
                 [--test_ratio 0.1] \ 
                 [--seed 42]

Пример:

split-dataset-s3 --bucket mybucket \
                 --source_prefix raw/images \
                 --target_prefix splits \
                 --endpoint http://localhost:9000 \
                 --access_key myaccesskey \
                 --secret_key mysecretkey \
                 --labels_prefix raw/labels \
                 --seed 123

🧱 Структура проекта

splitdatasets/
├── split_dataset/
│   ├── select_and_move_images.py
│   ├── split_dataset.py
│   ├── split_dataset_s3.py
│   └── utils.py
├── pyproject.toml
└── README.md

🛠 Зависимости

  • Python >= 3.12
  • boto3 для работы с S3
  • uv и pipx (для удобства установки)

📝 Лицензия

MIT License © 2025

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

splitdatasets-0.9.0.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

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

splitdatasets-0.9.0-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file splitdatasets-0.9.0.tar.gz.

File metadata

  • Download URL: splitdatasets-0.9.0.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for splitdatasets-0.9.0.tar.gz
Algorithm Hash digest
SHA256 6a8eca743a7a967b43edbff0ff9024edd477436289b6e2043220fa9b1c33fca0
MD5 eb10e399816f46590f320ba80b833570
BLAKE2b-256 c9dda36dede87a394dd39dad26ef99936c496a24353b0968b0391b06f718adfa

See more details on using hashes here.

File details

Details for the file splitdatasets-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: splitdatasets-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for splitdatasets-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2c30f68cfdef8cce277ff9e4432db5f44183d2e3d46304cd29a2dd3cb4e7d947
MD5 5e4223d85c3a6c7ae1e45399998e23b4
BLAKE2b-256 4de1e594c02d59cafb73887b53be0ef7548978badb8a38e21e5225d6b158acb4

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