Config-driven semantic segmentation framework
Project description
SegCraft
SegCraft is a config-first semantic segmentation toolkit for training, evaluating, and running image/video prediction from the same YAML setup.
Install
Use an isolated environment. Installing ML/video stacks into a global or Conda base Python can make pip upgrade unrelated packages and produce dependency conflicts.
py -3.12 -m venv .venv
.\.venv\Scripts\activate
python -m pip install --upgrade pip
pip install segcraft
For the browser UI from PyPI:
pip install "segcraft[web]"
segcraft doctor
segcraft-web
Other extras:
pip install "segcraft[torch]" # prediction/training with TorchVision
pip install "segcraft[torch,smp]" # segmentation-models-pytorch
pip install "segcraft[torch,transformers]" # Hugging Face segmentation models
pip install "segcraft[torch,transformers,video]" # video files and YouTube helpers
From a checkout:
pip install -e ".[web,dev]"
For NVIDIA GPUs, install the CUDA-enabled PyTorch wheel that matches your system from the PyTorch install page, then run:
segcraft doctor
segcraft doctor reports the Python executable, Torch version, CUDA build,
CUDA availability, and visible GPU names. If it reports CUDA available: False,
launch SegCraft from the environment where Torch can see CUDA, or keep
runtime.device: auto so SegCraft falls back to CPU instead of failing.
CLI
segcraft validate
segcraft predict --preset cityscapes_video --local configs/local.yaml
segcraft train --preset fast_dev --local configs/local.yaml
segcraft evaluate --preset quality --local configs/local.yaml
configs/local.yaml is for machine-specific paths and is ignored by git.
Start from configs/local.example.yaml.
Web App
segcraft-web
Open http://127.0.0.1:8000. The UI accepts either a video upload or a
YouTube URL, lets you choose a preset or type a custom preset path/name, shows
job progress, shows the active Torch/CUDA runtime, and exposes downloads for
the generated outputs. YouTube downloads are cached under outputs/web by URL
and format, and running jobs can be stopped from the UI.
Notebooks
notebooks/01_quickstart.ipynb: video prediction demo.notebooks/02_config_and_api.ipynb: config and API basics.notebooks/03_web_app.ipynb: launching the optional FastAPI app.
Presets
SegCraft merges configs in this order:
configs/base.yaml- optional preset
- optional local config
Preset names work in the CLI, Python API, and web app:
fast_dev: tiny CPU training run.quality: longer training settings with scheduler and metrics.binary_quickstart: binary foreground/background setup.pascal_fast_video: faster TorchVision PASCAL/VOC video prediction.pascal_video: TorchVision PASCAL/VOC video prediction.pascal_quality_video: larger TorchVision PASCAL/VOC video prediction.cityscapes_video: SegFormer Cityscapes video prediction.cityscapes_quality_video: larger SegFormer Cityscapes video prediction.cpu_video_demo: short Cityscapes CPU demo settings.ade20k_video: SegFormer ADE20K video prediction.ade20k_quality_video: larger SegFormer ADE20K video prediction.smp_unet_resnet34: SMP Unet training setup.
task.num_classes controls trainable model heads. task.class_names only
controls display names; if labels are missing or do not match the model,
SegCraft falls back to class_<id> names during prediction.
For more pretrained models, use Hugging Face semantic-segmentation model IDs
with model.backend: transformers, TorchVision segmentation model names with
model.backend: torchvision, or SMP architectures/encoders with
model.backend: smp:
- Hugging Face image segmentation models: https://huggingface.co/models?pipeline_tag=image-segmentation
- TorchVision semantic segmentation weights: https://docs.pytorch.org/vision/stable/models.html#semantic-segmentation
- Segmentation Models PyTorch encoders: https://smp.readthedocs.io/en/stable/encoders.html
Python API
from segcraft import load_config, load_config_object, list_available_presets
from segcraft.prediction import run_prediction
print(list_available_presets())
config = load_config("configs/base.yaml", preset_path="cityscapes_video")
typed = load_config_object("configs/base.yaml", preset_path="cityscapes_video")
events = []
summary = run_prediction(config, progress_callback=events.append)
Outputs
Video prediction writes:
original.mp4overlay.mp4comparison.mp4summary.json
Image-folder prediction writes masks, overlays, an optional overlay video, and the same summary metadata.
Development
pip install -e ".[web,dev]"
pytest
python -m build
twine check dist/*
Publishing uses .github/workflows/release.yml with GitHub trusted publishing.
Configure the PyPI/TestPyPI publisher for owner iodriller, repository
SegCraft-Semantic-Segmentation, workflow release.yml, and environment
pypi, then run the workflow manually for the target repository.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file segcraft-0.1.3.tar.gz.
File metadata
- Download URL: segcraft-0.1.3.tar.gz
- Upload date:
- Size: 50.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
915721e275e6e4ee6b0cbc863d759bd15ecdeebad0806b7d851d7933fa23d392
|
|
| MD5 |
2a4036b8d0768e4e44b9a39f99675aae
|
|
| BLAKE2b-256 |
e57ea5b25229174045c526b421c8bdf85fc1671c245899c7d88d8ac6ab0ad005
|
Provenance
The following attestation bundles were made for segcraft-0.1.3.tar.gz:
Publisher:
release.yml on iodriller/SegCraft-Semantic-Segmentation
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
segcraft-0.1.3.tar.gz -
Subject digest:
915721e275e6e4ee6b0cbc863d759bd15ecdeebad0806b7d851d7933fa23d392 - Sigstore transparency entry: 1502729097
- Sigstore integration time:
-
Permalink:
iodriller/SegCraft-Semantic-Segmentation@8db1a8652f8449374afa045cb6274b20ef008f72 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/iodriller
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8db1a8652f8449374afa045cb6274b20ef008f72 -
Trigger Event:
push
-
Statement type:
File details
Details for the file segcraft-0.1.3-py3-none-any.whl.
File metadata
- Download URL: segcraft-0.1.3-py3-none-any.whl
- Upload date:
- Size: 54.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a59031ae93aff4459b45b6046ddc32fc2c5a6b4e26edad37d4d45ff468cf4f0a
|
|
| MD5 |
a20ab96cda3642cce431f671b0811d94
|
|
| BLAKE2b-256 |
f6a487ce46aa1bf90f6cec8b36852fb6ad951160f1bc18dd94fae7c610de6fb8
|
Provenance
The following attestation bundles were made for segcraft-0.1.3-py3-none-any.whl:
Publisher:
release.yml on iodriller/SegCraft-Semantic-Segmentation
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
segcraft-0.1.3-py3-none-any.whl -
Subject digest:
a59031ae93aff4459b45b6046ddc32fc2c5a6b4e26edad37d4d45ff468cf4f0a - Sigstore transparency entry: 1502729279
- Sigstore integration time:
-
Permalink:
iodriller/SegCraft-Semantic-Segmentation@8db1a8652f8449374afa045cb6274b20ef008f72 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/iodriller
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8db1a8652f8449374afa045cb6274b20ef008f72 -
Trigger Event:
push
-
Statement type: