Skip to main content

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.

SegCraft GPU demo: original dashcam video beside semantic segmentation overlay

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:

  1. configs/base.yaml
  2. optional preset
  3. 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:

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.mp4
  • overlay.mp4
  • comparison.mp4
  • summary.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


Download files

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

Source Distribution

segcraft-0.1.3.tar.gz (50.8 kB view details)

Uploaded Source

Built Distribution

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

segcraft-0.1.3-py3-none-any.whl (54.0 kB view details)

Uploaded Python 3

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

Hashes for segcraft-0.1.3.tar.gz
Algorithm Hash digest
SHA256 915721e275e6e4ee6b0cbc863d759bd15ecdeebad0806b7d851d7933fa23d392
MD5 2a4036b8d0768e4e44b9a39f99675aae
BLAKE2b-256 e57ea5b25229174045c526b421c8bdf85fc1671c245899c7d88d8ac6ab0ad005

See more details on using hashes here.

Provenance

The following attestation bundles were made for segcraft-0.1.3.tar.gz:

Publisher: release.yml on iodriller/SegCraft-Semantic-Segmentation

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for segcraft-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a59031ae93aff4459b45b6046ddc32fc2c5a6b4e26edad37d4d45ff468cf4f0a
MD5 a20ab96cda3642cce431f671b0811d94
BLAKE2b-256 f6a487ce46aa1bf90f6cec8b36852fb6ad951160f1bc18dd94fae7c610de6fb8

See more details on using hashes here.

Provenance

The following attestation bundles were made for segcraft-0.1.3-py3-none-any.whl:

Publisher: release.yml on iodriller/SegCraft-Semantic-Segmentation

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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