๐Ÿ–ผ๏ธ
Annotate-Lab
  • ๐Ÿ‘‹Welcome to Annotate Lab
  • Overview
    • โœจKey Features
    • ๐Ÿ—ƒ๏ธProject Structure
    • โš™๏ธCustomization
  • Fundamentals
    • โฌ‡๏ธInstallation
    • ๐Ÿ› ๏ธSet up and Run
      • ๐Ÿ“Configuration
      • ๐Ÿ–ผ๏ธAnnotating Images
      • ๐Ÿ’พOutputs
      • ๐ŸงชRunning Tests
      • ๐Ÿ“”Code Formatting
  • Example
    • ๐ŸšฒAnnotating Bicycle
    • ๐Ÿ–ผ๏ธRipe and Unripe Tomatoes Dataset
    • ๐Ÿช„Auto Bounding Box Selection with Segment Anything Model (SAM)
  • โš ๏ธTroubleshooting
  • ๐ŸชชLicense
Powered by GitBook
On this page
  • YOLO Format
  • Normalization process of YOLO annotations
  1. Fundamentals
  2. Set up and Run

Outputs

PreviousAnnotating ImagesNextRunning Tests

Last updated 10 months ago

One can download the annotated image into various formats. Following are the examples of annotated image of an orange.

The configuration can be downloaded using built in configuration or using YOLO format.

{
   "orange.png":{
      "configuration":[
         {
            "image-name":"orange.png",
            "regions":[
               {
                  "region-id":"47643630436867834",
                  "image-src":"http://127.0.0.1:5000/uploads/orange.png",
                  "class":"Orange",
                  "comment":"",
                  "tags":"",
                  "points":[
                     [
                        0.4685613390092879,
                        0.7693498452012384
                     ],
                     [
                        0.6781491873065015,
                        0.6640866873065016
                     ],
                     [
                        0.723921246130031,
                        0.5092879256965944
                     ],
                     [
                        0.7480118034055728,
                        0.34055727554179566
                     ],
                     [
                        0.5841960139318886,
                        0.14705882352941177
                     ],
                     [
                        0.41917569659442727,
                        0.13312693498452013
                     ],
                     [
                        0.30113196594427244,
                        0.22755417956656346
                     ],
                     [
                        0.21079237616099072,
                        0.4411764705882353
                     ],
                     [
                        0.26620065789473685,
                        0.6764705882352942
                     ],
                     [
                        0.4011077786377709,
                        0.7879256965944272
                     ]
                  ]
               },
               {
                  "region-id":"5981359766055432",
                  "image-src":"http://127.0.0.1:5000/uploads/orange.png",
                  "class":"Apple",
                  "comment":"",
                  "tags":"",
                  "x":[
                     0.1770655959752322
                  ],
                  "y":[
                     0.11764705882352941
                  ],
                  "w":[
                     0.5854005417956657
                  ],
                  "h":[
                     0.6981424148606811
                  ]
               }
            ],
            "color-map":{
               "Orange":[
                  244,
                  67,
                  54
               ],
               "Apple":[
                  33,
                  150,
                  243
               ]
            }
         }
      ]
   }
}

YOLO Format

Annotating it in A.Lab.

The label of the above image are as follows:

0 0.213673 0.474717 0.310212 0.498856
0 0.554777 0.540507 0.306350 0.433638
1 0.378432 0.681239 0.223970 0.268879

Applying the generated labels we get following results.

Normalization process of YOLO annotations

Example Conversion

To convert non-normalized bounding box coordinates (xmax, ymax, xmin, ymin) to YOLO format (xcenter, ycenter, width, height):

# Assuming row contains your bounding box coordinates
row = {'xmax': 400, 'xmin': 200, 'ymax': 300, 'ymin': 100}
class_id = 0  # Example class id (replace with actual class id)

# Image dimensions
WIDTH = 640  # annotated image width
HEIGHT = 640  # annotated image height

# Calculate width and height of the bounding box
width = row['xmax'] - row['xmin']
height = row['ymax'] - row['ymin']

# Calculate the center of the bounding box
x_center = row['xmin'] + (width / 2)
y_center = row['ymin'] + (height / 2)

# Normalize the coordinates
normalized_x_center = x_center / WIDTH
normalized_y_center = y_center / HEIGHT
normalized_width = width / WIDTH
normalized_height = height / HEIGHT

# Create the annotation string in YOLO format
content = f"{class_id} {normalized_x_center} {normalized_y_center} {normalized_width} {normalized_height}"
print(content)

The above conversion will give us YOLO format string.

0 0.46875 0.3125 0.3125 0.3125

is also supported by A.Lab. Below is an example of annotated ripe and unripe tomatoes. In this example, 0 represents ripe tomatoes and 1 represents unripe ones.

๐Ÿ› ๏ธ
๐Ÿ’พ
YOLO format
Annotated Image
Masked of Annotated Image
Tomatoes Image
Annotating Tomatoes
Annotated Tomatoes using Label values
YOLO Annotation Normalization (Credit: Leandro de Oliveira)