π·οΈ Enterprise-Grade Image Labeling Tool with AI Auto-Annotation
π¨π³ δΈζζζ‘£ β’ Highlights β’ Installation β’ Quick Start
- π€ AI-Powered: YOLOv8 detection and pose estimation with GPU/CPU auto-selection
- β‘ High Performance: Native C++ FFI inference engine (1300+ LOC), batch processing
- ποΈ Clean Architecture: 7 Providers, 36 Services, 40 Widgets, 100 unit tests
- π Bilingual: Full Chinese/English internationalization (i18n)
- π¦ Docker Build: One-command reproducible builds, no local dependencies
| Type | Description | YOLO Format |
|---|---|---|
| BoundingBox | Standard rectangle annotation | class cx cy w h |
| BoxWithPoint | Detection + pose keypoints | class cx cy w h [kp_x kp_y v]... |
| Polygon | Semantic segmentation masks | class [x y]... |
- YOLOv8 object detection
- YOLOv8-Pose human pose estimation (17 keypoints COCO format)
- Automatic GPU detection and acceleration (CUDA)
- Append or overwrite modes for label merging
- Auto-infer on image navigation (optional)
- Tracks inferred images to avoid duplicate work
| Tool | Description |
|---|---|
| Batch Rename | Sequential numbering of image files |
| XYXY β XYWH | Coordinate format conversion |
| BBox Expand | Proportionally expand bounding boxes |
| Check & Fix | Fix out-of-bounds boxes, remove duplicates |
| Convert Labels | Class ID remapping and filtering |
| Delete Keypoints | Strip keypoints, keep only bbox |
| Add BBox from Points | Calculate bbox from keypoint coordinates |
| Mode | Description |
|---|---|
| Labeling Mode | Draw new annotations (drag or two-click) |
| Editing Mode | Select, move, resize existing labels |
| Polygon Mode | Click to add vertices, close to complete |
| Keypoint Mode | Click to bind keypoints to labels |
- π Dark/Light theme with system detection
- β¨οΈ Fully customizable keyboard shortcuts
- π Smooth zoom (0.05x - 20x) and pan with mouse
- β‘ Undo/Redo history stack
- πΎ Auto-save on navigation (configurable)
- π Dark enhancement filter for low-light images
- OS: Ubuntu 22.04+ (GLib 2.72+)
- Docker: Required for building releases
- GPU (Optional): CUDA 11.x + cuDNN 8.x for GPU inference
Download from Releases and replace <version> with the release version:
# CPU version (~18MB, no CUDA required) sudo apt install label-load_<version>_amd64.deb # GPU version (~120MB, requires CUDA Toolkit installed) sudo apt install label-load_<version>_gpu_amd64.deb
git clone https://github.com/T-DT-Algorithm-2026/label-load.git cd label-load/label_load # Build CPU release (default) ./packaging/build_docker.sh --cpu # Build GPU release ./packaging/build_docker.sh --gpu # Override ONNX Runtime version ./packaging/build_docker.sh --cpu --ort-version 1.23.0 # Output: build/release/label-load_*.deb
# Install Flutter 3.6+ # https://docs.flutter.dev/get-started/install/linux cd label_load ./run.sh debug # Build debug version ./run.sh run # Run debug version
- Click the + button in bottom-right
- Enter project name and description
- Select Image Directory (where your images are)
- Select Label Directory (where .txt labels will be saved)
- Add label categories with names and colors
- Click a project card to open the labeling interface
- Press
Wto toggle between Labeling Mode and Editing Mode - In Labeling Mode:
- Drag or two-click to draw bounding boxes
- Press
Cto cycle through label classes
- Press
A/Dto navigate between images - Labels auto-save when navigating (configurable)
- Open project settings (gear icon)
- Configure AI model:
- Select ONNX model file (.onnx)
- Choose model type (YOLO / YOLO-Pose)
- Adjust confidence and NMS thresholds
- Press
Rto run inference on current image - Use batch inference for entire dataset
All shortcuts are customizable via Settings β Key Bindings.
| Action | Default Key |
|---|---|
| Previous Image | A |
| Next Image | D |
| Previous Label | Q |
| Next Label | E |
| Action | Default Key |
|---|---|
| Toggle Mode (Label/Edit) | W |
| Next Class | C |
| Delete Selected | Delete or Backspace |
| Save Labels | S |
| Undo | Ctrl+Z |
| Redo | Ctrl+Shift+Z |
| Cancel Operation | Escape |
| Action | Default Key |
|---|---|
| AI Inference | R |
| Toggle Dark Enhancement | X |
| Toggle Keypoint Visibility | V |
| Cycle Keypoint Binding | ` (backtick) |
| Action | Mouse |
|---|---|
| Create/Draw | Left Click |
| Delete | Right Click |
| Pan Canvas | Middle Click Drag |
| Zoom | Scroll Wheel |
label_load/
βββ lib/ # Flutter source (95 files)
β βββ models/ # Data models (Label, Project, Config)
β βββ providers/ # State management (7 Providers)
β β βββ project_provider.dart
β β βββ canvas_provider.dart
β β βββ keybindings_provider.dart
β β βββ settings_provider.dart
β βββ services/ # Business logic (36 files)
β β βββ inference/ # AI inference orchestration
β β βββ gadgets/ # Batch processing tools
β β βββ labels/ # Label I/O and history
β βββ widgets/ # UI components (40 files)
β βββ canvas/ # Image canvas and painters
β βββ dialogs/ # Settings, AI config, gadgets
βββ onnx_inference/ # Native FFI plugin
β βββ src/ # C++ inference engine (1300+ LOC)
βββ test/ # Unit tests (100 files)
βββ integration_test/ # Integration tests (13 flows)
βββ packaging/ # Docker build scripts
βββ Dockerfile.build # Build environment
βββ build_docker.sh # Unified build script
# Help and version ./run.sh help # Show all commands ./run.sh version # Show version info # Development ./run.sh clean # Clean build artifacts ./run.sh debug # Build debug version ./run.sh run # Run debug version # Release workflow ./run.sh release # Build release version ./run.sh deb # Package DEB (default: CPU) ./run.sh deb --gpu # Package GPU DEB (~120MB) ./run.sh deb --cpu # Package CPU DEB (~18MB) # Testing ./run.sh test # Run all tests ./run.sh test --unit # Unit tests only ./run.sh test --int # Integration tests only ./run.sh test --native # C++ tests ./run.sh test --coverage # Generate coverage report # Code quality ./run.sh analyze # Static analysis ./run.sh format # Format check
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please ensure:
- All tests pass (
./run.sh test) - Code is formatted (
./run.sh format) - No analyzer warnings (
./run.sh analyze)
MIT License - see LICENSE
Built with β€οΈ using Flutter and ONNX Runtime