SOTA unsupervised auto-annotation SDK for image classification
Project description
AutoAnnotate-Vision 🎯
State-of-the-art unsupervised auto-annotation SDK for image classification with GUI
AutoAnnotate-Vision automatically clusters and organizes unlabeled image datasets using cutting-edge vision models (CLIP, DINOv2, SigLIP2). Features a graphical user interface for easy use and HTML preview for visual cluster inspection.
✨ Features
- 🎨 Graphical User Interface: Easy folder browsers and visual controls
- 🖼️ HTML Image Preview: View cluster samples in browse before labeling
- 🤖 SOTA Vision Models: CLIP, DINOv2, DINOv2-Large, SigLIP2
- 🔬 Multiple Clustering: K-means, Spectral, DBSCAN
- 📁 Smart Organization: Preserves original filenames
- ✂️ Auto Splits: Train/val/test dataset splitting
- 💾 Export: CSV, JSON formats
- 🔌 Python API: Full programmatic control
🚀 Installation
pip install autoannotate-vision
Or from source:
git clone https://github.com/Metamind-Innovations/autoannotate-vision.git
cd autoannotate-vision
pip install -e .
🎨 Quick Start - GUI
The easiest and most simplified way to use AutoAnnotate-Vision:
autoannotate-images
Note: Windows users need to have the latest C++ Redistributable installed which can be found here
Workflow:
- 📁 Select input folder with images
- 📂 Select output folder
- 🔢 Set number of classes
- 🤖 Choose model (SigLIP2 or DINOv2 recommended)
- ▶️ Click "Start Auto-Annotation"
The app will cluster images and open HTML previews in your browser showing sample images from each cluster for easy labeling!
💻 CLI Usage
For extra commands and utilities.
autoannotate-images-cli annotate /path/to/images /path/to/output \
--n-clusters 10 \
--method kmeans \
--model siglip2 \
--create-splits
Available models: clip, dinov2, dinov2-large, siglip2
🐍 Python API
from autoannotate import AutoAnnotator
annotator = AutoAnnotator(
input_dir="./images",
output_dir="./output",
model="siglip2", # or "dinov2", "dinov2-large", "clip"
clustering_method="kmeans",
n_clusters=5,
batch_size=32
)
result = annotator.run_full_pipeline(create_splits=True)
print(f"Processed {result['n_images']} images into {result['n_clusters']} classes")
Available models: clip, dinov2, dinov2-large, siglip2
Available clustering methods: kmeans, hdbscan, spectral, dbscan
📁 Output Structure
output/
├── metadata.json
├── labels.csv
├── cats/ # Your class names
│ ├── IMG_001.jpg # Original filenames preserved!
│ └── ...
├── dogs/
└── splits/ # train/val/test
├── train/
├── val/
└── test/
🧠 Model Comparison
| Model | Speed | Quality | Notes |
|---|---|---|---|
| CLIP | ⚡⚡ | ⭐⭐⭐ | General-purpose, good for diverse datasets |
| DINOv2 | ⚡⚡⚡ | ⭐⭐⭐⭐ | Fast, self-supervised, excellent for objects |
| DINOv2-Large | ⚡ | ⭐⭐⭐⭐⭐ | Best quality, slower, great for fine details |
| SigLIP2 | ⚡⚡⚡ | ⭐⭐⭐⭐⭐ | Latest Google model - Recommended 🌟 |
Recommendation: Start with SigLIP2 for best results, or DINOv2 for faster processing.
🔧 Features & Improvements
- ✅ Fast Image Processing: All models use optimized processors (
use_fast=True) for better performance - ✅ Normalized Embeddings: All embeddings are L2-normalized for consistent similarity measurements
- ✅ Batch Processing: Efficient batch processing with configurable batch sizes
- ✅ GPU Support: Automatic GPU detection and usage when available
- ✅ Progress Tracking: Real-time progress bars for all operations
- ✅ HTML Previews: Interactive HTML preview for visual cluster inspection before labeling
🔍 Pre-Push Checklist
Before pushing code:
# Format code
black src/autoannotate tests
# Run tests
pytest tests/ -v
# Typing
mypy src/autoannotate --ignore-missing-imports
🤝 Contributing
- Fork the repository
- Create feature branch
- Format with Black:
black src/autoannotate tests - Check typing with mypy:
mypy src/autoannotate --ignore-missing-imports - Run tests:
pytest tests/ -v - Push and create PR
📄 License
MIT License - see LICENSE file.
🙏 Acknowledgments
Built with PyTorch, Transformers, scikit-learn and more. Vision models: CLIP, DINOv2, SigLIP2.
Made for the RAIDO Project, from MetaMind Innovations
Sister Project: AutoAnnotate-Timeseries - For time series auto-annotation
Project details
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 autoannotate_vision-0.1.1.tar.gz.
File metadata
- Download URL: autoannotate_vision-0.1.1.tar.gz
- Upload date:
- Size: 36.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5e88c976b46c4c5161ae45955e64e7e1622c5eed0fff2ff73a14fbe613e9f44
|
|
| MD5 |
07e3924813d90a40670b29293426193b
|
|
| BLAKE2b-256 |
018bcb9ca06e897e77aa778b3bdd918a256dab283ec7d3624fc1fa96b3119a41
|
File details
Details for the file autoannotate_vision-0.1.1-py3-none-any.whl.
File metadata
- Download URL: autoannotate_vision-0.1.1-py3-none-any.whl
- Upload date:
- Size: 26.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a9275fc0b10af55637c47a3c1d076f6c95c85e58f3a4166f899c523be9733db
|
|
| MD5 |
7c2f26bb215185fb626e9816f724f188
|
|
| BLAKE2b-256 |
d7e8dd4f616db90651378770b2709c2563b01f03ee1f0ce1ca255ecd1baf1c11
|