Label Mender

A professional YOLO annotation tool for refining and correcting model-generated labels. Built with PyQt5 for a smooth, native desktop experience on Windows, Linux, and macOS. Currently under active development with VLM & SAM integration coming soon!

Label Mender

A professional YOLO annotation tool designed specifically for data labelers who work with YOLO models daily. Label Mender streamlines the workflow of refining model-generated labels with an intuitive PyQt5 interface and powerful editing capabilities.

Currently under active development - New features and improvements are being added regularly. VLM and SAM integration coming soon!

Note: This is a completely free and open source tool — no premium features, no restrictions. Built for a specific use case: quickly fixing and refining model-generated labels.

Why Label Mender?

When training YOLO models, you often face these challenges:

  • Wrong class predictions - Your model detects objects but assigns incorrect class labels
  • Low mAP accuracy - Bounding boxes are not precise enough and need manual adjustment
  • Semi-automated labeling - You want to use an existing model to speed up annotation, then manually fix errors

Label Mender solves this by providing a streamlined workflow:

  1. Load your trained YOLO model (.pt file)
  2. Run inference on your images to get initial detections
  3. Quickly review and correct class labels with number keys (1-9)
  4. Adjust bounding box positions and sizes by dragging
  5. Add missing boxes or delete false positives
  6. Save corrected annotations in YOLO format

Key Features

Feature Description
Cross-Platform Works seamlessly on Windows, Linux, and macOS
Model-Assisted Labeling Use your YOLO model for initial detections, then correct errors
Quick Class Correction Press number keys 1-9 to instantly change box class
Interactive Box Editing Click to select, drag to move, resize via corner/edge handles
Draw Mode Create new bounding boxes for missed detections
Confidence Filtering Adjust threshold to show/hide low-confidence detections
Batch Navigation Navigate through image folders with progress tracking
Undo/Redo Full undo/redo support for all operations
YOLO Format Native support for YOLO annotation format (.txt files)

Workflow

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  Load Model     │ --> │  Open Images    │ --> │  Auto-detect    │
│  (.pt file)     │     │  Folder         │     │  Objects        │
└─────────────────┘     └─────────────────┘     └─────────────────┘
                                                        │
                                                        v
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  Save & Next    │ <-- │  Adjust Boxes   │ <-- │  Fix Classes    │
│  Image          │     │  (drag/resize)  │     │  (press 1-9)    │
└─────────────────┘     └─────────────────┘     └─────────────────┘

Keyboard Shortcuts

Key Action
W Toggle Draw Mode
A Previous Image
D Next Image
S Save Annotations
Q Skip Image
N Next Unannotated Image
X Delete Current Image
Del Delete Selected Box
Esc Deselect / Exit Draw Mode
1-9 Set class of selected box
Ctrl+Z Undo
Ctrl+Y Redo
Ctrl+S Save

Technologies Used

  • Python - Core programming language
  • PyQt5 - Cross-platform GUI framework for native desktop experience
  • YOLO - Object detection model integration
  • Computer Vision - Image processing and annotation
  • OpenCV - Image manipulation and display
  • Deep Learning - Model inference and detection

Project Architecture

The project follows a clean, modular architecture:

Label-Mender/
├── app.py                  # Application entry point
├── src/
│   ├── core/              # Core business logic
│   │   ├── annotation_manager.py
│   │   ├── model_manager.py
│   │   └── state_manager.py
│   ├── ui/                # User interface components
│   │   ├── main_window.py
│   │   └── image_canvas.py
│   ├── config/            # Configuration and styling
│   │   ├── constants.py
│   │   └── styles.py
│   └── utils/             # Utility functions
│       ├── file_operations.py
│       └── geometry.py

Installation

  1. Clone the repository:
    git clone https://github.com/javadibrahimli/Label-Mender.git
    cd Label-Mender
    
  2. Install dependencies:
    pip install -r requirements.txt
    
  3. Run the application:
    python app.py
    

Roadmap

This tool is under active development with exciting features planned:

Upcoming Features:

  • 🔮 VLM Integration - Vision Language Models for intelligent object recognition and labeling suggestions
  • 🎯 SAM Integration - Segment Anything Model for precise, one-click segmentation masks
  • 💻 Local Model Support - Run VLM and SAM models locally without requiring external APIs
  • Support for more YOLO modes - Segmentation, pose estimation
  • 🚀 Batch processing - Run inference on entire folders
  • 📝 File renaming utilities
  • 🔄 Export to multiple formats - COCO, Pascal VOC
  • 🔍 Zoom and pan controls
  • 💾 Auto-save functionality
  • 📈 Dataset statistics and visualization
  • 🎨 Dark/Light theme toggle

Stay tuned for updates!

Use Cases

Label Mender is perfect for:

  • Refining model predictions after training initial YOLO models
  • Fixing class misclassifications in bulk annotation tasks
  • Adjusting bounding boxes to improve mAP scores
  • Semi-automated annotation workflows using pre-trained models
  • Quality control for labeled datasets
  • Educational purposes for learning YOLO annotation format

Contributing

Contributions are welcome! If you have ideas for new features or improvements:

  • 🍴 Fork the repository and experiment
  • 📥 Submit Pull Requests with your changes
  • 💡 Open Issues to suggest features or report bugs

All contributions, big or small, are greatly appreciated!

License

This project is licensed under the CC0 1.0 Universal (Public Domain) - completely free to use, modify, and distribute without any restrictions.


Created by Javad Ibrahimli to help labelers and ML engineers save time when refining YOLO annotations. If you find this tool useful, consider giving it a star! ⭐