Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

イメージ ラベラー入門

イメージ ラベラー アプリには、ビデオやイメージ シーケンス内で四角形の関心領域 (ROI) ラベル、ポリライン ROI ラベル、ピクセル ROI ラベル、シーン ラベルを簡単にマークできる方法が用意されています。この例では、以下の方法を示して、アプリの使用方法を紹介します。

  • イメージの集合のイメージ フレームに手動でラベルを付ける。

  • オートメーション アルゴリズムを使用して、イメージ フレーム全体に自動的にラベルを付ける。

  • ラベル付きのグラウンド トゥルース データをエクスポートする。

ROI とシーン ラベルの定義

  • "ROI ラベル" は、四角形、ポリラインまたはピクセルのいずれかの関心領域に対応します。これらのラベルには "cars" などのラベル名と作成した領域などの 2 つのコンポーネントが含まれます。

  • "シーン ラベル" は、"sunny" などのシーンの性質を表します。このラベルはフレームに関連付けることができます。

ラベル付けされていないデータの読み込み

アプリを開き、イメージの集合を読み込みます。データストアに格納されているイメージをフォルダーから読み込むか、または以前のラベラー セッションを読み込むことができます。イメージは imread によって読み取り可能でなければなりません。

imageFolder = fullfile(toolboxdir('vision'),'visiondata','stopSignImages')
imds = imageDatastore(imageFolder)
imageLabeler(imds)
imageFolder = fullfile(toolboxdir('vision'),'visiondata','stopSignImages')
imageLabeler(imageFolder)

または、[アプリ] タブの [イメージ処理とコンピューター ビジョン] からアプリを開きます。その後、[読み込み] メニューでイメージ データ ソースを読み込みます。

ラベル定義の作成

描画するラベルを定義します。この例では、アプリ内でラベルを直接定義します。代わりに MATLAB® コマンド ラインからラベルを描画するには、labelDefinitionCreator を使用します。

ROI ラベルの作成

"ROI ラベル" は、関心領域 (ROI) に対応するラベルです。これらのタイプの ROI ラベルを定義できます。

ROI ラベル説明例:運転シーン
Rectangleオブジェクトの周りに四角形の ROI ラベル (境界ボックス) を描画します。

車両、歩行者、道路標識

Line線を表す線形 ROI ラベルを描画します。ポリライン ROI を描画するには、2 つ以上の点を使用します。

車線境界線、ガード レール、縁石

Pixel labelセマンティック セグメンテーション用にピクセルにラベルを割り当てます。多角形、ブラシまたは塗りつぶしを使用してピクセルに手動でラベルを付けることができます。ピクセルのラベル付けの詳細については、セマンティック セグメンテーションのピクセルのラベル付けを参照してください。

車両、路面、木、歩道

この例では、車両の種類をラベル付けするための vehicle グループを定義してから、Car および Truck[Rectangle] ROI ラベルを作成します。オプションで、[ROI ラベルの表示] ドロップダウン メニューを使用し、[ポイント時][常時] または [なし] を選択することで、ラベル付け中に ROI ラベル名をどう表示するかを制御できます。既定では、ROI をポイントしたときに名前が表示されます。

  1. 左側の [ROI ラベル] ペインで [ラベル] をクリックします。

  2. Car という名前の [Rectangle] のラベルを作成します。

  3. オプションで、プレビューの色をクリックすることで、ラベルの色を変えられます。

  4. [グループ] ドロップダウン メニューから、[新規グループ] を選択し、グループに Vehicle という名前を付けます。

  5. [OK] をクリックします。

    [Vehicle] のグループ名は、作成されたラベル [Car] と共に [ROI ラベル] ペインに表示されます。リストのラベルを左クリックして上下にドラッグすると、リスト内の別の位置またはグループに移動できます。

  6. 2 番目のラベルを追加します。[ラベル] をクリックします。ラベルに Truck という名前を付け、[Vehicle] グループが選択されていることを確認します。[OK] をクリックします。

  7. 2 台の車両の周りに、マウスを使って四角形の [Car] ROI を描画します。

サブラベルの作成

"サブラベル" は、親 ROI ラベルに対応する ROI ラベルのタイプです。各サブラベルは、[ROI ラベル] ペインで定義された特定のラベルに属している (特定のラベルの子である) 必要があります。たとえば、運転シーンの場合、vehicle ラベルにヘッドライト、ナンバー プレート、ホイールなどのサブラベルがある可能性があります。

ヘッドライトのサブラベルを定義します。

  1. 左側の [ROI ラベル] ペインで [Car] ラベルをクリックします。

  2. [サブラベル] をクリックします。

  3. headlight という名前の [Rectangle] のサブラベルを作成し、必要に応じて説明を記述します。[OK] をクリックします。

    [ROI ラベル] ペインに [headlight] サブラベルが表示されます。サブラベルは、選択した ROI ラベル [Car] の下に入れ子にされており、親ラベルと同じ色が付けられています。

    ラベルに複数のサブラベルを追加できます。サブラベルをドラッグ アンド ドロップし、リスト内で並べ替えることもできます。さらに編集を行うにはラベルを右クリックします。

  4. [ROI ラベル] ペインで [headlight] サブラベルを選択します。

  5. イメージ フレームで、[Car] ラベルを選択します。選択するとラベルは黄色に変化します。[Car] ラベル (親 ROI) を選択してからサブラベルを追加しなければなりません。

    それぞれの乗用車の [headlight] のサブラベルを描画します。

  6. 前の手順を繰り返して、別の乗用車のヘッドライトにラベルを付けます。ラベルをより正確に描画するには、ラベル付けウィンドウの右上隅にあるパンやズームのオプションを使用します。

サブラベルは四角形 ROI ラベルまたはポリライン ROI ラベルと一緒にしか使用できません。また、サブラベルが独自のサブラベルを持つことはできません。サブラベルの使用の詳細については、サブラベルと属性を使用したグラウンド トゥルース データへのラベル付けを参照してください。

属性の作成

"属性" は、ROI ラベルやサブラベルにさらなる分類を提供します。分類は、描画可能なラベルに関する追加情報を指定します。たとえば、運転シーンの場合、属性は車両のタイプや色を含む場合があります。

これらのタイプの属性を定義できます。

属性タイプ属性定義のサンプル既定値のサンプル

Numeric Value

String

Logical

List

車両タイプの属性を追加します。

  1. 左側の [ROI ラベル] ペインで [Car] ラベルを選択し、[属性] をクリックします。

  2. [属性名] ボックスに carType と入力します。属性タイプを [List] に設定します。

  3. [リスト項目] セクションに、SedanHatchbackWagon など、さまざまな車両の種類を 1 行に 1 つ入力します。必要に応じて属性に説明を加えて、[OK] をクリックします。

  4. ビデオの最初のフレームで、[Car] ROI ラベルを選択します。[属性とサブラベル] ペインで、その車両に適切な [carType] 属性を選択します。

  5. 前の手順を繰り返して、別の車両に [carType] 属性を割り当てます。

サブラベルに属性を追加することもできます。[headlight] サブラベルに、ヘッドライトが点灯しているかどうかを示す属性を追加します。

  1. 左側の [ROI ラベル] ペインで [headlight] サブラベルを選択し、[属性] をクリックします。

  2. [属性名] ボックスに isOn と入力します。属性タイプを [Logical] に設定します。[既定値][Empty] の設定のままにしておき、必要に応じて説明を記述して、[OK] をクリックします。

  3. ビデオ フレームでヘッドライトを選択します。適切な [isOn] 属性値を設定するか、属性値を [Empty] に設定されたままにします。

  4. 前の手順を繰り返して、別の車両の [isOn] 属性を設定します。

属性を削除するには、ROI ラベルまたはサブラベルを右クリックして、削除する属性を選択します。属性を削除すると、以前に作成したすべての ROI ラベルの注釈から属性情報が削除されます。

シーン ラベルの作成

"シーン ラベル" は、シーン全体に関する追加情報を定義します。シーン ラベルは、ライティングのような条件、気象条件、または車線変更などのイベントの説明に使用します。

ビデオで使用するシーン ラベルを作成します。

  1. 左側にある [シーン ラベル] タブを選択します。

  2. [新しいシーン ラベルの定義] ボタンをクリックして、sunny という名前のシーン ラベルを作成します。[グループ]None に設定されていることを確認します。[OK] をクリックします。

    [シーン ラベル] ペインにシーン ラベルの定義が表示されます。

  3. 現在のフレームか、フレームの間隔にのみ、ラベルを適用できます。[シーン ラベル] ペインで sunny シーン ラベル定義が選択された状態で、[時間間隔] を選択します。

  4. [ラベルの追加] をクリックします。sunny シーン ラベルにチェックマークが表示され、このラベルが時間間隔内のすべてのフレームに適用されていることを示します。

  5. シーン ラベルを編集または削除するには、[ラベルの編集] または [ラベルの削除] を選択します。

グラウンド トゥルースのラベル付け

ここまでは、ビデオ内の 1 つのフレームのみにラベルを付けてきました。残りのフレームにラベルを付けるには、いかのいずれかのオプションを選択します。

グラウンド トゥルースに手動でラベルを付ける

右矢印キーをクリックして次のフレームに進む場合、前のフレームの ROI ラベルは引き継がれません。[sunny] シーン ラベルは時間間隔全体に適用したので、このラベルのみが各フレームに適用されます。

フレームを 1 つずつ進み、ラベルとサブラベルの ROI を手動で描画します。また、これらの ROI の属性情報も更新します。

オートメーション アルゴリズムを使用してグラウンド トゥルースにラベルを付ける

ラベル付け処理を高速化するために、アプリ内でオートメーション アルゴリズムを使用できます。独自のオートメーション アルゴリズムを定義する (ラベル付け用オートメーション アルゴリズムの作成および時間的オートメーション アルゴリズム参照) ことも、組み込みのオートメーション アルゴリズムを使用することもできます。この例では、組み込みの点追跡アルゴリズムを使用してグラウンド トゥルースにラベルを付けます。

この例では、[Car] ROI ラベルのラベル付けのみを自動化します。組み込みのオートメーション アルゴリズムは、サブラベルと属性の自動化はサポートしていません。

  1. 自動化するラベルを選択します。ビデオの最初のフレームで、Ctrl キーを押しながら、2 つの [Car] ラベルの注釈をクリックして選択します。ラベルは黄色で強調表示されます。

  2. アプリのツールストリップから、[アルゴリズムの選択][ポイント トラッカー] を選択します。このアルゴリズムは、Kanade-Lucas-Tomasi (KLT) アルゴリズムを使用して短い間隔における 1 つ以上の四角形 ROI を追跡します。

  3. (オプション) オートメーション設定を構成します。たとえば、選択した [Car] ラベルをオートメーション セッションにインポートできるように、[選択した ROI をインポート] が選択されていることを確認します。

  4. [自動化] をクリックして、オートメーション セッションを開きます。アルゴリズムの指示が左側のペインに表示され、選択したラベルを自動化に使用できます。

  5. [実行] をクリックして、選択した ROI をその区間で追跡します。

  6. アルゴリズムの実行結果を確認します。

    後でシーンに現れる車両にはラベルが付いていません。ラベルの付いていない車両には初期 ROI ラベルがなかったため、アルゴリズムによって追跡されませんでした。[実行を元に戻す] をクリックします。スライダーを使用して、各車両が最初に現れるフレームを探します。各車両の周りに [vehicle] ROI を描画して、再度 [実行] をクリックします。

  7. フレームを 1 つずつ進み、ROI を手動で移動、サイズ変更、削除、または追加して、オートメーション アルゴリズムの結果を改善します。

    アルゴリズムの結果に満足した場合は、[確定] をクリックします。または、セッション中に生成されたラベルを破棄して、代わりに手動でラベルを付ける場合は、[キャンセル] をクリックします。[キャンセル] ボタンでは、アプリ セッションではなく、アルゴリズム セッションがキャンセルされます。

これで、オプションでサブラベルと属性情報を使用して、残りのフレームに手動でラベルを付けられるようになりました。

ラベルをさらに評価するために、ラベル付きのグラウンド トゥルースの視覚的な概要を表示できます。アプリのツールストリップから、[ラベルの概要を表示] を選択します。この概要を使用して、フレーム、ラベルの頻度、およびシーンの状態を比較できます。詳細は、グラウンド トゥルース ラベルの概要の表示を参照してください。この概要は、サブラベルや属性をサポートしていません。

ラベル付きのグラウンド トゥルースのエクスポート

ラベル付きのグラウンド トゥルースを MAT ファイルや、MATLAB ワークスペースの変数にエクスポートできます。いずれの場合も、ラベル付きのグラウンド トゥルースは groundTruth オブジェクトとして保存されます。このオブジェクトを使用して、深層学習ベースのコンピューター ビジョン アルゴリズムを学習させることができます。詳細は、オブジェクト検出およびセマンティック セグメンテーション用の学習データを参照してください。

メモ

ピクセル データをエクスポートする場合、ピクセル ラベル データとグラウンド トゥルース データは別個のファイルに保存されますが、フォルダーは同一です。エクスポートしたピクセル ラベルを扱う場合の考慮事項については、ラベラー アプリにおけるエクスポートしたピクセル ラベルの保存方法を参照してください。

この例では、ラベル付きのグラウンド トゥルースを MATLAB ワークスペースにエクスポートします。アプリのツールストリップから、[ラベルをエクスポート][ワークスペースへ] を選択します。エクスポートした MATLAB 変数は gTruth です。

エクスポートした groundTruth オブジェクトのプロパティを表示します。エクスポートしたオブジェクトの情報は、以下に示す情報と異なる可能性があります。

gTruth
gTruth = 

  groundTruth with properties:

          DataSource: [1×1 groundTruthDataSource]
    LabelDefinitions: [2x6 table]
           LabelData: [531×3 timetable]

データ ソース

DataSource は、イメージまたはビデオへのパスとタイムスタンプを含む groundTruthDataSource オブジェクトです。このオブジェクトのプロパティを表示します。

gTruth.DataSource
ans = 

groundTruthDataSource for a video file with properties

        Source: ...matlab\toolbox\vision\visiondata\visiontraffic.avi
    TimeStamps: [531×1 duration]

ラベル定義

LabelDefinitions は、ラベル定義に関する情報を含む table です。この table は、ビデオ フレームに描画されたラベルに関する情報を含みません。固有の MAT ファイルにラベル定義を保存するには、アプリのツールストリップから、[保存][ラベルの定義] を選択します。次に、[ファイルのインポート] を選択することで、これらのラベル定義を別のアプリ セッションにインポートできます。

ラベル定義 table を表示します。各行は、ROI ラベル定義またはシーン ラベル定義に関する情報を含みます。ピクセル ラベル データをエクスポートした場合、LabelDefinitions table には、各ピクセル ラベル定義の ID 番号を含む PixelLabelID 列も含まれます。

gTruth.LabelDefinitions
ans =
  3×6 table

      Name         Type        LabelColor        Group       Description     Hierarchy  
    _________    _________    ____________    ___________    ___________    ____________

    {'Car'  }    Rectangle    {1×3 double}    {'Vehicle'}    {0×0 char}     {1×1 struct}
    {'Truck'}    Rectangle    {1×3 double}    {'Vehicle'}    {0×0 char}     {0×0 double}
    {'Sunny'}    Scene        {1×3 double}    {'Weather'}    {0×0 char}     {0×0 double} 

LabelDefinitions 内の Hierarchy 列は、親 ROI ラベルのサブラベルと属性定義に関する情報を格納します。

Car ラベルのサブラベルと属性情報を表示します。

gTruth.LabelDefinitions.Hierarchy{1}
ans = 

  struct with fields:
       numDoors: [1×1 struct]
          color: [1×1 struct]
       inMotion: [1×1 struct]
        carType: [1×1 struct]
      headlight: [1×1 struct]
           Type: Rectangle
    Description: ''

headlight サブラベルに関する情報を表示します。

gTruth.LabelDefinitions.Hierarchy{1}.headlight
ans = 

  struct with fields:
           Type: Rectangle
    Description: ''
          Color: [0.5862 0.8276 0.3103]
           isOn: [1×1 struct]

carType 属性に関する情報を表示します。

gTruth.LabelDefinitions.Hierarchy{1}.carType
ans = 

  struct with fields:

      ListItems: {3×1 cell}
    Description: ''

アプリ セッションの保存

アプリのツール ストリップから [保存] を選択し、アプリ セッションの MAT ファイルを保存します。保存されたセッションには、データ ソース、ラベル定義、およびラベル付きのグラウンド トゥルースが含まれます。また、アプリのレイアウトなど、セッションの設定も含まれます。レイアウト オプションを変更するには、[レイアウト] を選択します。

アプリ セッション MAT ファイルは、[エクスポート][ファイルから] を選択してエクスポートするグラウンド トゥルース MAT ファイルとは別のものです。ラベル付きのグラウンド トゥルース データを共有するには、ベスト プラクティスとして、アプリ セッション MAT ファイルを共有するのではなく、groundTruth オブジェクトを含むグラウンド トゥルース MAT ファイルを共有します。詳細は、ラベル付きのグラウンド トゥルース データの共有と保存を参照してください。

参考

アプリ

オブジェクト

関連するトピック