メインコンテンツへスキップ
適切に設計されたラベルタクソノミーは、あらゆるアノテーションプロジェクトの基盤です。このページでは、オブジェクトクラスの構造化、属性の設定、一貫性が高く高品質なトレーニングデータを生成するための階層構築について説明します。

オントロジーとは

データアノテーションの文脈では、オントロジー(またはラベルタクソノミー)は、アノテーターがデータにラベルを付けるために使用するクラス、属性、関係の完全なスキーマです。以下を定義します:
  • 何をラベル付けするか(オブジェクトクラス)
  • どのように説明するか(属性とプロパティ)
  • クラス間の関係(階層とグルーピング)
明確なオントロジーは、アノテーターの混乱を減らし、アノテーター間の一致度を向上させ、モデルのためのよりクリーンなトレーニングデータを生成します。

オブジェクトクラス

オブジェクトクラスは、タクソノミーの基本的な構成要素です。各クラスは、アノテーターがデータ内で識別しラベル付けするオブジェクトのカテゴリを表します。

クラスの定義

Avala でプロジェクトを作成する際、ラベル設定をクラスのリストとして定義します:
{
  "labels": [
    { "name": "car", "color": "#FF0000" },
    { "name": "pedestrian", "color": "#00FF00" },
    { "name": "cyclist", "color": "#0000FF" },
    { "name": "truck", "color": "#FFA500" },
    { "name": "bus", "color": "#800080" }
  ]
}
各クラスには一意の名前とアノテーションエディターで使用される表示色があります。データの一般的な背景色や他のクラスと視覚的に区別しやすい色を選んでください。

クラス名のベストプラクティス

プラクティス理由
小文字で具体的な名前を使用sedan, pickup_truck曖昧さを軽減
重複する定義を避けるcarvehicle を同じレベルに置かないアノテーターの混乱を防止
区切り文字を統一traffic_lighttraffic-lighttrafficLight ではなく)トレーニングパイプラインでの一貫した解析
必要な場合のみネガティブ/背景クラスを含めるunknown, ignore_region一部のモデルは明示的な背景ラベルを必要とします

属性

属性は、オブジェクトクラス以外の構造化されたメタデータを各アノテーションに追加します。可視性、ポーズ、状態などのプロパティをアノテーターが記述できるようにします。

属性タイプ

Avala は、任意のオブジェクトクラスに付加できるいくつかの属性タイプをサポートしています:
タイプ説明使用場面
ドロップダウン事前定義リストからの単一選択相互排他的なオプションオクルージョン: none, partial, heavy
チェックボックスブーリアントグルシンプルな yes/no フラグis_parked: true/false
テキスト自由形式の文字列入力一意の識別子や説明ナンバープレート番号
数値数値測定値やカウント推定距離(メートル)
マルチセレクトリストからの複数選択同時発生する非排他的な状態可視: headlights, taillights, turn_signal
属性タイプの比較

属性の設定

属性は、プロジェクトの分類設定でラベル設定と共に定義されます:
{
  "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"]
      }
    ]
  }
}

条件付き属性

applies_to フィールドを使用して、関連するクラスにのみ属性を表示します。これにより、アノテーターのインターフェースがすっきりします — pedestrian には is_parked 属性は不要で、traffic_light には truncation は不要です。
モデルのトレーニングパイプラインが依存するプロパティには、属性を required として設定してください。有用だが重要ではない補足メタデータには、オプション属性のままにしてください。

階層的タクソノミー

複雑なドメインでは、フラットなクラスリストは扱いにくくなります。階層的タクソノミーは、関連するクラスを親カテゴリの下にグループ化します。

例:車両タクソノミー

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

階層を使用するタイミング

シナリオ推奨
15クラス未満フラットリストの方がシンプルで高速
15〜50クラス3〜5のトップレベルカテゴリにグループ化
50クラス以上検索機能付きのマルチレベル階層を使用
クラスが属性を共有属性が継承されるよう親の下にグループ化

階層の設計

  1. 広くから始めて、次に細分化する。 トップレベルカテゴリ(vehiclepedestrianinfrastructure)から始め、モデルが必要とする場合にのみ具体性を追加します。
  2. すべてのリーフクラスは曖昧でないこと。 アノテーターが2つのサブクラスを確実に区別できない場合は、統合してください。
  3. 深さと幅のバランスを取る。 深い階層(4レベル以上)はアノテーターの作業を遅くします。2〜3レベルの広いツリーを推奨します。

シングルラベル vs マルチラベル分類

Avala は、プロジェクトのニーズに応じて両方の分類モードをサポートしています。

シングルラベル

各オブジェクトまたはシーンは正確に 1つのクラスラベルを受け取ります。これはほとんどのアノテーションタイプのデフォルトです。
  • 物体検出:各バウンディングボックスに 1つのクラス
  • シーン分類:各画像に 1つのカテゴリ

マルチラベル

オブジェクトまたはシーンは同時に複数のラベルを受け取ることができます。カテゴリが相互排他的でない場合に使用します。
  • 画像は rainynighttime の両方になれます
  • 車両は damagedparked の両方になれます
プロジェクトの分類設定でタスクレベルの分類タイプを設定してマルチラベル分類を設定します:
{
  "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"] }
    ]
  }
}

オントロジー設計チェックリスト

アノテーションプロジェクトを開始する前に、このチェックリストでオントロジーを検証してください:
確認項目質問
完全性モデルが検出する必要があるすべてのオブジェクトにクラスがありますか?
相互排他性アノテーターは曖昧さなく常に正確に 1つのクラスを割り当てることができますか?
属性カバレッジトレーニングに必要なすべてのプロパティが属性としてキャプチャされていますか?
一貫した粒度同じレベルのクラスは同程度の具体性ですか?
アノテーターの明確性新しいアノテーターは名前だけから各クラスを理解できますか?
モデルとの整合性タクソノミーはモデルアーキテクチャが期待するものと一致していますか?
拡張性再構築せずに後から新しいクラスを追加できますか?

よくある落とし穴

クラスの過度な細分化

細かすぎるクラスを多く作成すると、アノテーター間の一致度が低下し、クラスあたりのトレーニングデータが少なくなります。 問題: 50種類の車両サブクラスがあり、ほとんどが各 100 サンプル未満。 解決策: 5〜10の広いクラスから始めてください。十分なデータがあり、モデルがその区別から恩恵を受ける場合にのみサブクラスを追加してください。

曖昧な境界

2つのクラスが概念的に重複すると、アノテーターはどちらを使うかで意見が分かれます。 問題: vanminivan の両方が存在するが、アノテーターが確実に区別できない。 解決策: 単一のクラスに統合するか、境界を示す参照画像付きの明確な視覚的ガイドラインを提供してください。

エッジケースの欠落

実世界のデータには、タクソノミーにきれいに収まらないオブジェクトが含まれます。 問題: アノテーターがゴルフカートに遭遇するが、タクソノミーには cartruckmotorcycle しかない。 解決策: other_vehicle のようなキャッチオールクラスを含め、それでラベル付けされたアイテムを定期的にレビューして、追加が必要なクラスを特定してください。

次のステップ

基本コンセプト

Avala プラットフォームの基本的な構成要素を確認できます。

品質管理

アノテーション品質を検証するためのレビューワークフローを設定できます。

アノテーションタイプ

バウンディングボックス、ポリゴン、キュボイドなどの JSON フォーマットを確認できます。

最初のデータセット

データをアップロードして最初のアノテーションプロジェクトを作成できます。