BMW-InnovationLab / BMW-Labeltool-Lite

This repository provides you with an easy-to-use labeling tool for State-of-the-art Deep Learning training purposes. It supports Auto-Labeling.
317 stars 46 forks source link
annotaion auto-label autolabeling bounding-box boundingbox computer-vision deep-learning docker image-annotation inference label labeling-tool labeltool neural-network object-detection smart-labeling synthetic-data tensorflow voc yolov4

LabelTool lite (update!!!)


This repository provides you with a image data annotation tool with little to no configuration needed! The lite version of the tool focuses on bounding box based training data annotation. You can start labeling your images for state-of-the-art deep learning training purposes right away with our dockerized LabelTool lite. You can also directly use the labels provided by the LabelTool lite to train with our Yolov4 and Tensorflow Training GUI repositories:

BMW-TensorFlow-Training-GUI

BMW-YOLOv4-Training-Automation

Additionally, it is possible to connect a pre-trained or a custom-trained model to the LabelTool lite. This functionality allows one to accelerate the labeling process whereby the connected model can be actively used to suggest appropriate labels for each image.

Prerequisites

PS: You may need to increase the shared memory docker is using

Running the LabelTool lite:

We provide a sample dataset in case you don't have your own custom dataset.

docker-compose up

Navigation options in LabelTool lite

Bounding box features

Preparing your custom dataset:

In your project's repository, this is how the training-data folder structure should look like after preparing your dataset (follow steps below):

│──/data/training-data
  │──myfirstdataset
  │  │──images
  │  │──labels
  │  │  │──json
  │  │
  │  │──objectclasses.json
  │
  │──topics.json
  ,
  {
      "Id": 3,
      "Name": "myfirstdataset",
      "FolderPath": "myfirstdataset",
      "Path": null
  }

Make sure you replace "myfirstdataset" with your dataset's name.

After finishing , your topics.json file should look like this :

Running the LabelTool lite:

Training with our Tensorflow Gui

To use the generated labels with our tensorflow gui follow the steps below :

Follow the instructions on our Tensorflow Gui Github repository to launch and train it

Training with our Yolov4 and Yolov3-Training-Automation

To use the labels with our Yolov4-v3-Training-Automation, go to the labeltool's repository and run the command below :

python3 converttoyolo.py --dir myfirstdataset

Make sure to replace "myfirstdataset" in the command with your dataset's folder name

A new folder "yolo" is created inside your dataset's "labels" folder.

Follow the instructions on our Yolov4-v3 Training Automation Github repository to launch it and train

Accelerate image annotation with a pre-trained model

Connect a trained model to the Labeltool GUI and accelerate the labeling process.

To connect the model container to the Labeltool, modify the docker-compose.yml file to include it and re-build all the applications together. An example of how one should modify the docker-compose.yml file is shown below:

Known Issues

-Only one model can be connected to the "Suggest bounding boxes" menu. If the Object classes in the connected model does not match the ones in the data set, no results or error messages will be displayed. When the "Suggest bounding boxes" does not deliver any response, please check the log files of the container and as well as the consistency of the Object classes between model and Topic.

-All JSON files should be encoded in "UTF-8", otherwise an error may occur.

Acknowledgements

inmind.ai

Robotron

Roy Anwar

Eduard Saller