> ## Documentation Index
> Fetch the complete documentation index at: https://avala.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Taxonomie d'étiquettes et ontologie

> Concevez des taxonomies d'étiquettes efficaces avec des classes, attributs et hiérarchies

Une taxonomie d'étiquettes bien conçue est le fondement de tout projet d'annotation. Cette page explique comment structurer vos classes d'objets, configurer les attributs et construire des hiérarchies qui produisent des données d'entraînement cohérentes et de haute qualité.

## Qu'est-ce qu'une ontologie ?

Dans le contexte de l'annotation de données, une **ontologie** (ou taxonomie d'étiquettes) est le schéma complet de classes, attributs et relations que les annotateurs utilisent pour étiqueter les données. Elle définit :

* **Quels** objets étiqueter (classes d'objets)
* **Comment** les décrire (attributs et propriétés)
* **Comment** les classes sont liées entre elles (hiérarchie et regroupement)

Une ontologie claire réduit la confusion des annotateurs, améliore l'accord inter-annotateurs et produit des données d'entraînement plus propres pour vos modèles.

## Classes d'objets

Les classes d'objets sont les éléments de base de votre taxonomie. Chaque classe représente une catégorie d'objet que les annotateurs identifieront et étiquetteront dans les données.

### Définir les classes

Lors de la création d'un projet dans Avala, vous définissez votre configuration d'étiquettes comme une liste de classes :

```json theme={null}
{
  "labels": [
    { "name": "car", "color": "#FF0000" },
    { "name": "pedestrian", "color": "#00FF00" },
    { "name": "cyclist", "color": "#0000FF" },
    { "name": "truck", "color": "#FFA500" },
    { "name": "bus", "color": "#800080" }
  ]
}
```

Chaque classe a un nom unique et une couleur d'affichage utilisée dans l'éditeur d'annotation. Choisissez des couleurs visuellement distinctes les unes des autres et des couleurs d'arrière-plan courantes dans vos données.

### Bonnes pratiques de nommage des classes

| Pratique                                                         | Exemple                                                  | Pourquoi                                                              |
| ---------------------------------------------------------------- | -------------------------------------------------------- | --------------------------------------------------------------------- |
| Utilisez des noms en minuscules et spécifiques                   | `sedan`, `pickup_truck`                                  | Réduit l'ambiguïté                                                    |
| Évitez les définitions qui se chevauchent                        | N'ayez pas à la fois `car` et `vehicle` au même niveau   | Évite la confusion des annotateurs                                    |
| Soyez cohérent avec les séparateurs                              | `traffic_light` et non `traffic-light` ou `trafficLight` | Analyse cohérente dans les pipelines d'entraînement                   |
| N'incluez des classes négatives/d'arrière-plan que si nécessaire | `unknown`, `ignore_region`                               | Certains modèles nécessitent des étiquettes d'arrière-plan explicites |

## Attributs

Les attributs ajoutent des métadonnées structurées à chaque annotation au-delà de la classe d'objet. Ils permettent aux annotateurs de décrire des propriétés comme la visibilité, la pose ou l'état.

### Types d'attributs

Avala supporte plusieurs types d'attributs que vous pouvez attacher à n'importe quelle classe d'objet :

| Type                   | Description                                | Quand l'utiliser                     | Exemple                                             |
| ---------------------- | ------------------------------------------ | ------------------------------------ | --------------------------------------------------- |
| **Liste déroulante**   | Sélection unique dans une liste prédéfinie | Options mutuellement exclusives      | Occlusion : `none`, `partial`, `heavy`              |
| **Case à cocher**      | Bascule booléenne                          | Indicateurs simples oui/non          | `is_parked: true/false`                             |
| **Texte**              | Saisie de texte libre                      | Identifiants ou descriptions uniques | Numéro de plaque d'immatriculation                  |
| **Nombre**             | Valeur numérique                           | Mesures ou comptages                 | Distance estimée en mètres                          |
| **Sélection multiple** | Sélections multiples dans une liste        | États concurrents non exclusifs      | Visible : `headlights`, `taillights`, `turn_signal` |

<img src="https://mintcdn.com/avala/QI4wcFsXqwG8KGbR/images/reference/attribute-types-comparison-light.svg?fit=max&auto=format&n=QI4wcFsXqwG8KGbR&q=85&s=866d0c1d56119fc7d7f88e48e751d2aa" alt="Comparaison des types d'attributs" className="block dark:hidden w-full" width="400" height="150" data-path="images/reference/attribute-types-comparison-light.svg" />

<img src="https://mintcdn.com/avala/QI4wcFsXqwG8KGbR/images/reference/attribute-types-comparison.svg?fit=max&auto=format&n=QI4wcFsXqwG8KGbR&q=85&s=4f02fa3d4a69dc7282f63ae245d406f0" alt="Comparaison des types d'attributs" className="hidden dark:block w-full" width="400" height="150" data-path="images/reference/attribute-types-comparison.svg" />

### Configurer les attributs

Les attributs sont définis dans la configuration de classification du projet aux côtés de la configuration des étiquettes :

```json theme={null}
{
  "labels": [
    { "name": "car", "color": "#FF0000" }
  ],
  "classification": {
    "attributes": [
      {
        "name": "occlusion",
        "type": "dropdown",
        "options": ["none", "partial", "heavy"],
        "required": true,
        "applies_to": ["car", "pedestrian", "cyclist"]
      },
      {
        "name": "is_parked",
        "type": "checkbox",
        "required": false,
        "applies_to": ["car", "truck", "bus"]
      },
      {
        "name": "truncation",
        "type": "dropdown",
        "options": ["none", "partial", "heavy"],
        "required": true,
        "applies_to": ["car", "pedestrian", "cyclist"]
      }
    ]
  }
}
```

### Attributs conditionnels

Utilisez le champ `applies_to` pour afficher les attributs uniquement pour les classes pertinentes. Cela garde l'interface de l'annotateur propre — un `pedestrian` n'a pas besoin d'un attribut `is_parked`, et un `traffic_light` n'a pas besoin de `truncation`.

<Tip>
  Marquez les attributs comme `required` pour les propriétés dont votre pipeline d'entraînement de modèle dépend. Laissez les attributs optionnels pour les métadonnées supplémentaires utiles mais non critiques.
</Tip>

## Taxonomies hiérarchiques

Pour les domaines complexes, les listes de classes plates deviennent difficiles à gérer. Les taxonomies hiérarchiques regroupent les classes liées sous des catégories parentes.

### Exemple : taxonomie de véhicules

```
Vehicle
├── Car
│   ├── Sedan
│   ├── SUV
│   └── Hatchback
├── Truck
│   ├── Pickup
│   └── Semi
├── Bus
│   ├── City Bus
│   └── School Bus
└── Motorcycle
```

### Quand utiliser les hiérarchies

| Scénario                            | Recommandation                                                 |
| ----------------------------------- | -------------------------------------------------------------- |
| Moins de 15 classes                 | Une liste plate est plus simple et rapide                      |
| 15-50 classes                       | Regroupez en 3-5 catégories de premier niveau                  |
| Plus de 50 classes                  | Utilisez une hiérarchie multi-niveaux avec recherche           |
| Les classes partagent des attributs | Regroupez sous un parent pour que les attributs soient hérités |

### Concevoir les hiérarchies

1. **Commencez large, puis affinez.** Débutez avec des catégories de premier niveau (`vehicle`, `pedestrian`, `infrastructure`) et ajoutez de la spécificité uniquement là où votre modèle en a besoin.
2. **Chaque classe feuille doit être non ambiguë.** Si les annotateurs ne peuvent pas distinguer de manière fiable deux sous-classes, fusionnez-les.
3. **Équilibrez profondeur et largeur.** Les hiérarchies profondes (4+ niveaux) ralentissent les annotateurs. Préférez des arbres plus larges avec 2-3 niveaux.

## Classification mono-étiquette vs multi-étiquette

Avala supporte les deux modes de classification selon les besoins de votre projet.

### Mono-étiquette

Chaque objet ou scène reçoit exactement une étiquette de classe. C'est le mode par défaut pour la plupart des types d'annotation.

* Détection d'objets : chaque boîte englobante reçoit une classe
* Classification de scène : chaque image reçoit une catégorie

### Multi-étiquette

Un objet ou une scène peut recevoir plusieurs étiquettes simultanément. Utilisez ceci lorsque les catégories ne sont pas mutuellement exclusives.

* Une image peut être à la fois `rainy` et `nighttime`
* Un véhicule peut être à la fois `damaged` et `parked`

Configurez la classification multi-étiquette dans la configuration de classification de votre projet en définissant le type de classification au niveau de la tâche :

```json theme={null}
{
  "classification": {
    "type": "multi-label",
    "categories": [
      { "name": "weather", "options": ["clear", "rainy", "foggy", "snowy"] },
      { "name": "time_of_day", "options": ["daytime", "nighttime", "dawn", "dusk"] },
      { "name": "road_condition", "options": ["dry", "wet", "icy"] }
    ]
  }
}
```

## Liste de vérification de conception d'ontologie

Avant de démarrer votre projet d'annotation, vérifiez votre ontologie par rapport à cette liste :

| Vérification                  | Question                                                                                  |
| ----------------------------- | ----------------------------------------------------------------------------------------- |
| **Complétude**                | Chaque objet que votre modèle doit détecter a-t-il une classe ?                           |
| **Exclusivité mutuelle**      | Un annotateur peut-il toujours assigner exactement une classe sans ambiguïté ?            |
| **Couverture des attributs**  | Toutes les propriétés nécessaires à l'entraînement sont-elles capturées comme attributs ? |
| **Granularité cohérente**     | Les classes au même niveau sont-elles également spécifiques ?                             |
| **Clarté pour l'annotateur**  | Un nouvel annotateur peut-il comprendre chaque classe uniquement par son nom ?            |
| **Alignement avec le modèle** | La taxonomie correspond-elle à ce que l'architecture de votre modèle attend ?             |
| **Évolutivité**               | Pouvez-vous ajouter de nouvelles classes plus tard sans restructurer ?                    |

## Pièges courants

### Sur-spécification des classes

Créer trop de classes finement détaillées conduit à un faible accord inter-annotateurs et à des données d'entraînement clairsemées par classe.

**Problème :** 50 sous-classes de véhicules où la plupart ont moins de 100 exemples chacune.

**Solution :** Commencez avec 5-10 classes larges. Ajoutez des sous-classes uniquement lorsque vous avez suffisamment de données et que votre modèle bénéficie de la distinction.

### Limites ambiguës

Lorsque deux classes se chevauchent conceptuellement, les annotateurs ne s'accorderont pas sur laquelle utiliser.

**Problème :** `van` et `minivan` existent tous les deux, mais les annotateurs ne peuvent pas les distinguer de manière fiable.

**Solution :** Fusionnez-les en une seule classe ou fournissez des directives visuelles explicites avec des images de référence montrant la frontière.

### Cas limites manquants

Les données du monde réel contiennent des objets qui ne rentrent pas proprement dans votre taxonomie.

**Problème :** Un annotateur rencontre une voiturette de golf mais la taxonomie n'a que `car`, `truck` et `motorcycle`.

**Solution :** Incluez une classe fourre-tout comme `other_vehicle` et révisez périodiquement les éléments étiquetés avec celle-ci pour identifier les classes à ajouter.

## Prochaines étapes

<CardGroup cols={2}>
  <Card title="Concepts fondamentaux" icon="book" href="/docs/fr/getting-started/concepts">
    Revoyez les éléments de base de la plateforme Avala.
  </Card>

  <Card title="Contrôle qualité" icon="shield-check" href="/docs/annotation/guides/quality-control">
    Configurez des flux de révision pour valider la qualité des annotations.
  </Card>

  <Card title="Types d'annotation" icon="pen-to-square" href="/docs/annotation/reference/annotation-types">
    Consultez les formats JSON pour les boîtes englobantes, polygones, cuboïdes et plus.
  </Card>

  <Card title="Premier jeu de données" icon="rocket" href="/docs/annotation/tutorials/first-dataset">
    Téléchargez des données et créez votre premier projet d'annotation.
  </Card>
</CardGroup>
