Ontology Overview
  • 20 Nov 2024
  • Dark
    Light
  • PDF

Ontology Overview

  • Dark
    Light
  • PDF

Article summary

Overview

In Dataloop, an ontology serves as a structured framework that defines the labels and attributes used for data annotation within a project. It is a fundamental component of a recipe, which encompasses the ontology alongside work instructions, annotation tools, and settings. This structure ensures consistency and clarity in the annotation process, facilitating effective machine learning model training.

Dataloops' taxonomy is based on 2 main entities - Recipe and Ontology.

Recipe – Recipe is a container for work instructions, and includes a single Ontology entity, and work instructions as a collection of:

  • Annotation tools - mapped to labels from the Ontology
  • Annotation settings
  • PDF instructions file

The recipe is used when creating a Task (annotation task or QA) - the task binds the Recipe (labels, attributes, instructions) with the data and the team to work.

Ontology - Contains the labels (classes) and attributes used in the project. The dataset ontology is the building block of a model and helps define the information applied to data to represent the knowledge models that are then trained to inference.

  • Labels (like classes) are the names used for classifying annotations.
  • Attributes allow additional independent degrees of freedom to define labels.

Taxonomy Features

  • Create, manage, and clone recipes
  • Change the default recipe of a dataset (switch recipe)
  • Add hierarchical labels
  • Set label color
  • Import labels from the TXT file
  • Create attributes
    • Section ID identifies attributes when using the SDK
    • Supports different types of attributes
      • Multi-select (check-box)
      • Single-select (radio button)
      • Free-text
      • Scale/range
      • Yes/No
  • Import/Export Ontology

Recipe

Developers Guide

To learn how to work with recipes via SDK, read here.

  • By default, every Dataset is linked with a single Recipe.
  • When creating a new Dataset, users can select to link it with a new Recipe carrying the same name as the Dataset or link it with an existing one.
  • Annotation and QA tasks are linked with a recipe as the work instructions. By default, the recipe is set to be the one linked with the Dataset from which data in the task is taken. However, the recipe can be changed when creating/editing a task, therefore a single item can be worked in multiple tasks, each with a different taxonomy.

Recipe Page

To open the recipe page for a specific Dataset, use one of the following options:

  • In the project dashboard's dataset table, click the Recipe icon for the selected Dataset.
  • From the left-side menu
    • Click on the Ontology.
    • Locate/search for the recipe from the list.
    • Click on Open recipe.
  • From an annotation studio, click the Recipe icon in the Item-Info tab, or the 'Recipe' link above the label-picker section.

Recipe Actions

The Recipes pages enable performing several actions on recipes.

  • Clone - Version a recipe by creating clones and working on different versions of it.
  • Delete - Delete a recipe.

Deleting a recipe from a dataset that has been set as the recipe for other datasets too (switched recipe) will be deleted from all linked datasets.

Switch Recipe

To change the recipe linked from one dataset to another:

  1. Click on the 3-dots action button of a dataset entry (from either the project overview or the Datasets page)
  2. Select Switch Recipe
  3. Select a different recipe from the list and approve.

Ontology

Ontologies contain the labels and attributes of a recipe. They do not have representation outside a specific recipe, and currently reusing an ontology on different recipes requires exporting them from one and importing them into another.

Ontology Actions

Updating the Ontology with a Label Thumbnail Using the SDK

The following code snippets demonstrate how to add a new label with a thumbnail and how to update an existing label to include thumbnail display data using the Dataloop SDK.

Adding a Label with a Thumbnail

import dtlpy as dl
dataset = dl.datasets.get(dataset_id="65f82c9fc26fd1bc97ea9915")
ontology = dataset.ontologies.list()[0]
ontology.add_label(label_name='dog', color=(34, 6, 231), icon_path=r"C:\Datasets\Dogs\dog.webp")

Updating an Existing Label with a Thumbnail

import dtlpy as dl
dataset = dl.datasets.get(dataset_id="65f82c9fc26fd1bc97ea9915")
ontology = dataset.ontologies.list()[0]
# Add label if not already existing
ontology.add_label(label_name='dog', color=(34, 6, 231), icon_path=r"C:\Datasets\Dogs\dog.webp")
# Create a label object with display data
label = dl.Label(tag='dog',
                 display_label='dog',
                 display_data={'displayImage': {'itemId': '65fa86e310864a269c607064',
                                                'datasetId': "65f82c9fc26fd1bc97ea9915"}})
# Update the label in the ontology
ontology.update_labels(label_list=[label], update_ontology=True)

Import/Export Ontology

To Export or Import an ontology as a JSON file:

  1. Open the respective recipe.
  2. From the bottom right side, select the respective option to either export the ontology or import one.

Import Labels

To import labels/attributes from the platforms' interface:

  1. Imported labels should be in a TXT file, following these guidelines:
    1. Every label in a new line.
    2. Labels hierarchy is by separating them with ".". For example, "Car.Type.SUV".
  2. Open the respective recipe.
  3. From the Labels and Attributes tab, select the import option for labels.
  4. Select a TXT file.