anylabeling
Effortless AI-assisted data labeling with AI support from YOLO, Segment Anything (SAM+SAM2), MobileSAM!!
Top Related Projects
LabelImg is now part of the Label Studio community. The popular image annotation tool created by Tzutalin is no longer actively being developed, but you can check out Label Studio, the open source data labeling tool for images, text, hypertext, audio, video and time-series data.
Image Polygonal Annotation with Python (polygon, rectangle, circle, line, point and image-level flag annotation).
Label Studio is a multi-type data labeling and annotation tool with standardized output format
Annotate better with CVAT, the industry-leading data engine for machine learning. Used and trusted by teams at any scale, for data of any scale.
Visual Object Tagging Tool: An electron app for building end to end Object Detection Models from Images and Videos.
Quick Overview
AnyLabeling is a powerful and versatile open-source tool for creating and managing image and video annotations. It supports a wide range of annotation types, including bounding boxes, polygons, and keypoints, and can be used for a variety of computer vision tasks such as object detection, segmentation, and pose estimation.
Pros
- Comprehensive Annotation Support: AnyLabeling supports a wide range of annotation types, including bounding boxes, polygons, and keypoints, making it suitable for a variety of computer vision tasks.
- User-friendly Interface: The tool has a clean and intuitive user interface, making it easy for users to create, edit, and manage annotations.
- Efficient Workflow: AnyLabeling provides features like batch processing, automatic annotation propagation, and keyboard shortcuts to streamline the annotation process.
- Flexible Data Management: The tool supports various data formats, including COCO, YOLO, and Pascal VOC, and allows users to export annotations in multiple formats.
Cons
- Limited Collaboration Features: While AnyLabeling supports basic collaboration features, such as sharing projects, it lacks more advanced features like real-time collaboration and version control.
- Steep Learning Curve: The tool's extensive feature set and customization options may make it challenging for some users, especially those new to annotation tools.
- Lack of Mobile Support: AnyLabeling is currently only available as a desktop application, which may limit its accessibility for users who prefer to work on the go.
- Potential Performance Issues: The tool may experience performance issues when working with large datasets or high-resolution images, especially on older or less powerful hardware.
Code Examples
Since AnyLabeling is a desktop application and not a code library, there are no code examples to provide.
Getting Started
To get started with AnyLabeling, follow these steps:
- Download and Install: Visit the AnyLabeling GitHub repository and download the latest release for your operating system.
- Create a New Project: Launch the AnyLabeling application and click on the "New Project" button to create a new project.
- Import Data: Add your images or videos to the project by clicking on the "Import Data" button and selecting the files you want to annotate.
- Create Annotations: Use the various annotation tools provided by AnyLabeling to create bounding boxes, polygons, keypoints, or other types of annotations on your data.
- Manage Annotations: Utilize the annotation management features, such as the annotation list, to review, edit, and organize your annotations.
- Export Annotations: When you're done, export your annotations in the desired format (e.g., COCO, YOLO, Pascal VOC) by clicking on the "Export" button.
For more detailed instructions and information on the various features of AnyLabeling, please refer to the project's documentation.
Competitor Comparisons
LabelImg is now part of the Label Studio community. The popular image annotation tool created by Tzutalin is no longer actively being developed, but you can check out Label Studio, the open source data labeling tool for images, text, hypertext, audio, video and time-series data.
Pros of labelImg
- Extensive Documentation: The labelImg repository provides detailed documentation, including installation instructions, usage examples, and a comprehensive guide to the tool's features.
- Active Development: The project has an active community, with regular updates and bug fixes.
- Supported Formats: labelImg supports a wide range of image and annotation formats, making it versatile for various computer vision tasks.
Cons of labelImg
- Limited Customization: The tool's user interface and functionality are relatively fixed, with limited options for customization or extension.
- Dependency on Qt: labelImg relies on the Qt framework, which may not be preferred by all users or may require additional setup.
Code Comparison
Here's a brief comparison of the code structure between the two repositories:
# vietanhdev/anylabeling
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtGui import QImage, QPixmap
from PyQt5.QtCore import Qt, QRect, QPoint
class AnyLabelingWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('AnyLabeling')
self.setGeometry(100, 100, 800, 600)
# HumanSignal/labelImg
from PyQt5 import QtGui, QtCore, QtWidgets
from libs.pascal_voc_io import PascalVocReader, PascalVocWriter
from libs.ustr import ustr
from libs.shape import Shape, DEFAULT_LINE_COLOR, DEFAULT_FILL_COLOR
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setWindowTitle(__appname__)
self.setWindowIcon(QtGui.QIcon(os.path.join('resources', 'icon.png')))
As you can see, both repositories use PyQt5 for their graphical user interface, but the overall structure and organization of the code differ.
Image Polygonal Annotation with Python (polygon, rectangle, circle, line, point and image-level flag annotation).
Pros of labelme
- Mature and well-established project with a large user base
- Supports a wide range of annotation types, including polygons, lines, and points
- Extensive documentation and community support
Cons of labelme
- Less focus on AI-assisted labeling compared to anylabeling
- User interface may feel less modern and intuitive
- Limited integration with deep learning frameworks
Code Comparison
labelme:
from labelme import utils
img = utils.img_data_to_arr(img_data)
label_name_to_value = {'_background_': 0}
for shape in sorted(data['shapes'], key=lambda x: x['label']):
label_name = shape['label']
if label_name in label_name_to_value:
label_value = label_name_to_value[label_name]
else:
label_value = len(label_name_to_value)
label_name_to_value[label_name] = label_value
anylabeling:
from anylabeling.services import LabelingService
labeling_service = LabelingService()
result = labeling_service.label_image(image_path)
for label in result.labels:
print(f"Label: {label.name}, Confidence: {label.confidence}")
print(f"Bounding Box: {label.bounding_box}")
The code comparison shows that anylabeling provides a higher-level API for AI-assisted labeling, while labelme offers more low-level control over the labeling process.
Label Studio is a multi-type data labeling and annotation tool with standardized output format
Pros of Label Studio
- Extensive Functionality: Label Studio offers a wide range of features for data annotation, including support for various data types (images, text, audio, and video) and a variety of annotation tools.
- Collaborative Workflow: Label Studio enables collaborative annotation, allowing multiple users to work on the same dataset simultaneously.
- Customizable Interface: The platform provides a customizable user interface, allowing users to tailor the experience to their specific needs.
Cons of Label Studio
- Steeper Learning Curve: Compared to AnyLabeling, Label Studio may have a more complex setup and configuration process, which could be a barrier for some users.
- Resource Intensive: Label Studio requires more system resources, such as CPU and memory, to run effectively, which could be a limitation for users with less powerful hardware.
Code Comparison
AnyLabeling:
from anylabeling.app import create_app
app = create_app()
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)
Label Studio:
from label_studio.server import run_server
if __name__ == "__main__":
run_server()
Both code snippets demonstrate the basic setup and execution of the respective applications. The AnyLabeling code creates an instance of the Flask application and runs it on the specified host and port, while the Label Studio code runs the server using the run_server()
function.
Annotate better with CVAT, the industry-leading data engine for machine learning. Used and trusted by teams at any scale, for data of any scale.
Pros of CVAT
- Extensive documentation and active community support
- Supports a wide range of annotation types, including bounding boxes, polygons, and keypoints
- Provides a web-based interface for easy collaboration and task management
Cons of CVAT
- Relatively complex setup process compared to AnyLabeling
- Larger codebase and dependencies, which may be overkill for smaller projects
- Limited support for custom data formats out of the box
Code Comparison
CVAT:
from cvat.apps.dataset_manager.formats.ms_coco import dumper
from cvat.apps.dataset_manager.task import TaskData
task_data = TaskData(annotation_path, image_dir)
dumper.dump(task_data, output_path)
AnyLabeling:
from anylabeling.utils import save_annotations
annotations = [
{'class': 'person', 'bbox': [10, 20, 50, 60]},
{'class': 'car', 'bbox': [100, 150, 80, 120]}
]
save_annotations(annotations, output_path)
Visual Object Tagging Tool: An electron app for building end to end Object Detection Models from Images and Videos.
Pros of VoTT
- VoTT provides a more comprehensive set of features for video annotation, including support for multiple video formats, object tracking, and export to various annotation formats.
- VoTT has a larger and more active community, with more contributors and a more extensive documentation.
- VoTT is backed by Microsoft, which may provide more reliable long-term support and updates.
Cons of VoTT
- VoTT has a more complex and less intuitive user interface compared to AnyLabeling.
- VoTT may have a steeper learning curve, especially for users who are new to video annotation tools.
- VoTT may have a larger footprint and require more system resources compared to AnyLabeling.
Code Comparison
AnyLabeling:
def load_image(self, image_path):
"""Load an image from the specified path."""
image = Image.open(image_path)
image = image.convert('RGB')
return image
VoTT:
function loadImage(imagePath) {
return new Promise((resolve, reject) => {
const img = new Image();
img.onload = () => resolve(img);
img.onerror = reject;
img.src = imagePath;
});
}
Both functions load an image from a specified path, but the implementation differs. AnyLabeling uses the Pillow library, while VoTT uses the built-in Image
object in JavaScript.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
ð AnyLabeling ð
Effortless data labeling with AI support from YOLO and Segment Anything!
AnyLabeling = LabelImg + Labelme + Improved UI + Auto-labeling
+â Follow vietanhdev for project updates.
Auto Labeling with Segment Anything
- Youtube Demo: https://www.youtube.com/watch?v=5qVJiYNX5Kk
- Documentation: https://anylabeling.nrl.ai
Features:
- Image annotation for polygon, rectangle, circle, line and point.
- Auto-labeling YOLOv8, Segment Anything (SAM, SAM2).
- Text detection, recognition and KIE (Key Information Extraction) labeling.
- Multiple languages availables: English, Vietnamese, Chinese.
Install and Run
1. Download and run executable
- Download and run newest version from Releases.
- For MacOS:
- After installing, go to Applications folder
- Right click on the app and select Open
- From the second time, you can open the app normally using Launchpad
Install from Pypi
-
Requirements: Python 3.10+. Recommended: Python 3.12.
-
Recommended: Miniconda/Anaconda.
-
Create environment:
conda create -n anylabeling python=3.12
conda activate anylabeling
- (For macOS only) Install PyQt5 using Conda:
conda install -c conda-forge pyqt==5.15.9
- Install anylabeling:
pip install anylabeling # or pip install anylabeling-gpu for GPU support
- Start labeling:
anylabeling
Documentation
Website: https://anylabeling.nrl.ai/
Applications
Object Detection | Recognition | Facial Landmark Detection | 2D Pose Estimation |
---|---|---|---|
2D Lane Detection | OCR | Medical Imaging | Instance Segmentation |
Image Tagging | Rotation | And more! | |
Your applications here! |
Development
- Install packages:
pip install -r requirements-dev.txt
# or pip install -r requirements-macos-dev.txt for MacOS
- Generate resources:
pyrcc5 -o anylabeling/resources/resources.py anylabeling/resources/resources.qrc
- Run app:
python anylabeling/app.py
Build executable
- Install PyInstaller:
pip install -r requirements-dev.txt
- Build:
bash build_executable.sh
- Check the outputs in:
dist/
.
Contribution
If you want to contribute to AnyLabeling, please read Contribution Guidelines.
Star history
References
- Labeling UI built with ideas and components from LabelImg, LabelMe.
- Auto-labeling with Segment Anything Models, MobileSAM.
- Auto-labeling with YOLOv8.
Top Related Projects
LabelImg is now part of the Label Studio community. The popular image annotation tool created by Tzutalin is no longer actively being developed, but you can check out Label Studio, the open source data labeling tool for images, text, hypertext, audio, video and time-series data.
Image Polygonal Annotation with Python (polygon, rectangle, circle, line, point and image-level flag annotation).
Label Studio is a multi-type data labeling and annotation tool with standardized output format
Annotate better with CVAT, the industry-leading data engine for machine learning. Used and trusted by teams at any scale, for data of any scale.
Visual Object Tagging Tool: An electron app for building end to end Object Detection Models from Images and Videos.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot