What are Attributes in Deep Learning?

Anthony Sarkis

Exploring more complex forms of annotation.

In supervised Deep Learning a starting point is a single label, such as “Vehicle”.

However, real world input normally has more detail to it. For example this white vehicle is blocked (or Occluded) by the red vehicle. The light blue vehicle in the bottom right is out of the frame so it’s considered, Truncated.

Image from public domain.

We may wish to further specify a percentage, for example we may say the white vehicle is 41–60% occluded. The Blue vehicle appears to be 81–100% truncated.

Attributes can also cover other concepts, for example common in self driving:

For more examples nu scences has a good guide.

How do we actually create these templates for our own projects?

In Diffgram here’s our approach.

1. Create a new group

Groups are reusable. This saves a lot of work, if you have say 10 labels that all share similar Attributes!

2. Name your group and make a prompt

The Prompt is the text shown to Annotators.

3. Create Attributes

This is the template for the the values that will be linked to the instances during selection. Like a form builder, where we lay out the questions, and allow each response to be different.

4. Attach label(s) to an Attribute Group

  1. Select an Instance by clicking on it

Not selected:

Selected:

2. Select the attribute value

3. Save it

  • When the file is saved it saves all instances. If you are using the normal complete and save flow, then saving is handled as part of that and no further action is needed.

Exported attributes are available in the instance_list , for every instance under the key attribute_groups

attribute_groups is a dictionary where the key is the id of the group and the value is the value for the template.

For example:

"instance_list": [
{
"type": "box",
...
"attribute_groups": {
8: {
"name": "the template option that was selected",
"archived": false,
"display_order": null,
"id": 15,
"kind": "select",
"value_type": null
}
}
},
{
... another instance
}
...
]

Note: If there are no attributes for an instance the value of attribute_groups will be null.

Each export has a single key attribute_groups_reference which has information on the groups, for example:

"attribute_groups_reference": [
{
"id": 8,
"is_root": true,
"name": "test_group_name",
"prompt": "a prompt written is a prompt earned",
}
]

Thanks for reading!