Annotator Guide

This guide explains step by step, how to annotate images using the built-in annotation app. We will use an example image from Lenna for this tutorial. The annotator app is agnostic to images and can load anything that is supported by bob.io.image.

Image annotation

The application is launched via command-line, which means you need a command prompt, pre-configured with the conda environment containing this package. Open such prompt (e.g. via a Terminal application) and pass the root path containing the image you would like to annotate:

$ conda activate myenv
(myenv) $ bob annotate -vv /path/to/images /path/to/annotations

The output path, marked on the above example with /path/to/annotations is the directory where annotated points will be written to. This path is created if it does not exist. If it does exist, annotations are preloaded for each image inside /path/to/images if they exist and annotation is resumed from the point it was stopped.

The app will scan for image files with a given extension name (.png by default) on the input path provided (e.g.: /path/to/images). Images will then be sorted and displayed in alphabetical order, one after the other so you can annotate or review their annotation. Annotations are saved to the output directory copying the same folder structure found on the input path. For example, if the images were lying like this on the input path:

/path/to/images/subfolder1/image.png
/path/to/images/subfolder2/image.png
/path/to/images/subfolder3/subfolder/image.png

Then, the output path will contain the following files, after the user annotated all images:

/path/to/annotations/subfolder1/image.json
/path/to/annotations/subfolder2/image.json
/path/to/annotations/subfolder3/subfolder/image.json

Annotation format

Annotations are saved in JSON format, which is easily readable and loadable in a variety of programming environments. The specific format used by the annotator application may change, but it essentially just lists annotated points, in the order objects are created.

Zoom

You may alternatively control the size of the image being annotated by passing a zoom parameter (floating point number within the range ]0,+inf[). A zoom of 1.0 (the default), displays images as they are. A zoom larger than 1.0 upscales the input image making it look bigger than they originally are. A zoom factor smaller than 1.0 does the inverse, scaling down the input image. Annotations recorded on the image are independent of the zoom factor and compensated upon saving operations. To change the zoom factor, use the --zoom parameter of the annotator app, while starting the application. For example, to start the application with a zoom factor of 2.0 do:

(myenv) $ bob annotate -vv --zoom=2.0 /path/to/images /path/to/annotations

Tip

You should try to use a zoom factor which is the largest possible given your screen resolution. The image should fit comfortably on the screen without resizing the drawing window. The higher the zoom factor, the more precise will be your annotation. Conversely, the lower, the less precise.

The application supports automatic resizing of the canvas to fill all the available application area, without distorting the image or the annotations. Use this feature to select the largest possible annotation area (typically by fully maximizing the annotation window), which will give you the best possible precision.

Further help

Use the flag --help to list all options and examples from the annotation app:

(myenv) $ bob annotate --help

Read the annotator application help message, which lists all known keyboard and pointer/mouse bindings. Familiarise yourself with these shortcuts as that improves annotation performance, reducing the time you spend annotating images. You can check the contents of the help dialog through this documentation, looking at the docstring of the bob.ip.annotator.gui module.