An image annotation tool to label images for bounding box object detection and segmentation.
Open a folder which includes images.
Click the right arrow or left arrow button to change the image.
To adjust the contrast of the image, click the contrast button on the upper right corner.
Drag on the image to draw a box.
When you finished dragging, the label dialog would open.
The label would be added to the label table on the right.
Drag the center of the box to move the box.
Drag one of the four corner points to transform the box.
To change the color of the box, click the color picker on the upper right corner.
Click to add points.
Press enter key to finish drawing.
Press escape key to cancel drawing.
The number of points has to be greater equal than 3.
When you right click on the point, edit menu would open.
"Add a point forward" and "Add a point backward" to add a point.
"Delete this point" to delete the point.
"Point size up" and "Point size down" to change the size of points.
When you right click on the polygon, edit menu would open.
"To cubic bezier" and "To polygon" toggle the polygon type.
Drag the box or the image to move its position.
For the image, mouse wheel can be used, too.
When you click on the box or the label, four corner points would open.
Drag one of the four corner points to transform the box.
When you right click on the box or the label, edit menu would open.
"Focus" to quick zoom to the existing box.
"Edit" opens the label dialog, "Duplicate" to duplicate the box, and "Delete" to delete the box.
When you double click on the box or the label, the label dialog would open.
To change the layer order of the box, drag the label in the label table upward or downward.
Drag up or down to rotate the box.
Click a position to zoom in or zoom out.
Slide two fingers up or down to scroll the image.
Double-tap with two fingers to zoom in and out.
Pinch with two fingers to zoom in or out.
Swipe left or right with three fingers to show the previous or next image.
To use Swipe, you have to change the System Preferences on your mac.
For "Swipe between pages", select "Swipe with two or three fingers" or "Swipe with three fingers".
For "Swipe between full-screen apps", select "Swipe left or right with four fingers".
We create "annotations" folder in the folder you opened.
The label file is saved as "image_file_name.xml".
When you want to label "sneakers",
which uses 3 attributes "color", "brand", and "side".
The label "sneakers-yellow-converse-right" is a combination of the object and attributes.
"-" is used as a separator so that "-" in the attribute name would be converted to "_".
To change the name on the items table, click or press the enter key on the selected item.
Customize the hotkeys to make your labeling work faster.
Here is the default hotkeys.
|Jump to Image Index||⌘J|
|Load Prev Image's Labels||⌘I|
|Set Image Index to load Labels||⇧⌘I|
|Create cubic bezier||⇧⌘B|
|Hide other boxes||⌘B|
|Skip label dialog when create||⌘K|
|Clear label history||⇧⌘0|
|Clear search images||⇧⌘O|
Press the shortcut key "command + I" to load the previous image's labels.
If you want to load the 1st image's labels on the 3rd image, press the shortcut key "shift + command + I" on the 1st image and press the shortcut key "command + I" on the 3rd image.
From File menu, you can export the current settings file and import to another computer.
We had the original JSON format before. You can convert those JSON files to the XML files.
With the code below, you can convert boxes to the sframe file for Turi Create of Apple.
This is useful when you want to edit specific label files based on some hints.
Here is an example of the CSV format.
image,text 26157415-386396491811054-4332315807620005888-n.jpg,stripes 2 26863805-1893959310636648-3775075699686113280-n.jpg,stiletto 3 ...
When you open the folder, we read all xml files in the folder at first and then start indexing them in an asynchronous way.
When you edit some label files, we track which label file was edited.
At the next indexing, we reload the edited label files.
With the empty search text, you can search images not labeled yet.
To clear the search result, use "Clear search images".
If the number of search result is zero, we do nothing.
We are using Search Kit which is Apple's content indexing and searching solution.
You can use Wildcard, AND, OR, NOT, and more in the search text.
"Auto Save" to skip the confirm dialog when you change the image.
"Skip Label Dialog When Create" to skip the label dialog when you create a box.
"Use 1-click buttons" shows 1-click buttons on the label dialog using the label history.
"Close dialog when select a object" to skip clicking the OK button.
"Maintain zoom when change the image" to maintain zoom when you change the image.
"Allow outside the image" to move the box outside the image.
"Fix the image position" not to move the image position with dragging and mouse wheel.
"Use truncated, occluded and difficult" shows those parameters on the label dialog.
"Use aspect ratio when draw boxes" shows the aspect ratio on the objects tab.
"Hide arrow buttons" to hide arrow buttons on the image.
"Hide label name on the image" to hide the current label of the label history on the image.
"Annotator" is saved in the xml file.
The label file is saved in the PASCAL VOC format.
The top-left pixel in the image has coordinates (1, 1).
The rotated box is saved in the format as (center_x, center_y, width, height, rotation).
The rotation is ranged between 0 and 2Pi.
Here is an example of the PASCAL VOC format.
<annotation> <folder>_image_fashion</folder> <filename>brooke-cagle-195860.jpg</filename> <size> <width>3404</width> <height>5106</height> <depth>3</depth> </size> <segmented>0</segmented> <object> <name>face-x_45</name> <pose>Unspecified</pose> <truncated>0</truncated> <occluded>0</occluded> <difficult>0</difficult> <bndbox> <xmin>1975</xmin> <ymin>1793</ymin> <xmax>2443</xmax> <ymax>2241</ymax> </bndbox> </object> <object> <name>sunglasses</name> <pose>Unspecified</pose> <truncated>0</truncated> <occluded>0</occluded> <difficult>0</difficult> <rotated_box> <cx>2235</cx> <cy>1936</cy> <width>474</width> <height>170</height> <rot>5.826429</rot> </rotated_box> </object> <object> <name>buckle</name> <pose>Unspecified</pose> <truncated>0</truncated> <occluded>0</occluded> <difficult>0</difficult> <polygon> <x1>1860</x1> <y1>3712</y1> <x2>2010</x2> <y2>3711</y2> <x3>2021</x3> <y3>3799</y3> <x4>1867</x4> <y4>3803</y4> </polygon> </object> <object> <name>button</name> <pose>Unspecified</pose> <truncated>0</truncated> <occluded>0</occluded> <difficult>0</difficult> <cubic_bezier> <x1>1926</x1> <y1>3783</y1> <x1_c1>1916</x1_c1> <y1_c1>3776</y1_c1> <x1_c2>1935</x1_c2> <y1_c2>3790</y1_c2> <x2>1920</x2> <y2>3748</y2> <x2_c1>1928</x2_c1> <y2_c1>3737</y2_c1> <x2_c2>1911</x2_c2> <y2_c2>3758</y2_c2> <x3>1959</x3> <y3>3740</y3> <x3_c1>1968</x3_c1> <y3_c1>3747</y3_c1> <x3_c2>1949</x3_c2> <y3_c2>3733</y3_c2> <x4>1959</x4> <y4>3776</y4> <x4_c1>1950</x4_c1> <y4_c1>3786</y4_c1> <x4_c2>1967</x4_c2> <y4_c2>3765</y4_c2> </cubic_bezier> </object> </annotation>
Send an email to firstname.lastname@example.org