このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
イメージ ラベラー入門
イメージ ラベラー アプリでは、関心領域 (ROI) ラベルとしてマークするさまざまな形状を対話形式で簡単に作成できます。イメージまたはイメージのシーケンスで、四角形、ポリライン、ピクセル、および多角形の ROI ラベルとシーン ラベルを作成できます。
ラベル付けされたデータを使用して、イメージ分類器、オブジェクト検出器、セマンティック セグメンテーション ネットワーク、およびインスタンス セグメンテーション ネットワークなどのアルゴリズムの検証や学習ができます。ROI ラベルを作成するためにラベル付け描画ツールを選択する際には、用途を考慮します。用途に適したラベル タイプと描画ツールを選択する方法の詳細については、ROI ラベル、サブラベル、属性を参照してください。
この例では、以下の方法を示して、アプリの使用方法を紹介します。
ラベル付けされていないデータの読み込み
イメージ コレクションのイメージ フレームに手動でラベルを付ける。
オートメーション アルゴリズムを使用して、イメージ フレーム全体に自動的にラベルを付ける。
ラベル付きのグラウンド トゥルース データをエクスポートする。
ROI とシーン ラベルの定義
"ROI ラベル" は、四角形、ポリライン、ピクセル、多角形のいずれかの関心領域に対応します。これらのラベルには "cars" などのラベル名と作成した領域などの 2 つのコンポーネントが含まれます。
"シーン ラベル" は、"sunny" などのシーンの性質を表します。このラベルはフレームに関連付けることができます。
ラベル付けされていないデータの読み込み
データストアに格納されているイメージをフォルダーから読み込むか、または以前のラベラー セッションを読み込むことができます。イメージは imread
によって読み取り可能でなければなりません。
プログラムによるデータの読み込み
プログラムでデータストアからイメージを読み込むには、次のようにします。
イメージのフォルダーからデータストアを作成します。
imageFolder = fullfile(toolboxdir('vision'),'visiondata','bookcovers') imds = imageDatastore(imageFolder)
データストアを読み込みます。
imageLabeler(imds)
イメージのフォルダーをプログラムで読み込むには、次のようにします。
imageFolder = fullfile(toolboxdir('vision'),'visiondata','bookcovers') imageLabeler(imageFolder)
アプリからのデータの直接読み込み
この例では、アプリを起動して対話的にイメージを読み込みます。[アプリ] タブの [イメージ処理とコンピューター ビジョン] からアプリを開きます。[インポート] をクリックしてイメージを読み込むか、[セッションを開く] をクリックして保存済みのセッションを開きます。
この例で使用するイメージを読み込むには、[インポート] をクリックし、[ファイルから] を選択します。boats.png
イメージを選択します。
matlab/toolbox/vision/visiondata/boats.png
ラベル定義の作成
描画するラベルを定義します。この例では、アプリ内でラベルを直接定義します。代わりに MATLAB® コマンド ラインからラベルを描画するには、labelDefinitionCreator
を使用します。
ROI ラベルの作成
"ROI ラベル" は、イメージの関心領域 (ROI) に対応するラベルです。以下の ROI ラベル タイプを定義できます。
Rectangle
— 車両、ボート、建物など、イメージ内のオブジェクトの周りに 2 次元の四角形境界ボックス ラベルを描画します。Projected cuboid
— 車両、ボート、建物など、イメージ内のオブジェクトの周りに 3 次元の境界ボックス ラベルを描画します。Line
— 車線境界線などのラインにラベルを付けるためにライン ROI を描画します。Pixel label
— セマンティック セグメンテーション用に、道路や空などのさまざまなクラスにラベルを付けるため、ピクセルを描画します。ピクセルのラベル付けの詳細については、セマンティック セグメンテーションのピクセルのラベル付けを参照してください。Polygon
— オブジェクトの周りに多角形ラベルを描画します。同じクラスの個別のインスタンスにラベルを付けることができます。インスタンス セグメンテーション ネットワークおよびセマンティック セグメンテーション ネットワーク用に多角形 ROI ラベルを描画する方法の詳細については、Label Objects Using Polygons を参照してください。
これらの ROI ラベルの定義の詳細については、ROI ラベル、サブラベル、属性を参照してください。
この例では、ボートの種類をラベル付けするための Boat
グループを定義してから、Sailboat
および Tanker
の Rectangle
ROI ラベルを作成します。ラベル付け時の ROI ラベル名の表示を制御するには、[ROI ラベルの表示] ドロップダウン メニューから [ポイント時]、[常時]、または [なし] を選択します。
左側の [ROI ラベル] ペインで [ラベル] をクリックします。
Sailboat
という名前の[Rectangle]
ラベル タイプを作成します。オプションで、プレビューの色をクリックすることで、ラベルの色を変えられます。
[グループ]
ドロップダウン メニューから、[新規グループ...]
を選択し、グループにBoats
という名前を付けます。[OK] をクリックします。
[Boats] のグループ名は、作成されたラベル [Sailboat] と共に [ROI ラベル] ペインに表示されます。リストのラベルを左クリックして上下にドラッグすると、リスト内の別の位置またはグループに移動できます。
[Boats] ラベルの 2 番目のタイプを追加するには、グループ [Boats] を選択し、[ラベル] をクリックします。ラベルに Tanker という名前を付けます。[OK] をクリックします。
[Sailboat] サブラベルを選択し、マウスを使ってヨットの周りに四角形 ROI を描画します。[Tanker] サブラベルを選択して、タンカー船の周りに ROI を描画します。
サブラベルの作成
"サブラベル" は、親 ROI ラベルに対応する ROI ラベルのタイプです。各サブラベルは、[ROI ラベル] ペインで定義された特定のラベルに属している (特定のラベルの子である) 必要があります。たとえば、海洋シーンの場合、Sailboat (ヨット) のラベルに sail (帆) のサブラベルがある可能性があります。サブラベルの詳細については、ROI ラベル、サブラベル、属性を参照してください。
帆のサブラベルを定義します。
左側の [ROI ラベル] ペインで [Sailboat] ラベルをクリックします。
[サブラベル] をクリックします。
sail
という名前の[Rectangle]
のサブラベルを作成し、必要に応じて説明を記述します。[OK] をクリックします。[ROI ラベル] ペインに [sail] サブラベルが表示されます。サブラベルは、選択した ROI ラベル [Sailboat] の下に入れ子にされており、既定で親ラベルと同じ色が付けられています。
ラベルに複数のサブラベルを追加できます。サブラベルをドラッグ アンド ドロップしてリスト内で並べ替えたり、任意のラベルを右クリックしてさらに編集したりできます。
[ROI ラベル] ペインで [sail] サブラベルを選択します。
イメージ フレームで、[Sailboat] ラベルを選択します。選択するとラベルは黄色に変化します。サブラベルを描画する前に、[Sailboat] ラベル (親 ROI) を選択しなければなりません。
それぞれの帆について [sail] のサブラベルを描画します。
サブラベルがさらにサブラベルをもつことはできません。サブラベルは四角形 ROI ラベルまたはポリライン ROI ラベルでのみ使用できます。
ラベルとサブラベルの表示/非表示
[ROI ラベル] ペインの アイコンを使用して、ラベル付きイメージのラベルまたはサブラベルを表示したり非表示にしたりできます。
は、ラベルまたはサブラベルを定義した後にのみ表示されます。既定では、アプリはすべてのラベルとサブラベルを表示します。
ラベルまたはサブラベルを非表示にするには、ラベルまたはサブラベル名の横にある アイコンをクリックします。アプリは、対応するラベルまたはサブラベルを非表示にし、
アイコンを表示します。
| |
ROI 属性の作成
"ROI 属性" では、ROI ラベルまたはサブラベルに関する追加情報を指定します。たとえば、運転シーンの場合、属性は車両のタイプや色を含む場合があります。海洋のシーンでは、ヨットのタイプや帆の数などが属性に含まれます。これらのタイプの ROI 属性を定義できます。
Numeric Value
— ラベル付けされた車両のドアの数やヨットの帆の数など、数値スカラーの属性を指定します。String
— 車両やボートの色など、string スカラーの属性を指定します。Logical
— 車両が動いているか、ボートが帆走しているかなど、論理値 true または論理値 false の属性を指定します。List
— 車両やボートのメーカーやモデルなど、事前定義された文字列で構成されるドロップダウン リストの属性を指定します。
これらの属性タイプの詳細については、ROI ラベル、サブラベル、属性を参照してください。
ラベルに属性を追加します。
左側の [ROI ラベル] ペインで [Sailboat] ラベルを選択し、[属性] をクリックします。
[属性名] ボックスに
sailboatType
と入力します。属性タイプを[List]
に設定します。[リスト項目] セクションに、
Monohull
、Catamaran
、Multihull
など、さまざまなヨットの種類を 1 行に 1 つ入力します。必要に応じて属性に説明を加えて、[OK] をクリックします。属性フィールドの横に表示される情報アイコンをポイントすると、追加した説明が表示されます。[Sailboat] の ROI ラベルを選択します。[属性とサブラベル] ペインで、その車両に適切な [sailboatType] 属性を選択します。
サブラベルに属性を追加することもできます。[sail] サブラベルの属性を追加して、それがフォアセイルであるかメインセイルであるかを示します。
左側の [ROI ラベル] ペインで [sail] サブラベルを選択し、[属性] をクリックします。
[属性名] ボックスに
sailRaised
と入力します。属性タイプを[Logical]
に設定します。[既定値] は[Empty]
の設定のままにしておき、必要に応じて説明を記述して、[OK] をクリックします。シーン内の帆を選択します。右側のペインで、適切な [isOn] 属性値を設定するか、属性値を
[Empty]
に設定されたままにします。
属性を削除するには、ROI ラベルまたはサブラベルを右クリックして、削除する属性を選択します。属性を削除すると、以前に作成したすべての ROI ラベルの注釈から属性情報が削除されます。
シーン ラベルの作成
"シーン ラベル" は、シーン全体に関する追加情報を定義します。シーン ラベルは、ライティングおよび気象などの条件や、車線変更やポイント オブ セイルなどのイベントを説明するために使用します。
シーン ラベルを作成して、イメージに適用します。
アプリの左側のペインで、[ROI ラベル] タブの隣にある [シーン ラベル] を選択します。
[新しいシーン ラベルの定義] をクリックし、[ラベル名] ボックスに
daytime
という名前のシーン ラベルを入力します。シーン ラベルの内容に合わせてラベル定義の色を薄い青に変更します。[色] パラメーターの下で、カラー プレビューをクリックし、標準の薄い青色を選択します。次に、[OK] をクリックして色の選択ウィンドウを閉じます。
[グループ] パラメーターを既定の
[None]
のままにして、[OK] をクリックします。[シーン ラベル] ペインにシーン ラベルの定義が表示されます。[イメージに適用] をクリックして、
daytime
ラベルをシーンに適用します。シーン ラベルにチェックマークが表示されます。シーン ラベルを編集または削除するには、[ラベルの編集] または [ラベルの削除] を選択します。
グラウンド トゥルースのラベル付け
イメージへのラベル付けを手動で行うこともできますし、適切な組み込みオートメーション アルゴリズムを使用したり、新しいアルゴリズムを作成したり、アルゴリズムをインポートしたりすることもできます。
グラウンド トゥルースに手動でラベルを付ける
ROI ラベルとシーン ラベルはセッション全体とすべてのイメージに対して定義されていますが、各イメージのラベルとサブラベルの描画、および属性情報の更新は行わなければなりません。
オートメーション アルゴリズムを使用したグラウンド トゥルースのラベル付け
ラベル付け処理を高速化するために、オートメーション アルゴリズムを使用して残りのイメージにラベルを付けることができます。アプリのツールストリップ [自動ラベリング]、[アルゴリズムの選択] セクションから、以下のオートメーション アルゴリズムのタイプのいずれかを選択します。
組み込みのオートメーション アルゴリズムの 1 つを使用する — 適切なアルゴリズムを選択します。右側のペインに表示される手順に従います。
イメージ全体のアルゴリズムの追加 — 新しいオートメーション アルゴリズムを作成したり、インポートしたりできます。両方のオプションの詳細については、ラベル付け用オートメーション アルゴリズムの作成を参照してください。
ブロック化されたイメージのアルゴリズムの追加 — ブロック化されたイメージの新しいオートメーション アルゴリズムを作成したり、インポートしたりできます。両方のオプションの詳細については、Label Large Images in the Image Labelerを参照してください。
オートメーション アルゴリズムを使用した後、サブラベルと属性情報を使用して、残りのフレームに手動でラベルを付けることができます。
ラベルをさらに評価するために、ラベル付きのグラウンド トゥルースの視覚的な概要を表示できます。アプリのツールストリップから、[ラベルの概要を表示] を選択します。この概要を使用して、フレーム、ラベルの頻度、およびシーンの状態を比較できます。詳細は、グラウンド トゥルース ラベルの概要の表示を参照してください。この概要では、サブラベルや属性については説明していません。
ラベル付きのグラウンド トゥルースのエクスポート
ラベル付きのグラウンド トゥルースを 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 ファイルを共有します。詳細は、ラベル付きのグラウンド トゥルース データの共有と保存を参照してください。
参考
アプリ
オブジェクト
groundTruth
|imageDatastore
|groundTruthDataSource
|labelDefinitionCreator
|vision.labeler.AutomationAlgorithm