A tool for annotating images using manual and automated tools, supporting multi-dimensional images and SAM2-assisted annotations
Project description
DigitalSreeni Image Annotator and Toolkit
A powerful and user-friendly tool for annotating images with polygons and rectangles, built with PyQt5. Now with additional supporting tools for comprehensive image processing and dataset management.
@DigitalSreeni Dr. Sreenivas Bhattiprolu
Features
- Semi-automated annotations with SAM-2 assistance (Segment Anything Model) — Because who doesn't love a helpful AI sidekick?
- Manual annotations with polygons and rectangles — For when you want to show SAM-2 who's really in charge.
- Save and load projects for continued work.
- Import existing COCO JSON annotations with images.
- Export annotations to various formats (COCO JSON, YOLO v8, Labeled images, Semantic labels, Pascal VOC).
- Handle multi-dimensional images (TIFF stacks and CZI files).
- Zoom and pan for detailed annotations.
- Support for multiple classes with customizable colors.
- User-friendly interface with intuitive controls.
- Change the application font size on the fly — Make your annotations as big or small as your caffeine level requires.
- Dark mode for those late-night annotation marathons — Who needs sleep when you have dark mode?
- Pick appropriate pre-trained SAM2 model for flexible and improved semi-automated annotations.
- Additional supporting tools:
- Annotation statistics for current annotations
- COCO JSON combiner
- Dataset splitter
- Stack to slices converter
- Image patcher
- Image augmenter
Installation
You can install the DigitalSreeni Image Annotator directly from PyPI:
pip install digitalsreeni-image-annotator
The application uses the Ultralytics library, so there's no need to separately install SAM2 or PyTorch, or download SAM2 models manually.
Usage
-
Run the DigitalSreeni Image Annotator application:
digitalsreeni-image-annotator
or
sreeni
or
python -m digitalsreeni_image_annotator.main
-
Using the application:
- Click "New Project" or use Ctrl+N to start a new project.
- Use "Add New Images" to import images, including TIFF stacks and CZI files.
- Add classes using the "Add Classes" button.
- Select a class and use the Polygon or Rectangle tool to create manual annotations.
- To use SAM2-assisted annotation:
- Select a model from the "Pick a SAM Model" dropdown. It's recommended to use smaller models like SAM2 tiny or SAM2 small. SAM2 large is not recommended as it may crash the application on systems with limited resources.
- Note: When you select a model for the first time, the application needs to download it. This process may take a few seconds to a minute, depending on your internet connection speed. Subsequent uses of the same model will be faster as it will already be cached locally, in your working directory.
- Click the "SAM-Assisted" button to activate the tool.
- Draw a rectangle around objects of interest to allow SAM2 to automatically detect objects.
- Note that SAM2 provides various outputs with different scores, and only the top-scoring region will be displayed. If the desired result isn't achieved on the first try, draw again.
- For low-quality images where SAM2 may not auto-detect objects, manual tools may be necessary.
- Edit existing annotations by double-clicking on them.
- Save your project using "Save Project" or Ctrl+S.
- Use "Open Project" or Ctrl+O to load a previously saved project.
- Click "Import Annotations with Images" to load existing COCO JSON annotations along with their images.
- Use "Export Annotations" to save annotations in various formats (COCO JSON, YOLO v8, Labeled images, Semantic labels, Pascal VOC).
- Access additional tools under the Tools menu bar:
- Annotation Statistics
- COCO JSON Combiner
- Dataset Splitter
- Stack to Slices Converter
- Image Patcher
- Image Augmenter
- Each tool opens a separate UI to guide you through the respective task.
- Access the help documentation by clicking the "Help" button or pressing F1.
- Explore the interface – you might stumble upon some hidden gems and secret features!
-
Keyboard shortcuts:
- Ctrl + N: Create a new project
- Ctrl + O: Open an existing project
- Ctrl + S: Save the current project
- Ctrl + W: Close the current project
- Ctrl + Shift + S: Open Annotation Statistics
- F1: Open the help window
- Ctrl + Wheel: Zoom in/out
- Hold Ctrl and drag: Pan the image
- Esc: Cancel current annotation, exit edit mode, or exit SAM-assisted annotation
- Enter: Finish current annotation, exit edit mode, or accept SAM-generated mask
- Up/Down Arrow Keys: Navigate through slices in multi-dimensional images
Development
For development purposes, you can clone the repository and install it in editable mode:
-
Clone the repository:
git clone https://github.com/bnsreenu/digitalsreeni-image-annotator.git cd digitalsreeni-image-annotator
-
Create a virtual environment (optional but recommended):
python -m venv venv source venv/bin/activate # On Windows, use `venv\Scripts\activate`
-
Install the package and its dependencies in editable mode:
pip install -e .
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Thanks to all my YouTube subscribers who inspired me to work on this project
- Inspired by the need for efficient image annotation in computer vision tasks
Contact
Dr. Sreenivas Bhattiprolu - @DigitalSreeni
Project Link: https://github.com/bnsreenu/digitalsreeni-image-annotator
Citing
If you use this software in your research, please cite it as follows:
Bhattiprolu, S. (2024). DigitalSreeni Image Annotator [Computer software]. https://github.com/bnsreenu/digitalsreeni-image-annotator
@software{digitalsreeni_image_annotator,
author = {Bhattiprolu, Sreenivas},
title = {DigitalSreeni Image Annotator},
year = {2024},
url = {https://github.com/bnsreenu/digitalsreeni-image-annotator}
}
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
File details
Details for the file digitalsreeni_image_annotator-0.5.8.tar.gz
.
File metadata
- Download URL: digitalsreeni_image_annotator-0.5.8.tar.gz
- Upload date:
- Size: 60.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4194c7a9b2c09c2153c8f248457597f6d831d567720a701e373db3115c6e8c33 |
|
MD5 | e37574d31800d650b12ab13697be23c3 |
|
BLAKE2b-256 | 9428069b3ebb4a1365e0d250619c080b119b94931633fe3210790c9110d29402 |
File details
Details for the file digitalsreeni_image_annotator-0.5.8-py3-none-any.whl
.
File metadata
- Download URL: digitalsreeni_image_annotator-0.5.8-py3-none-any.whl
- Upload date:
- Size: 63.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc5c5537d6b7598b601055c254c4e9bb99542c616c94ccb223045105c54733bd |
|
MD5 | 20ab80c7df7fdfd0ba8dacf575661210 |
|
BLAKE2b-256 | 210cb16653909b2ac67301f5d69faa2e73d787ddef74949a676ce63266490776 |