Main Content

イメージ ラベラー入門

イメージ ラベラー アプリでは、関心領域 (ROI) ラベルとしてマークするさまざまな形状を対話形式で簡単に作成できます。イメージまたはイメージ シーケンスで、軸方向に整列したまたは回転した四角形、ポリライン、ピクセル、および多角形の ROI ラベルとシーン ラベルを作成できます。

ラベル付けされたデータを使用して、イメージ分類器、オブジェクト検出器、セマンティック セグメンテーション ネットワーク、およびインスタンス セグメンテーション ネットワークなどのアルゴリズムの検証や学習ができます。ROI ラベルを作成するためにラベル付け描画ツールを選択する際には、用途を考慮します。用途に適したラベル タイプと描画ツールを選択する方法の詳細については、ROI ラベル、サブラベル、属性を参照してください。

ROI とシーン ラベルの定義

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

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

この例の使用

個人プロジェクトに取り組んでいる場合でも、チームの一員として作業している場合でも、この例で概説されているワークフローは同じです。ただし、チームで作業している場合は、ここで説明する手順のサブセットのみが必要となります。次の表は、役割に応じて必要なワークフローの手順を示しています。チームベースのラベル付けを使用したラベル付けプロジェクトの管理の詳細については、Get Started with Team-Based Labelingを参照してください。

ワークフロー 個人チームベース プロジェクトのマネージャーラベル付けタスクの所有者レビュー タスクの所有者

イメージの読み込み

Check mark.

Check mark.

Check mark.

Red ex.

ラベル定義の作成

Check mark.

Check mark.

Red ex.

Red ex.

ラベル イメージ

Check mark.

Check mark.

Check mark.

Red ex.

個人プロジェクトのラベル付きイメージのエクスポート

Check mark.

Red ex.

Check mark.

Red ex.

イメージの読み込み

新しいプロジェクトを開始したり、既存のプロジェクトを開いたりするには、[プロジェクトを開く][新規の個人プロジェクト][新規のチーム プロジェクト] のいずれかを選択します。ラベルのないイメージまたは部分的にラベルが付いているイメージを読み込んだり、レビューの準備ができたイメージを読み込んだりできます。

ラベル付けの必要があるイメージは、データストアまたはフォルダーに保存できます。イメージは imread によって読み取り可能でなければなりません。保存済みのプロジェクトから、以前のラベル付けセッションを読み込むことができます。

プログラムによるデータの読み込み

次のコードでは、データストアから本の表紙のイメージをプログラムで読み込みます。

  1. イメージのフォルダーからデータストアを作成します。

    imageFolder = fullfile(toolboxdir("vision"),"visiondata","bookcovers")
    imds = imageDatastore(imageFolder)
    

  2. データストアを読み込みます。

    imageLabeler(imds)

イメージのフォルダーをプログラムで読み込むには、次のようにします。

imageFolder = fullfile(toolboxdir("vision"),"visiondata","bookcovers")
imageLabeler(imageFolder)

アプリからのデータの直接読み込み

この例では、アプリから対話的にイメージを読み込みます。まず、[アプリ] タブの [イメージ処理とコンピューター ビジョン] からアプリを開きます。ファイルから、あるいはワークスペース内のデータストアからイメージを読み込むには、[インポート] をクリックします。

この例で使用するイメージを読み込むには、[インポート] をクリックし、[ファイルから] を選択します。boats.png イメージを選択します。

matlab/toolbox/vision/visiondata/boats.png

イメージ ラベラー アプリのレイアウト

Image labeler app with one image of boats displayed.

イメージ ラベラー アプリのセクションは以下のようになります。

  • 最初のイメージがキャンバスに表示され、読み込まれたすべてのイメージがアプリ下部の [イメージ ブラウザー] に表示されます。

  • [ビジュアル概要] ブラウザーには、プロジェクト内のイメージの ROI とシーン ラベルの分布が表示されます。

  • アプリには、ツール バーで使用できるオプションのセットを制御する 2 つのタブがあります。既定で表示される [イメージ ラベラー] タブには、ファイル管理、ラベル定義オプション、自動ラベリング オプション、監視、ショートカットとチュートリアルを表示するボタン、および [エクスポート] ボタンが用意されています。[可視化] タブには、アプリでの作業を可視化するためのオプションが用意されています。これらのオプションでは、アプリのレイアウトの変更、ROI ラベルの表示方法の制御 (ポイント時、常に表示、または表示しないなど)、色別 (同じラベルのすべての ROI を同じ色で表示) またはインスタンス別 (ROI ラベルの各インスタンスを異なる色で表示) による ROI の表示方法の制御、およびラベルの不透明度の変更といったラベルの操作を容易に行うことができます。

  • [ROI ラベル] ペインには、プロジェクトで使用する ROI ラベル定義が表示されます。

  • [シーン ラベル] ペインには、プロジェクトで使用するシーン ラベル定義が表示されます。

  • [ラベル、サブラベルおよび属性の表示] ペインには、ラベル付けされた ROI とシーンの詳細が表示されます。

ラベル定義の作成

描画するラベルを定義します。この例では、アプリ内でラベルを直接定義します。代わりに MATLAB® コマンド ラインからラベルを描画するには、labelDefinitionCreator を使用します。すべてのラベル名は 1 語でなければなりません。

ROI ラベルの作成

"ROI ラベル" は、イメージの関心領域 (ROI) に対応するラベルです。以下の ROI ラベル タイプを定義できます。

  • Rectangle — 車両、ボート、建物など、イメージ内のオブジェクトの周りに 2 次元の軸方向に揃えた四角形境界ボックス ラベルを描画します。

  • Rotated Rectangle — 車両、ボート、建物など、イメージ内のオブジェクトの周りに、回転した四角形の 2 次元境界ボックス ラベルを描画します。

  • Point — オブジェクトを識別するために点を描画します。

  • Projected cuboid — イメージ内のオブジェクトの周りに 3 次元の境界ボックス ラベルを描画します。

  • Line — 車線境界線などのラインにラベルを付けるためにライン ROI を描画します。

  • Polygon — オブジェクトの周りに多角形ラベルを描画します。同じクラスの個別のインスタンスにラベルを付けることができます。インスタンス セグメンテーション ネットワークおよびセマンティック セグメンテーション ネットワーク用に多角形 ROI ラベルを描画する方法の詳細については、Label Objects Using Polygons を参照してください。

  • Pixel label — セマンティック セグメンテーション用に、道路や空などのさまざまなクラスにラベルを付けるため、ピクセルを描画します。ピクセルのラベル付けの詳細については、セマンティック セグメンテーションのピクセルのラベル付けを参照してください。

これらの ROI ラベルの定義の詳細については、ROI ラベル、サブラベル、属性を参照してください。

この例では、ボートの種類をラベル付けするための Boat グループを定義してから、Sailboat および TankerRectangle ROI ラベルを作成します。ラベル付け時の ROI ラベル名の表示を制御するには、[ROI ラベルの表示] ドロップダウン メニューから [ポイント時][常時]、または [なし] を選択します。

  1. ツールストリップの [ラベルの定義] セクションで [ラベル] をクリックします。

  2. Sailboat という名前の [四角形] ラベル タイプを作成します。

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

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

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

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

  6. [Boats] ラベルの 2 番目のタイプを追加するには、[ラベル][四角形] の順にクリックします。ラベルに Tanker という名前を付けます。[OK] をクリックします。

  7. [Sailboat] サブラベルを選択し、マウスを使ってヨットの周りに四角形 ROI を描画します。[Tanker] サブラベルを選択して、タンカー船の周りに ROI を描画します。ROI から離れた所のイメージをクリックして選択を解除します。選択した ROI は黄色の輪郭で表示されます。

    Sailboat in the foreground and tanker ship in the background

サブラベルの作成

"サブラベル" は、親 ROI ラベルに対応する ROI ラベルのタイプです。各サブラベルは、[ROI ラベル] ペインで定義された特定のラベルに属している (特定のラベルの子である) 必要があります。たとえば、海洋シーンの場合、Sailboat (ヨット) のラベルに sail (帆) のサブラベルがある可能性があります。サブラベルの詳細については、ROI ラベル、サブラベル、属性を参照してください。

帆のサブラベルを定義します。

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

  2. ツールストリップの [ラベルの定義] セクションで [サブラベル] をクリックします。

  3. [四角形] を選択し、サブラベルに sail という名前を付けます。必要に応じて、色を選択し (既定では、サブラベルは親ラベルと同じ色になる)、説明を記述します。[OK] をクリックします。

    [ROI ラベル] ペインに [sail] サブラベルが表示されます。サブラベルは、選択した ROI ラベル [Sailboat] の下に入れ子にされます。

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

    Two sublabels drawn around the sails of one sailboat in image.

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

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

    それぞれの帆について [sail] サブラベルを描画します。

    A sublabel is drawn on each of the two sails of one of the sailboats in the image.

サブラベルが独自のサブラベルをもつことはできません。また、サブラベルは、ピクセル ラベルを除くすべての ROI ラベル タイプで使用できます。[ラベル、サブラベルおよび属性] ペインに、作成されたラベルのリストとスタックの順番が表示されることに注意してください。

ラベルとサブラベルの表示/非表示

[ROI ラベル] ペインの Eye icon アイコンを使用して、ラベル付きイメージのラベルまたはサブラベルを表示したり非表示にしたりできます。Eye icon は、ラベルまたはサブラベルを定義した後にのみ表示されます。既定では、アプリはすべてのラベルとサブラベルを表示します。

ラベルまたはサブラベルを非表示にするには、ラベルまたはサブラベル名の横にある Eye icon アイコンをクリックします。アプリは、対応するラベルまたはサブラベルを非表示にし、Hide icon アイコンを表示します。

ROI 属性の作成

"ROI 属性" では、ROI ラベルまたはサブラベルに関する追加情報を指定します。たとえば、運転シーンの場合、属性は車両のタイプや色を含む場合があります。海洋のシーンでは、ヨットのタイプや帆の数などが属性に含まれます。これらのタイプの ROI 属性を定義できます。

  • Numeric Value — ラベル付けされた車両のドアの数やヨットの帆の数など、数値スカラーの属性を指定します。

  • String — 車両やボートの色など、string スカラーの属性を指定します。

  • Logical — 車両が動いているか、ボートが帆走しているかなど、logical の true または false の属性を指定します。

  • List — 車両やボートのメーカーやモデルなど、事前定義された文字列で構成されるドロップダウン リストの属性を指定します。

これらの属性タイプの詳細については、ROI ラベル、サブラベル、属性を参照してください。

ラベルに属性を追加します。

  1. 左側の [ROI ラベル] ペインで [Sailboat] ラベルを選択し、ツールストリップの [ラベルの定義] セクションで [属性] をクリックします。オプションから [リスト] を選択します。

  2. [属性名] ボックスに sailboatType と入力します。

  3. [リスト項目] セクションで、3 つの異なるヨットの種類 (MonohullCatamaran、および Multihull) を 1 行に 1 つずつ入力します。必要に応じて、属性に説明を加えることができます。[OK] をクリックします。ラベルまたはサブラベル ROI をポイントすると、その名前が表示されます。

サブラベルに属性を追加することもできます。たとえば、この例では、[sail] サブラベルの属性を使用して、それがフォアセイルであるかメインセイルであるかを示すことができます。または、次の手順で、帆が上がっているかどうかを示す logical 属性を追加します。

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

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

  3. シーンで帆を選択します。選択すると、ROI が黄色で表示されます。属性 sailRaised と適切な logical 値を選択します。

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

シーン ラベルの作成

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

シーン ラベルを作成します。

  1. ドロップダウン リストの下部にある [シーン ラベルの定義] セクションから [ラベル][シーン] の順に選択します。

  2. dayTime という名前のシーン ラベルを入力します。TimeOfDay という名前の新しいグループを作成します。

  3. 同じグループ内に nightTime という名前の別のシーン ラベルを作成します。

  4. シーンを日中としてラベル付けするには、dayTime のシーン ラベルをクリックし、[イメージに適用] をクリックします。シーン ラベルにチェックマークが表示されます。

    Scene Label pane with the daytime sublabel selected and checked and the Apply to Image circled.

ラベル イメージ

イメージへのラベル付けを手動で行うこともできますし、適切な組み込みオートメーション アルゴリズムを使用したり、新しいアルゴリズムを作成したり、アルゴリズムをインポートしたりすることもできます。

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

ROI ラベルとシーン ラベルは、セッション全体とセッション内のすべてのイメージに対して定義されます。オートメーション アルゴリズムを使用しない限り、関連するすべてのイメージにラベルを付けなければなりません。

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

ラベル付け処理を高速化するために、オートメーション アルゴリズムを使用して残りのイメージにラベルを付けることができます。アプリのツールストリップ [自動ラベリング][アルゴリズムの選択] セクションから、以下のオートメーション アルゴリズムのタイプのいずれかを選択します。

  • カスタム オートメーション関数 — カスタム アルゴリズムを定義します。

  • 組み込みのオートメーション アルゴリズムの 1 つを使用する — 適切なアルゴリズムを選択します。右側のペインに表示される手順に従います。

  • イメージ全体のアルゴリズムの追加 — 新しいオートメーション アルゴリズムを作成したり、インポートしたりできます。両方のオプションの詳細については、オートメーション アルゴリズムの作成を参照してください。

  • ブロック化されたイメージのアルゴリズムの追加 — ブロック化されたイメージの新しいオートメーション アルゴリズムを作成したり、インポートしたりできます。両方のオプションの詳細については、Label Large Images in the Image Labelerを参照してください。

オートメーション アルゴリズムを使用した後、サブラベルと属性情報を使用して、残りのフレームに手動でラベルを付けることができます。

ラベルをさらに評価するには、ラベル付きイメージのビジュアル概要を表示します。[ビジュアル概要] 情報は、アプリのイメージ ペインの下に表示されます。この概要を使用して、フレーム、ラベルの頻度、およびシーンの状態を比較できます。詳細については、View Summary of ROI and Scene Labelsを参照してください。この概要では、サブラベルや属性については説明していません。

チームベース プロジェクトのラベル付きイメージのエクスポート

チームベースのプロジェクトの一部として作業しているときにラベル付きイメージをエクスポートするには、Combine Reviewed Images and Exportに概説されている手順に従います。

個人プロジェクトのラベル付きイメージのエクスポート

ラベル付きのグラウンド トゥルースを MAT ファイルや、MATLAB ワークスペースの変数にエクスポートできます。いずれの場合も、ラベル付きのグラウンド トゥルースは groundTruth オブジェクトとして保存されます。

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: ''

チームベースのプロジェクトでのアプリ セッションの保存

セッションは、チームベースのプロジェクトの各手順内で保存されます。これらの各手順の詳細については、Get Started with Team-Based Labelingを参照してください。

個人プロジェクトとしてのアプリ セッションの保存

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

セッション中はいつでも [新規セッション] を選択して新規セッションを開始できます。現在のセッションを保存するか、キャンセルするかを選択できます。

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

参考

アプリ

オブジェクト

関連するトピック