Classes and attributes

Label classes and attributes

Here you can create and edit label classes and attributes that will be used in your project.

Label classes

Label classes are the different types of objects and regions you want to annotate.
Every label class needs a type, a name, and a color. Requirements on attributes depend on what type of attribute you use.
Don't give a label class the same color as the object you want to label. For example, if you are labeling bananas, it is not ideal if the banana label class color is yellow as it makes it harder to see the object underneath the annotation.

When to use object and when to use semantic classes

Something that's unique in Hasty is that we require you to sort your classes into object and semantic classes.
The reason for this distinction is to allow panoptic segmentation while allowing users to control which assistant a specific class should be used to train. For those with some computer vision experience, it might suffice to say that object classes are used to train our object detection and instance segmentation assistants. Semantic classes are used to train our semantic segmentation assistant.
For those newer to the field, you can think about it in the following manner:
    In "object" classes, you can put any objects where you want to know how many of a certain object or instance there is - like apple, orange above.
    In "Semantic" classes, you can put background regions that don't necessarily have uniform shapes - like a tray, plate.
In some cases, when doing semantic segmentation of an image, you might want to add classes like apple, orange, peach as semantic classes.

Creating a new label class

You can create a new label class by specifying a type of label class, picking a color, and then write a name for the new class. When you are done, press "enter" to create the new class.

Attributes

An attribute is an additional layer of information that you can add to your annotations - allowing you not only to detail what class something is, but also add a range of different metadata.
For example, attributes can be used to capture what particular style and color a fashion garment is, or annotate the age and gender of an animal.
Here's an example of attributes from an animal identification project

Creating an attribute

You can create a new attribute by clicking "Create new". This will open the following modal:
Here, you can give the attribute a name and description. Then, you pick a type. There are 6 types to choose from. These are:
    String
    Boolean
    Number
    Integer
    Single Choice
    Multiple Choice
These types control what type of input the annotator will be shown in the UI.
Example of types of inputs users will see when annotating
For Single and Multiple choice attributes, you also have to add values the annotator should pick from.
You do so by filling in the name of the value in the "Attribute values" input, and then press "enter".
Here we are creating a fourth option for annotators to choose from
The values that you put in as attribute values will then be shown to annotators in the annotation environment - like here:

Assigning attributes to classes

You might not want to have all attributes being shown for every class. As an example, imagine you want to label different types of drinks. You might want to have some attributes for alcoholic drinks that are not needed for non-alcoholic drinks (alcohol percentage, age limit for buying etc). Because of that, we require you to match classes with relevant attributes. This can be done in two ways - you can either select which classes should be affected by the attribute here:
...or you can set which attributes apply to an attribute by editing the class, like we do here:
Then, when an annotator selects an object with a given class, all matched attributes will be shown in the right menu.

Editing attributes

You can edit an existing attribute by clicking on it while being in this view. When doing so, you will be able to change the name and description of the attribute, as well as change the type and assigned class of the attribute.
If you remove an assigned class by mistake, don't worry. By reconnecting the class and the attribute, we will automatically re-add the data for every annotation made with that combination.
We also have a fail-safe in place to prevent users are trying to remove a value for an attribute when it's already in use for one or more annotations.

Deleting Label attributes

Sometimes, rather than editing attributes values, the users might want to delete the attribute. In this case, there are some points the user should keep in mind. It is not enough to delete the attributes allocated to masks to remove an attribute that has already been applied during annotation. For example, we want to delete the attribute "color" and try removing it. We will get the following error:
To solve this error, we just have to make sure to clear links to the assigned classes by opening the edit card of attributes.
Once the assigned classes are removed, the attributes can be easily deleted.

Giving guidance to annotators

Attribute descriptions are shown to users in the annotation environment when they hover over the question mark like here:
These descriptions can sometimes be good to add to provide some additional information for the annotator on how something should be labeled.
Last modified 1mo ago