Browse by type
Reinventing The Wheel?!!!!

In the world, there are many good image-labeling tools for object detection. -e.g. , (Yolo_mark, BBox-Label-Tool, labelImg).
But... I've reinvented one...
When I used the pre-existing programs to annotate a training set for YOLO V3, I was sooooooooooo bored...
So I thought why it is so boring??
And I found an answer.
The answer is that pre-existing programs are not sensitive.
So I decided to make a sensitive image-labeling tool for object detection.
## SHOW ME YOUR SENSITIVE IMAGE-LABELING TOOL!!
It's the SENSITIVE image-labeling tool for object detection!

https://user-images.githubusercontent.com/35001605/211560039-367f27d7-63ab-4342-824e-9f47f2afbc35.mp4

## HMM... I SAW THIS DESIGN SOMEWHERE I refer to the website of Joseph Redmon who invented the YOLO.
Pre-built binaries are available on the Releases page.
| OS | Download | Note |
|---|---|---|
| Windows (x64) | YoloLabel-Windows-x64.zip | Unzip and run YoloLabel.exe |
| Linux (x64) | YoloLabel-Linux-x64.AppImage | chmod +x and run |
| macOS (Apple Silicon) | YoloLabel-macOS.dmg | Open DMG and drag to Applications |
Download YoloLabel-Windows-x64.zip
Unzip
Run YoloLabel.exe

Download YoloLabel-Linux-x64.AppImage
Make executable and run
chmod +x YoloLabel-Linux-x64.AppImage
./YoloLabel-Linux-x64.AppImage
Download YoloLabel-macOS.dmg
Open the DMG and drag YoloLabel.app to Applications
Launch YoloLabel from Applications
Build from source: If you prefer, install Qt 6 (
brew install qt@6), clone this repo, then runqmake && make. See Build with ONNX Runtime for auto-label support.


This program has adopted a different labeling method from other programs that adopt "drag and drop" method.
To minimize wrist strain when labeling, I adopted the method "twice left button click" method more convenient than
"drag and drop" method.
drag and drop

twice left button click


./YoloLabel [dataset dir] [class file] [model.onnx]
# Examples
./YoloLabel ../project/dataset/objects/frames ../project/dataset/objects/obj_names.txt
./YoloLabel ../project/dataset/objects/frames ../project/dataset/objects/obj_names.txt yolov8n.onnx
./YoloLabel ../project/dataset/objects/frames yolov8n.onnx
Arguments are detected by file extension — .onnx files are loaded as YOLO models, all other files are loaded as class name lists. When a model with embedded class names is loaded without a class file, class names are populated from the model automatically.
| Key | Action |
|---|---|
A |
Save and Prev Image |
D, Space |
Save and Next Image |
S |
Next Label |
|
| W | Prev Label
|
| O | Open Files |
| V | Visualize Class Name |
| Ctrl + S | Save |
| Ctrl + Delete (Windows/Linux) / Cmd + Delete (macOS) | Delete all existing bounding boxes in the image |
| Ctrl + D, Delete | Delete current image |
| ` (Backtick) | Select first class (class 0) |
| 0-9 | Quick select class by number |
| Arrow Keys | Nudge the bounding box under the cursor (~1-2px step) |
| Shift + Arrow Keys | Nudge the bounding box under the cursor (~5px step) |
| Ctrl + Arrow Keys (Windows/Linux) / Cmd + Arrow Keys (macOS) | Resize the bounding box under the cursor (~1-2px step, top-left corner fixed) |
| Ctrl + Shift + Arrow Keys (Windows/Linux) / Cmd + Shift + Arrow Keys (macOS) | Resize the bounding box under the cursor (~5px step, top-left corner fixed) |
| Ctrl + C (Windows/Linux) / Cmd + C (macOS) | Copy bounding boxes to clipboard |
| Ctrl + V (Windows/Linux) / Cmd + V (macOS) | Paste bounding boxes from clipboard |
| Ctrl + Z (Windows/Linux) / Cmd + Z (macOS) | Undo last action (add, remove, or clear all) |
| Ctrl + Y (Windows) / Ctrl + Shift + Z (Linux) / Cmd + Shift + Z (macOS) | Redo last undone action |
| R | Auto Label current image (requires loaded ONNX model) |
| Ctrl + 0 (Windows/Linux) / Cmd + 0 (macOS) | Reset zoom to 100% |
| Mouse | Action |
|---|---|
Right Click |
Delete Focused Bounding Box in the image |
|
| Left Click + Drag on existing box | Move/reposition the bounding box |
| Option + Left Click (macOS) / Alt + Left Click (Win/Linux) | Change class of focused bounding box to the currently selected label (no need to remove and redraw) |
| Double Click on color column in label table | Change label color |
| Ctrl + Scroll (Windows/Linux) / Cmd + Scroll (macOS) | Zoom in/out (centered on cursor, up to 10x) |
| Ctrl + Left Drag (Windows/Linux) / Cmd + Left Drag (macOS) or Middle Mouse Drag | Pan while zoomed in |
| Wheel Down (when cursor is over image) | Save and Next Image |
| Wheel Up (when cursor is over image) | Save and Prev Image |
Tired of drawing every single bounding box by hand? Load a pre-trained YOLO model and let it do the boring work for you.
YOLO-Label supports local ONNX inference — just export any Ultralytics detection model to .onnx and load it. Class names, input size, and model configuration are all read from the ONNX metadata automatically. No separate config files needed.
Any Ultralytics detection model exported with model.export(format="onnx"):
| Model | Note |
|---|---|
| YOLOv5 | Anchor-based, objectness score |
| YOLOv8, YOLO11, YOLO12, YOLOv26 | Anchor-free |
| End-to-end models | NMS baked in |
.onnx fileR) to detect objects on the current imageCtrl+Z)Tip: You can skip the class file entirely. If the model has embedded class names (all Ultralytics exports do), they will be loaded automatically.
Pre-built releases include ONNX Runtime. To build from source with auto-label support:
# Download ONNX Runtime (one-time setup)
./scripts/download_onnxruntime.sh
# Build
qmake YoloLabel.pro "ONNXRUNTIME_DIR=$PWD/onnxruntime"
make -j$(nproc)
Without ONNX Runtime, the app builds and works normally — just without the auto-label feature.
Use the Contrast slider at the top of the window to adjust image brightness/contrast in real-time. This is useful when labeling dark or overexposed images. The slider ranges from 0% to 100% (default 50%).
A timer in the status bar counts how many hours (and minutes/seconds) you have been using the program. It runs only while the window is focused (switches to another app to pause). Use the Reset button in the status bar to zero the timer at any time.
It was replaced by the shortcut Ctrl + D.

You can access all image by moving horizontal slider bar. But when you control horizontal slider bar, the last processed image will not be saved automatically. So if you want not to lose your work, you should save before moving the horizontal slider bar.

I've reinvented the wheel.

$ claude mcp add Yolo_Label \
-- python -m otcore.mcp_server <graph>