Skip to main content

Active Labeling System (ALS) with a PyQt6 GUI and active-learning workflow.

Project description

ActiveLabelingSystem

Formerly known as LabelOps.

Local-first AI-assisted image labeling with active learning, manual box tools, background retraining, and dataset version snapshots.

What is new

  • Modular app structure (src/app, src/core, src/features) for cleaner maintenance.
  • Active learning image prioritization when loading folders (unlabeled images first, sorted by uncertainty).
  • Retraining policy engine with multi-signal checks (sample count, time, entropy shift, class balance, confidence drift).
  • Dataset versioning from UI with metadata, hash integrity, and manifest tracking.
  • Label format selection at folder load time: COCO JSON or Plain JSON.
  • Safer persistence:
    • autosave per folder (labels_autosave.json)
    • internal state store (.labels_internal.json)
    • atomic file writes for exports.
  • Improved manual labeling UX:
    • floating toolbox
    • quick class switching (1-9)
    • undo/delete shortcuts
    • inline floating action toolbar.
  • Better training controls in UI:
    • force retrain
    • live queue/training status
    • shadow model promotion with validation warning flow.

Features

Active learning and triage

  • Entropy-aware detection metadata is attached to predictions.
  • Folder loading prioritizes unlabeled images for high-value review.
  • Replay buffer preserves historical samples for continual learning.

Retraining workflow

  • Background training via Ray shadow trainer.
  • Training trigger policy requires minimum sample count plus at least one urgency signal.
  • Promotion flow supports validation and explicit override confirmation.

Dataset versioning

  • Create version snapshots from current labels.
  • Stores YOLO-style labels, copied images, metadata, and a dataset hash.
  • Keeps lineage and latest pointer in src/datasets/manifest.json.

Label export

  • Plain JSON output (labels.json) for direct app consumption.
  • COCO JSON output (labels_coco.json) for downstream ML pipelines.

Manual labeling mode

  • Draw boxes directly on the canvas.
  • Per-box class assignment with deterministic class colors.
  • Save-and-next loop without leaving manual mode.

Project structure

ActiveLabelingSystem/
  images/
  src/
    app/
      window.py
      dialogs.py
      state.py
      actions.py
    core/
      data_manager.py
      entropy.py
      sample_selector.py
      retrain_policy.py
      dataset_versioner.py
      replay_buffer.py
      shadow_trainer.py
      training_orchestrator.py
      model_manager.py
      feedback_validator.py
    features/
      manual.py
      shortcut_manager.py
      shortcut_config.py
      toolbar_manager.py
      toolbar_widget.py
      toolbar_styles.py
    datasets/
    models/
    main.py
    requirements.txt
    run_tests.bat
  README.md
  GUID.md

Installation

git clone https://github.com/sairam-s0/ActiveLabelingSystem.git
cd ActiveLabelingSystem
python -m venv .venv
# Windows
.venv\Scripts\activate
# Linux/macOS
# source .venv/bin/activate

pip install .

Users can install it directly with:

pip install Active-Labeling-System

Run the app

After install, run the bootstrap/setup command first:

als

This command:

  • runs run_tests.bat on Windows
  • checks Python and runtime dependencies
  • installs missing packages automatically
  • detects GPU hardware
  • installs CUDA-enabled PyTorch automatically for NVIDIA GPUs
  • falls back to CPU mode for unsupported GPU setups

After setup completes, start the GUI with:

als --start

How to use

1. Select image folder and output format

  • Click Select Folder.
  • Choose output format:
    • COCO JSON -> writes labels_coco.json
    • Plain JSON -> writes labels.json
  • The app also keeps internal state in .labels_internal.json and autosave in labels_autosave.json inside the selected folder.

Folder Selection Format Selection

2. Select classes

  • Click Select Classes.
  • Pick one or more classes.
  • Add custom classes from the same dialog when needed.

Class Selection

3. Start labeling

  • Click START.
  • Review detections and use bottom actions:
    • Accept (A)
    • Reject (R)
    • Skip (N)
    • Manual (M)

Active Learning Options

4. Manual mode (box drawing)

Normal GUI

  • Draw boxes by click-drag on canvas.
  • Save boxes and move next with:
    • Space or Enter -> save and next
    • Esc -> exit manual mode
    • Ctrl+Z -> undo last box
    • Delete -> delete last box
    • 1..9 -> switch class index

Manual Labelling

5. Monitor active learning and training

  • Left panel shows:
    • entropy of current image
    • queue size
    • training progress/status.
  • Use Force Retrain if you want to bypass normal policy checks (still requires minimum samples).

Dataset Statistics

6. Version and promote

  • Create Version creates a dataset snapshot in src/datasets/v_YYYYMMDD_HHMMSS/.
  • List Versions shows stored versions and metadata.
  • Promote Shadow promotes trained candidate model to active model.

Output files and artifacts

For each selected image folder:

  • labels.json or labels_coco.json (selected format)
  • .labels_internal.json (internal metadata store)
  • labels_autosave.json (session recovery)

Notes

  • If Ray is unavailable, labeling still works; background training features are reduced.
  • If class mapping is not available yet, trainer creation waits until first labels are saved.
  • Restart app after model promotion for a clean reload of active weights.

Contributing

Please read CONTRIBUTING.md.

License

MIT. See 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

active_labeling_system-0.1.4.tar.gz (59.5 kB view details)

Uploaded Source

Built Distribution

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

active_labeling_system-0.1.4-py3-none-any.whl (70.4 kB view details)

Uploaded Python 3

File details

Details for the file active_labeling_system-0.1.4.tar.gz.

File metadata

  • Download URL: active_labeling_system-0.1.4.tar.gz
  • Upload date:
  • Size: 59.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for active_labeling_system-0.1.4.tar.gz
Algorithm Hash digest
SHA256 fb731bf8a14e34dc7bb12aace99e76bac7183c9fa1035b5d170ccd2d2841323e
MD5 f18bacbf10a76b42e66b81793e61cbbf
BLAKE2b-256 9067db0d97fa4f63e1b333114f3351aabcd977fa532ca19dbfe51cfad257c6cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for active_labeling_system-0.1.4.tar.gz:

Publisher: publish-pypi.yml on sairam-s0/ActiveLabelingSystem

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

File details

Details for the file active_labeling_system-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for active_labeling_system-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a2c1f8daad9c28498c821b2fa689aead821e839db8652b4dff6d461841c060fd
MD5 8683eba8a8c4273d40342fc917f6a957
BLAKE2b-256 d1483a26896deb79dfbf41998e4f243e0390a120df37f00058c780c451b00879

See more details on using hashes here.

Provenance

The following attestation bundles were made for active_labeling_system-0.1.4-py3-none-any.whl:

Publisher: publish-pypi.yml on sairam-s0/ActiveLabelingSystem

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