AI Labelling tool for computer vision
Project description
Ultimate AI Labeller
Desktop image annotation tool for object detection datasets (Tkinter + Ultralytics), with a separate web project.
Features
- Bounding-box annotation with drag, move, and resize handles
- Rotated bounding boxes:
- Drag rotate knob on selected box
- 8 resize handles follow box rotation
- Keyboard rotate (
Q/E,Shift+Q/E)
- Multi-select boxes (
Shift/Ctrl + Click) for batch class reassignment and delete - Select all boxes in current image (
Ctrl+A) - Nested/overlapping box picking prefers inner (smaller) box for easier adjustment
- Undo/redo history (
Ctrl+Z,Ctrl+Y) - Image navigation (
Fnext/save,Dprevious) - Auto red-region proposal (
A) - YOLO detection from UI (
Run Detection) - Startup source selection:
- Open Images Folder
- Open YOLO Dataset
- Open RF-DETR Dataset
- Detection model management:
- Official model mode (
yolo26m.ptpath by default) - Import custom models (
.pt,.onnx) viaBrowse Model - Select model from dropdown library
- Official model mode (
- Train from existing labels:
- Choose training range by index
- Choose weight source before training:
- Official
yolo26m.pt - Custom weight file (
.pt/.onnx) - From scratch (
pretrained=False)
- Official
- Save training artifacts to selected output folder
- Non-blocking background training (continue labeling while training)
- Built-in training monitor (command/log/progress/ETA)
- Class management:
- Add / rename / delete class in class table
- Deleting a class reindexes following class IDs automatically
- Auto-detect and propagate options
- Scrollable right settings panel
- Remove/restore bad frames from split
- Image dropdown jump
- Session resume (last project/split/image/model settings)
- English/Chinese UI switch and light/dark theme
- Export all annotations by format:
YOLO (.txt)export toimages/train+labels/trainstructureJSONfull dataset export (per-image annotation json)
Repositories
- Desktop app (this repo):
https://github.com/JamesChang666/ultimate_ai_labeller - Web app (separate repo):
https://github.com/JamesChang666/labeller_web
Dataset Structure
your_project/
images/
train/
val/
test/
labels/
train/
val/
test/
- Image extensions:
.png,.jpg,.jpeg - Label format: YOLO txt (
class cx cy w h, normalized) - Rotated-box metadata (when used): sidecar
*.txt.rot.jsonwithangles_deg - Full guide (ZH):
docs/dataset-structure-guide.md
Removed frames are moved to:
your_project/
removed/
train|val|test/
images/
labels/
Install
From PyPI:
pip install ultimate_ai_labeller
From local wheel:
pip install dist/ultimate_ai_labeller-*.whl
From source:
pip install .
For development:
pip install -e .
Run
ai-labeller
Or:
python src/ai_labeller/main.py
Web Version
This desktop repository includes local development files under web_labeller/, but the maintained web repository is:
https://github.com/JamesChang666/labeller_web
Run locally:
cd web_labeller
pip install -r requirements.txt
uvicorn app:app --host 127.0.0.1 --port 8000 --reload
Shortcuts
F: save and next imageD: previous imageA: auto red detectionQ/E: rotate selected box (-5° / +5°)Shift+Q/E: rotate selected box faster (-15° / +15°)Ctrl+Z: undoCtrl+Y: redoCtrl+A: select all boxes in current imageDelete: delete selected box
Notes
- Default detection model mode is
Official YOLO26m.pt (Bundled). - If the official model file is unavailable locally, import a custom
.pt/.onnxmodel from the UI. - If CUDA/GPU runtime is incompatible, detection/training automatically falls back to CPU.
- To use your own Tk app icon, put
app_icon.pnginsrc/ai_labeller/assets/. - Session file:
~/.ai_labeller_session.json. - Project progress YAML:
<project_root>/.ai_labeller_progress.yaml(resume split/image and class names after reopen).
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 ultimate_ai_labeller-0.1.12.tar.gz.
File metadata
- Download URL: ultimate_ai_labeller-0.1.12.tar.gz
- Upload date:
- Size: 46.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30cb1f783ad17ed967aec51fd6717d7719ac487b73809ac1c80dcd4becef0099
|
|
| MD5 |
bb439e223815fb37c0f2437264609f05
|
|
| BLAKE2b-256 |
ee959d9d897fd6603118f5b8881a1d4d3dbc80e969c3dcf50bdc2a79b8b81d96
|
Provenance
The following attestation bundles were made for ultimate_ai_labeller-0.1.12.tar.gz:
Publisher:
publish.yml on JamesChang666/ultimate_ai_labeller
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ultimate_ai_labeller-0.1.12.tar.gz -
Subject digest:
30cb1f783ad17ed967aec51fd6717d7719ac487b73809ac1c80dcd4becef0099 - Sigstore transparency entry: 990860204
- Sigstore integration time:
-
Permalink:
JamesChang666/ultimate_ai_labeller@a42e506d6796fb61bbce6d247cbbbd0ddea532e8 -
Branch / Tag:
refs/tags/v0.1.12 - Owner: https://github.com/JamesChang666
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a42e506d6796fb61bbce6d247cbbbd0ddea532e8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ultimate_ai_labeller-0.1.12-py3-none-any.whl.
File metadata
- Download URL: ultimate_ai_labeller-0.1.12-py3-none-any.whl
- Upload date:
- Size: 46.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b92929a627442eab84199144e4c2804790f9cd2808f87a60dc459ab4b0fe05c
|
|
| MD5 |
d4263ec21123b2c2612d5e59b80db8bb
|
|
| BLAKE2b-256 |
c1ede9c9f8de0ad87de26507464bbd62f6c16b6fa26cc6a04a62b86dbbc4e0b3
|
Provenance
The following attestation bundles were made for ultimate_ai_labeller-0.1.12-py3-none-any.whl:
Publisher:
publish.yml on JamesChang666/ultimate_ai_labeller
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ultimate_ai_labeller-0.1.12-py3-none-any.whl -
Subject digest:
6b92929a627442eab84199144e4c2804790f9cd2808f87a60dc459ab4b0fe05c - Sigstore transparency entry: 990860252
- Sigstore integration time:
-
Permalink:
JamesChang666/ultimate_ai_labeller@a42e506d6796fb61bbce6d247cbbbd0ddea532e8 -
Branch / Tag:
refs/tags/v0.1.12 - Owner: https://github.com/JamesChang666
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a42e506d6796fb61bbce6d247cbbbd0ddea532e8 -
Trigger Event:
push
-
Statement type: