ActiveLabelingSystem
Formerly known as LabelOps.
Local-first AI-assisted image labeling with active learning, manual box tools, background retraining, and dataset version snapshots.
New features and updates
- New Feature: Freehand region labeling for polygon-style segmentation in manual mode.
- New Feature: Manual toolbox mode switch between bounding boxes and freehand regions, with highlight toggling and point undo.
- New Feature: Active learning strategy selector with
Uncertainty,Margin,Diversity, andBalancedmodes. - New Feature: Previous-image navigation and auto-accepted image log from the review bar.
- Update: Modular app structure (
src/app,src/core,src/features) for cleaner maintenance. - Update: Active learning image prioritization when loading folders (unlabeled images first, sorted by uncertainty).
- Update: Retraining policy engine with multi-signal checks (sample count, time, entropy shift, class balance, confidence drift).
- Update: Dataset versioning from UI with metadata, hash integrity, and manifest tracking.
- Update: Label format selection at folder load time:
COCO JSONorPlain JSON. - Update: Safer persistence:
- autosave per folder (
labels_autosave.json) - internal state store (
.labels_internal.json) - atomic file writes for exports.
- autosave per folder (
- Update: Improved manual labeling UX:
- floating toolbox
- box and freehand region modes
- quick class switching (1-9)
- undo/delete/point-undo shortcuts
- inline floating action toolbar.
- Update: 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 JSONoutput (labels.json) for direct app consumption.COCO JSONoutput (labels_coco.json) for downstream ML pipelines.
Manual labeling mode
- Draw boxes directly on the canvas.
- Draw freehand regions as polygon segmentations.
- 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.baton 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-> writeslabels_coco.jsonPlain JSON-> writeslabels.json
- The app also keeps internal state in
.labels_internal.jsonand autosave inlabels_autosave.jsoninside the selected folder.
2. Select classes
- Click
Select Classes. - Pick one or more classes.
- Add custom classes from the same dialog when needed.
3. Start labeling
- Click
START. - Review detections and use bottom actions:
Previous (P)Accept (A)Reject (R)Skip (N)Manual (M)Log
4. Manual mode (box drawing)
- Draw boxes by click-drag on canvas.
- Switch to
Freehand Regionin the manual toolbox to draw polygon regions. - In freehand mode, click points to build a region, then double-click, right-click, or click
Finish Regionto close it. - Use
Highlight On/Offto control shape fill visibility while editing. - Save boxes and move next with:
SpaceorEnter-> save and nextEsc-> exit manual modeCtrl+Z-> undo last boxBackspace-> undo last freehand pointDelete-> delete last box1..9-> switch class index
5. Monitor active learning and training
- Left panel shows:
- entropy of current image
- queue size
- training progress/status.
- Use
Force Retrainif you want to bypass normal policy checks (still requires minimum samples).
6. Version and promote
Create Versioncreates a dataset snapshot insrc/datasets/v_YYYYMMDD_HHMMSS/.List Versionsshows stored versions and metadata.Promote Shadowpromotes trained candidate model to active model.
Output files and artifacts
For each selected image folder:
labels.jsonorlabels_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.
Release files for Active-Labeling-System 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| active_labeling_system-0.2.1.tar.gz | 71.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| active_labeling_system-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 152.5 kB
Release files / active_labeling_system-0.2.1.tar.gz
| Download URL | active_labeling_system-0.2.1.tar.gz |
|---|---|
| Size | 71.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8c9a741aa21afa2dfab0a865013789958d9c2b9d265cd8e4350651e5bc066ba0
|
|
BLAKE2b-256 checksum How to use checksums |
804114f90d38affa41a9823888e6b0e844fd845beb6af1b8e7f40168dde37bcb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.20
|
Release files / active_labeling_system-0.2.1-py3-none-any.whl
| Download URL | active_labeling_system-0.2.1-py3-none-any.whl |
|---|---|
| Size | 81.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5f4c5ae74ee77221326407fad0d3a18272557d2e39fa2e2516f31ee9d78dbe2f
|
|
BLAKE2b-256 checksum How to use checksums |
cf87a9eaacac56d6228ae9fc3bb27f53fc439bbd9b391f744b3c93c2cd8fb021
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.20
|