AI / ML Resources – Labeling Tools

  1. SuperAnnotate
    is an end-to-end image and video annotation platform that streamlines and automates computer vision workflows.
    Backed by renowned professors Pieter Abbeel and Trevor Darrell, SuperAnnotate is helping companies build and boost their computer vision pipelines.
    The tool offers both vector annotations (boxes, polygons, lines, ellipses, keypoints with templates and cuboids) and pixel-wise annotation with a brush. It provides both image and video annotations.

SuperAnnotate also provides advanced features, such as automatic predictions; active learning; transfer learning; and flexible user, quality, and data management systems which allow computer vision engineers to accelerate a given task by 5–10x.

SuperAnnotate is available with the following pricing model: Free for the first 100 images and for academic research, paid versions including the Starter package (up to 10.000 images), Pro (unlimited images), and Enterprise (unlimited, custom).

Recently, as part of the partnership with OpenCV, SuperAnnotated launched its best-in-class free annotation tool for the computer vision community

VGG Image Annotation Tool
VGG Image Annotation Tool (VIA) is an open-source, easy to use and independent manual annotation software. It can be used for the annotation of image, audio and video. HTML, CSS and Javascript have been used to develop this tool.

It is a standalone software, which means it is not dependent on any external libraries. This is a very lightweight software, having a size of less than 400 KB.

This tool can run on any web browser without any installation or setup. It offers a vast number of features. It comprises a variety of tools, supporting lines, dots, circles, polygons and eclipses.

You can also add objects and there is also an option to introduce image attributes or tags. All the annotations are contained in one JavaScript Object Notation (JSON) file or a Comma Separated Value (CSV) file. You can download the annotations.

Though it does not contain any advanced features in dataset management, the interface used by this software is simple, efficient and user-friendly. Some of the commonly used features of this tool are basic image annotation, face annotation, remote image annotation, fast track annotation, video annotation and audio annotation.

It is one of the best tools for annotation of polygons, as you can view the lines of the polygon and nothing else. It also supports a large number of hotkey shortcuts. VIA is a free annotation software too

Supervise.ly
Supervise.ly is one of the best web-based platforms, where you can not only access an advanced annotation interface but can also learn about the whole process of computer vision training and the various models library that can be directly improved within the platform. It uses Python SDK to import plugin for custom data formats, carry out neural network models, and to run various tools such as Data Transformation Language.

Some of the important features of Suprevise.ly are:

You can read, change and write the Supervise.ly projects on the disk.

You can develop Supervise.ly plugins so that your focus remains only on the core of your custom logic.

You can perform various functions regarding labeling data, geometric objects, and tags.

A number of tools are present, such as boxes, lines, dots, polygons, bitmap brush, etc. There is

Also an important feature of drawing holes within the polygons. You can also add images, object tags and order figures in layers. There is also a feature that helps you perform data transformation directly on the software.

The software provides a huge number of options for project management on different levels like teams, workspaces and datasets. It also offers many options for annotator management.

However, a few things are missing such as time statistics and quality control mechanisms. It also supports various customizable hotkey shortcuts. This tool charges no price for the community edition but prices are charged for self-hosted versions.

Labelbox
Labelbox is one of the most popular advanced data labeling tools. It was created in 2018. It offers a free community version as well as an enterprise version. The free version is limited to 5000 images.

It offers various impressive and useful features and tools. Some of the tools for annotation are boxes, polygons, points, lines, etc. It also has a superpixel coloring option — a newly added feature for semantic segmentation brush. All the annotations are saved in the form of a single JSON or CSV file.

Labelbox also comprises of an easy and user-friendly interface. There are several options for monitoring performance, quality control mechanisms, invite users and review the work of each one.

Some of the other key features of Labelbox are customizable labeling interfaces, tiled imagery support (maps), advanced labeling tools, concurrent labeling queue, private and secure data, flexible collaboration and management tools, quality assurance, fully-featured API, measure performance and export your labels.

  1. Visual Object Tagging Tool (VoTT)
    Visual Object Tagging Tool is an open-source annotation and labeling tool, developed by Microsoft. Different features of this tool are:

a. It allows to label images and videos.

b. It allows you to import data from various local and cloud storage providers.

c. It allows you to export data to different local and cloud storage providers.

Various advantages of using this tool are:

a. The code of this software is well written and the interface is easy to work on.

b. It has a feature of deep learning algorithms, which automatically detect the objects.

c. It is available as a web app as well as an electronic app.

Various disadvantages of using this tool are:

a. You have to host your data on Azure to use the web app of this tool. Azure is the cloud computing service of Microsoft.

b. This tool does not have a built-in API.

c. You can only draw bounding boxes and polygons but cannot label a picture. Therefore, this tool is not perfect for making a classification dataset.

d. The main objective of image annotation is to enable your computer to interpret images and videos in a more efficient way. There are a number of applications for image annotation. Some of them are face recognition, robotics, text recognition, autonomous vehicles, security system, AgTech, image retrieval, etc. Go through this image labeling tools for computer vision to get an idea about the different annotation tools.

Other Notes –

Any object detection model suffers from class imbalance between foreground and background, since majority of the time in any real world scene image region/pixels occupied by foreground object (in this case Persons) are very small as compared to the background region which create class imbalance between foreground and background region. This kind of class imbalance makes the object detection model biased towards the background class.

How to generate the labels of custom data for YOLO

The labels for YOLO is like [class, x , y, width, height] . Since the dataset is very large, is there any shortcut to generate the labels for YOLO, or we have to hardcode them through measurement?

1

Method 1: Using Pre-trained YOLOv4 models. YOLOv4 models were pre-trained on COCO dataset. So, if your object(s) can be found in this list, then, you can use the pre-trained weights to pseudo-label your object(s).

To process a list of images data/new_train.txt and save results of detection in Yolo training format for each image as label <image_name>.txt, use: darknet.exe detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights -thresh 0.25 -dont_show -save_labels < data/new_train.txt

Method 2: Using Other Pre-trained Models. It’s the same concept. Use other pre-trained models to detect your object (as long as they have trained their models on your object), then export/convert the labels to YOLO format.

Method 3: Use hand-crafted feature descriptors. Examples are shape detection, color-based detection, etc.

Method 4: Manual labelling. If everything else fails, do the labelling yourself or hire some data labelling services. Here’s a list of tools that you can use if you want to label them yourself.

STEPS TO LABEL DATA (Credit : Muhammad Rizwan Munawar)

There are many object detection algorithms, but mostly used algorithms include,

  • SSD (Single-shot detector)
  • YOLO (you only look once)
  • Fast RCNN

In this article, we will focus on Yolo labeling, which accepts a label in the txt file. Other object detectors need a label file but their label files are in different formats.

we will use a labeling tool for labeling data. You need to download the full GitHub repository from the link.

labeling Tool download

once downloaded, then extract it in the same folder.

Labeling tool extracted successfully

Note: if you have an anaconda installed then you can continue, otherwise, you first need to install an anaconda from the link.

Now, open extracted folder. Open an anaconda command prompt and then move to the extracted folder with (cd command).

Opening the anaconda prompt in the extracted folder

Window Users (commands to build labeling tool)

For pyrcc4 use this command,
pyrcc4 -o libs/resources.py resources.qrcFor pyrcc5 use this command,
pyrcc5 -o libs/resources.py resources.qrcpython labelImg.py

If all the above commands run successfully, you will be able to see the GUI of the labeling tool.

Command execution
labeling Tool GUI

Linux Users (commands to build labeling tool)

sudo apt-get install pyqt5-dev-tools
sudo pip3 install -r requirements/requirements-linux-python3.txt
make qt5py3
python3 labelImg.py

If all the above commands run successfully, you will be able to see the GUI of the labeling tool.

Mac Users (commands to build labeling tool)

brew install qt  # Install qt-5.x.x by Homebrew
brew install libxml2

or using pip

pip3 install pyqt5 lxml # Install qt and lxml by pip

make qt5py3
python3 labelImg.py

if all the above commands run successfully, you will be able to see the GUI of the labeling tool.

Our labeling tool installed successfully, let’s start labeling on images.

Step-1: Download some images from google and store them in some folder.

Dataset visualization

Step-2: Now, open the stored images folder in the labeling tool. for this to be done, you need to open the GUI of the labeling tool and then select the open dir option.

Dataset inside labeling tool

Step-3: Now, we need to label the image by selecting create RectBox option, then dragging on the car area, and then selecting the label car.

Label Image

Step-4: Now, that we labeled our image successfully, now we can save it with (CTRL+S). and it will create a text file of the same name as the image name in the same folder.

Label files

Now, we can check any text file for verification.

Yolo Format:

<object-class> <x> <y> <width> <height>
Txt file

In the above picture,

  • 4 is class_id
  • 0.494545 is the x-axis value
  • 0.521858 is the y-axis value
  • 0.770909 is the width of an object
  • 0.551913 is the height of an object.

Additional Links

How Focal Loss fixes the Class Imbalance problem in Object Detection

https://medium.com/analytics-vidhya/how-focal-loss-fixes-the-class-imbalance-problem-in-object-detection-3d2e1c4da8d7

NVIDIA Developer Forum

https://forums.developer.nvidia.com/

arXiv

arXiv is a free distribution service and an open-access archive for 2,134,838 scholarly articles in the fields of physics, mathematics, computer science, quantitative biology, quantitative finance, statistics, electrical engineering and systems science, and economics. Materials on this site are not peer-reviewed by arXiv.

https://arxiv.org/

LearningSpiral

Data Annotation & Data Labeling services to Power your Algorithms