Convert Figma logo to code with AI

vietanhdev logoanylabeling

Effortless AI-assisted data labeling with AI support from YOLO, Segment Anything (SAM+SAM2), MobileSAM!!

2,208
236
2,208
61

Top Related Projects

22,458

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.

13,138

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

12,212

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.

4,277

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:

  1. Download and Install: Visit the AnyLabeling GitHub repository and download the latest release for your operating system.
  2. Create a New Project: Launch the AnyLabeling application and click on the "New Project" button to create a new project.
  3. 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.
  4. Create Annotations: Use the various annotation tools provided by AnyLabeling to create bounding boxes, polygons, keypoints, or other types of annotations on your data.
  5. Manage Annotations: Utilize the annotation management features, such as the annotation list, to review, edit, and organize your annotations.
  6. 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

22,458

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.

13,138

Image Polygonal Annotation with Python (polygon, rectangle, circle, line, point and image-level flag annotation).

Pros of LabelMe

  • LabelMe provides a web-based interface for annotating images, making it accessible to a wider range of users.
  • The project has a large and active community, with regular updates and a wealth of documentation and resources.
  • LabelMe supports a wide range of annotation types, including polygons, bounding boxes, and segmentation masks.

Cons of LabelMe

  • LabelMe may have a steeper learning curve compared to AnyLabeling, especially for users who are more comfortable with a desktop-based application.
  • The web-based nature of LabelMe may introduce additional complexity in terms of deployment and hosting.
  • LabelMe may have a larger footprint in terms of dependencies and runtime requirements compared to the more lightweight AnyLabeling.

Code Comparison

AnyLabeling:

from anylabeling.app import App

app = App()
app.run()

LabelMe:

from labelme.app import MainWindow
from qtpy.QtWidgets import QApplication
import sys

app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()

Both code snippets demonstrate the basic setup and execution of the respective annotation tools. The AnyLabeling code is more concise, while the LabelMe code includes additional setup for the Qt-based GUI framework.

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.

12,212

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)
4,277

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

AnyLabeling

🌟 AnyLabeling 🌟

Effortless data labeling with AI support from YOLO and Segment Anything!

AnyLabeling = LabelImg + Labelme + Improved UI + Auto-labeling

PyPI license open issues Pypi Downloads Documentation Follow

+⭐ Follow vietanhdev for project updates.

AnyLabeling

Auto Labeling with Segment Anything

AnyLabeling-SegmentAnything

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 DetectionRecognitionFacial Landmark Detection2D Pose Estimation
2D Lane DetectionOCRMedical ImagingInstance Segmentation
Image TaggingRotationAnd 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

Star History Chart

References