An image segmentation GUI for generating ML ready mask tensors and annotations.
Project description
LazyLabel
AI-Assisted Image Segmentation for Machine Learning Dataset Preparation
LazyLabel combines Meta's Segment Anything Model (SAM) with comprehensive manual annotation tools to accelerate the creation of pixel-perfect segmentation masks for computer vision applications.
Quick Start
pip install lazylabel-gui
lazylabel-gui
From source:
git clone https://github.com/dnzckn/LazyLabel.git
cd LazyLabel
pip install -e .
lazylabel-gui
Requirements: Python 3.10+, 8GB RAM, ~2.5GB disk space (for model weights)
Core Features
AI-Powered Segmentation
LazyLabel leverages Meta's SAM for intelligent object detection:
- Single-click object segmentation
- Interactive refinement with positive/negative points
- Support for both SAM 1.0 and SAM 2.1 models
- GPU acceleration with automatic CPU fallback
Manual Annotation Tools
When precision matters:
- Polygon drawing with vertex-level editing
- Bounding box annotations for object detection
- Edit mode for adjusting existing segments
- Merge tool for combining related segments
Image Processing & Filtering
Advanced preprocessing capabilities:
- FFT filtering: Remove noise and enhance edges
- Channel thresholding: Isolate objects by color
- Border cropping: Define crop regions that set pixels outside the area to zero in saved outputs
- View adjustments: Brightness, contrast, gamma correction
Multi-View Mode
Process multiple images efficiently:
- Annotate up to 4 images simultaneously
- Synchronized zoom and pan across views
- Mirror annotations to all linked images
Export Formats
NPZ Format (Semantic Segmentation)
One-hot encoded masks optimized for deep learning:
import numpy as np
data = np.load('image.npz')
mask = data['mask'] # Shape: (height, width, num_classes)
# Each channel represents one class
sky = mask[:, :, 0]
boats = mask[:, :, 1]
cats = mask[:, :, 2]
dogs = mask[:, :, 3]
YOLO Format (Object Detection)
Normalized polygon coordinates for YOLO training:
0 0.234 0.456 0.289 0.478 0.301 0.523 ...
1 0.567 0.123 0.598 0.145 0.612 0.189 ...
Class Aliases (JSON)
Maintains consistent class naming across datasets:
{
"0": "background",
"1": "person",
"2": "vehicle"
}
Typical Workflow
- Open folder containing your images
- Click objects to generate AI masks (mode 1)
- Refine with additional points or manual tools
- Assign classes and organize in the class table
- Export as NPZ or YOLO format
Advanced Preprocessing Workflow
For challenging images:
- Apply FFT filtering to reduce noise
- Use channel thresholding to isolate color ranges
- Enable "Operate on View" to pass filtered images to SAM
- Fine-tune with manual tools
Advanced Features
Multi-View Mode
Access via the "Multi" tab to process multiple images:
- 2-view (side-by-side) or 4-view (grid) layouts
- Annotations mirror across linked views automatically
- Synchronized zoom maintains alignment
SAM 2.1 Support
LazyLabel supports both SAM 1.0 (default) and SAM 2.1 models. SAM 2.1 offers improved segmentation accuracy and better handling of complex boundaries.
To use SAM 2.1 models:
- Install the SAM 2 package:
pip install git+https://github.com/facebookresearch/sam2.git
- Download a SAM 2.1 model (e.g.,
sam2.1_hiera_large.pt) from the SAM 2 repository - Place the model file in LazyLabel's models folder:
- If installed via pip:
~/.local/share/lazylabel/models/(or equivalent on your system) - If running from source:
src/lazylabel/models/
- If installed via pip:
- Select the SAM 2.1 model from the dropdown in LazyLabel's settings
Note: SAM 1.0 models are automatically downloaded on first use.
Key Shortcuts
| Action | Key | Description |
|---|---|---|
| AI Mode | 1 |
SAM point-click segmentation |
| Draw Mode | 2 |
Manual polygon creation |
| Edit Mode | E |
Modify existing segments |
| Accept AI Segment | Space |
Confirm AI segment suggestion |
| Save | Enter |
Save annotations |
| Merge | M |
Combine selected segments |
| Pan Mode | Q |
Enter pan mode |
| Pan | WASD |
Navigate image |
| Delete | V/Delete |
Remove segments |
| Undo/Redo | Ctrl+Z/Y |
Action history |
Documentation
- Usage Manual - Comprehensive feature guide
- Architecture Guide - Technical implementation details
- GitHub Issues - Report bugs or request features
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 lazylabel_gui-1.3.8.tar.gz.
File metadata
- Download URL: lazylabel_gui-1.3.8.tar.gz
- Upload date:
- Size: 142.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86928071c73588e1f20bb1ce9341bfd9965a3cb1ebcbaad1e145bd5ab01b024e
|
|
| MD5 |
23d59dc2eed9888c682b55094dd5ea12
|
|
| BLAKE2b-256 |
62e7fc7952c912f135b51ddde0b32cc7dc6016eddde0e59734331390b321ecfb
|
File details
Details for the file lazylabel_gui-1.3.8-py3-none-any.whl.
File metadata
- Download URL: lazylabel_gui-1.3.8-py3-none-any.whl
- Upload date:
- Size: 161.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed664d10e2d17c363a3b3c237c5bba98ac400af98bc9f5325e1d33273ea7c425
|
|
| MD5 |
bb89496147799418623c244a0ca5d1f3
|
|
| BLAKE2b-256 |
839f91417ff3fc83b2d2dbfa126552c4e7df7f0a9fd41454fb352c7d9d5acfce
|