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

groundTruth

グラウンド トゥルース ラベル データ

説明

groundTruth オブジェクトには、一連のグラウンド トゥルース ラベルのデータ ソース、ラベル定義、およびマークされたラベルの注釈に関する情報が含まれます。groundTruth オブジェクトは、イメージ ラベラー アプリおよびビデオ ラベラー アプリからエクスポートまたはインポートできます。

  • groundTruth オブジェクトの配列からオブジェクト検出器の学習データを作成するには、関数 objectDetectorTrainingData を使用します。

  • groundTruth オブジェクトの配列からセマンティック セグメンテーション ネットワークの学習データを作成するには、関数 pixelLabelTrainingData を使用します。

作成

ラベル付けアプリから groundTruth オブジェクトをエクスポートするには、アプリのツールストリップで、[ラベルをエクスポート][ワークスペースへ] を選択します。アプリがオブジェクトを MATLAB® ワークスペースにエクスポートします。プログラムで groundTruth オブジェクトを作成するには、関数 groundTruth を使用します (ここで説明します)。

説明

gTruth = groundTruth(dataSource,labelDefs,labelData) は、イメージ ラベラー アプリおよびビデオ ラベラー アプリにインポートできるグラウンド トゥルース ラベルを含むオブジェクトを返します。

  • dataSource では、グラウンド トゥルース データのソースを指定し、DataSource プロパティを設定します。

  • labelDefs では、グラウンド トゥルース データのラベル、サブラベル、および属性の定義を指定し、LabelDefinitions プロパティを設定します。

  • labelData では、マークされたラベルの識別情報、位置、およびタイムスタンプを指定し、LabelData プロパティを設定します。

プロパティ

すべて展開する

グラウンド トゥルース データのソース。groundTruthDataSource オブジェクトとして指定します。オブジェクトには、ビデオ、イメージ シーケンス、またはグラウンドトゥルース データがラベル付けされたカスタムのデータ ソースを記述する情報が含まれます。

元のデータ ソースからイメージにアクセスするには、VideoReader または imageDatastore を使用します。また、カスタム リーダー関数を使用することもできます。詳細は、ラベル付けでのカスタム イメージ ソース リーダーの使用を参照してください。

このプロパティは読み取り専用です。

ラベル定義。テーブルとして指定します。このテーブルを作成するには、次のいずれかの方法を使用します。

  • ラベル付けアプリのいずれかにおいてラベル定義を作成し、それを groundTruth オブジェクトの一部としてエクスポートします。

  • labelDefinitionCreator オブジェクトを使用して、ラベル定義テーブルを生成します。このテーブルを MAT ファイルに保存すると、ラベル定義をラベル付けアプリのセッションに読み込めます。アプリのツールストリップで、[読み込み][ラベルの定義] を選択してください。

  • ラベル定義テーブルを MATLAB コマンド ラインで作成します。

次の表に、LabelDefinitions プロパティに指定するテーブルの必須およびオプションの列を示します。

説明必須またはオプション
Name各ラベル定義の名前を指定する文字列または文字ベクトル。

必須

Type各ラベル定義のタイプを指定する labelType 列挙。RectangleScene など。

必須

LabelColorラベル定義の色を指定する RGB 3 成分の 1 行 3 列の行ベクトル。値は [0, 1] の範囲内です。黄色 (RGB 3 成分 [1 1 0]) は、ラベル付けアプリにおける選択ラベルの色として予約されています。

オプション

ラベル付けアプリでラベルを定義する場合、色を指定しなければなりません。そのため、エクスポートされるラベル定義テーブルには必ずこの列が含まれます。

labelDefinitionCreator オブジェクトを使用して、色を指定せずにラベル定義を作成する場合、返されるラベル定義テーブルにはこの列が含まれますが、列の値はすべて空です。

PixelLabelIDスカラー、列ベクトル、または整数値ラベル ID の M 行 3 列の行列。PixelLabelID は、ラベル定義を表すために使用されるピクセル ラベル値を指定します。ピクセル ラベル ID の値は 0 ~ 255 の範囲でなければなりません。

オプション

ラベル付けアプリまたは labelDefinitionCreator オブジェクトでピクセル ラベルを定義する場合、生成されるラベル定義テーブルにはこの列が含まれます。

ラベル定義をプログラムで作成する場合、いずれかのラベルの TypelabelType.PixelLabel に設定すると、この列は必須になります。

Group各ラベル定義が属するグループを指定する文字列または文字ベクトル。

オプション

ラベル定義をプログラムで作成する場合、Group 列を含める必要はありません。

ラベル付けアプリからラベル定義をエクスポートする場合や、labelDefinitionCreator オブジェクトを使用してラベル定義を作成する場合、グループを指定していなくても、ラベル定義テーブルにはこの列が含まれます。各ラベル定義の Group の値として 'None' が割り当てられます。

Description各ラベル定義について説明する文字列または文字ベクトル。

オプション

ラベル定義をプログラムで作成する場合、Description 列を含める必要はありません。

ラベル付けアプリからラベル定義をエクスポートする場合や、labelDefinitionCreator オブジェクトを使用してラベル定義を作成する場合、説明を指定していなくても、ラベル定義テーブルにはこの列が含まれます。こうしたラベル定義の Description は空の文字ベクトルになります。

Hierarchy各ラベル定義のサブラベルと属性データを含む構造体。Hierarchy の形式の例については、イメージ ラベラー入門またはビデオ ラベラー入門を参照してください。

オプション

ラベル付けアプリでサブラベルまたは属性を定義する場合、エクスポートされる groundTruth オブジェクトにはこの列が含まれます。

たとえば、carsskyvegetationroadsigns、および lanes という名前のラベル定義をもつテーブルについて考えます。これがビデオ ラベラー アプリからエクスポートされたものとします。

  • ラベル定義にはピクセル ラベルが含まれているため、テーブルには PixelLabelID 列があります。

  • ラベルのうち 2 つに属性があるため、アプリは Hierarchy 列を作成しました。これがすべてのラベル定義に適用されています。

  • ラベル定義にはグループが割り当てられていないため、すべてのラベル定義の Group 列が 'None' になっています。

次のコードは、2 つのラベル カテゴリを含む table を表しています。

defs = table({'Cars';'Lanes'}, ...
	[labelType.Rectangle;labelType.Line], ...
	'VariableNames',{'Name','Type'})

このプロパティは読み取り専用です。

各 ROI とシーン ラベルのラベル データ。イメージの集合の場合は table、ビデオまたはイメージ シーケンスの場合は timetable として指定します。LabelData の各列が 1 つのラベル定義のラベルを保持し、LabelDefinitions の各行の Name の値に対応します。これらの LabelData はテーブルの要素を表します。ラベル カテゴリは labelType 列挙値として指定されます。

ラベル定義タイプラベル値
labelType.Rectangle各行のラベルは、境界ボックスの位置の M 行 4 列の行列 [x,y,width,height] として格納されます。ラベルがサブラベル、属性、またはその両方を含む場合、ラベルは構造体として格納されます。これらの構造体には、境界ボックスの位置、およびサブラベルと属性の情報が含まれます。
labelType.Line各行のラベルは M 行 1 列の cell 配列として格納されます。cell 配列の各要素には、ポリラインのマークに使用される点の [x,y] 位置が格納されます。ラベルがサブラベル、属性、またはその両方を含む場合、ラベルは構造体として格納されます。これらの構造体には、線の位置、およびサブラベルと属性の情報が含まれます。
labelType.PixelLabelすべてのラベル カテゴリのラベル データは単一のラベル行列として表されます。行列はディスクに uint8 イメージとして格納されなければなりません。イメージ ファイル名は LabelData テーブルで文字ベクトルとして指定しなければなりません。ラベル行列には 1 チャネルまたは 3 チャネルを含めなければなりません。3 チャネル行列の場合、RGB ピクセル値はラベル ID を表します。
labelType.Scene各行のラベルは、イメージのシーン ラベルの有無を表す logical 値として格納されます。
labelType.Custom各行のラベルは、テーブルで指定されている方法で格納されます。これらのラベルは、ラベル付けアプリにインポートされません。

サポートされる GroundTruth オブジェクト

 ビデオ ラベラー アプリイメージ ラベラー アプリ
データ ソースビデオ ファイル、イメージ シーケンス フォルダー、カスタム リーダーイメージ ファイル
ラベル定義RectangleLinePixelLabel、または Scene ラベル タイプRectangleLinePixelLabel、または Scene ラベル タイプ
ラベル データRectangleLinePixelLabel、または Scene ラベル タイプの timetableRectangleLinePixelLabel、または Scene ラベル タイプの table (timetable なし)

ROI (RectangleLinePixelLabel) または Scene ラベル カテゴリではないグラウンド トゥルース データを groundTruth オブジェクトに追加するには、CustomlabelType を使用するラベル定義を指定します。カスタム データは、ラベル付けアプリに読み込むときに表示されません。

オブジェクト関数

selectLabelsByGroupSelect ground truth labels by label group
selectLabelsByTypeSelect ground truth labels by label type
selectLabelsByNameSelect ground truth labels by label name
changeFilePathsChange file paths in ground truth data

すべて折りたたむ

イメージのコレクションからデータ ソースを作成します。

data = load('stopSignsAndCars.mat');
imageFilenames = data.stopSignsAndCars.imageFilename(1:2)
imageFilenames = 2×1 cell
    {'stopSignImages/image001.jpg'}
    {'stopSignImages/image002.jpg'}

imageFilenames = fullfile(toolboxdir('vision'),'visiondata',imageFilenames);
dataSource = groundTruthDataSource(imageFilenames);

グラウンド トゥルースを指定するために使用されるラベルを定義します。ラベル定義の table を作成するには、labelDefinitionCreatorを使用します。

ldc = labelDefinitionCreator();
addLabel(ldc,'stopSign',labelType.Rectangle);
addLabel(ldc,'carRear',labelType.Rectangle);
labelDefs = create(ldc)
labelDefs=2×5 table
        Name          Type       LabelColor     Group      Description
    ____________    _________    __________    ________    ___________

    {'stopSign'}    Rectangle    {0×0 char}    {'None'}       {' '}   
    {'carRear' }    Rectangle    {0×0 char}    {'None'}       {' '}   

四角形 ROI のラベル データを初期化します。

stopSignTruth = {[856   318    39    41];[445   523    52    54]};
carRearTruth = {[398   378   315   210];[332   633   691   287]};

ラベル データの table を構築します。

labelNames = {'stopSign';'carRear'};
labelData = table(stopSignTruth,carRearTruth,'VariableNames',labelNames)
labelData=2×2 table
      stopSign        carRear   
    ____________    ____________

    {1×4 double}    {1×4 double}
    {1×4 double}    {1×4 double}

グラウンド トゥルース オブジェクトを作成します。

gTruth = groundTruth(dataSource,labelDefs,labelData)
gTruth = 
  groundTruth with properties:

          DataSource: [1×1 groundTruthDataSource]
    LabelDefinitions: [2×5 table]
           LabelData: [2×2 table]

マークした車線を表すデータを格納する groundTruth オブジェクトを作成します。

イメージからデータ ソースを作成します。

dataSource = groundTruthDataSource({'stopSignTest.jpg'});

グラウンド トゥルースを指定するために使用されるラベルを定義します。ラベル定義の table を作成するには、labelDefinitionCreatorを使用します。

ldc = labelDefinitionCreator();
addLabel(ldc,'Lane',labelType.Line);
labelDefs = create(ldc);

イメージに 2 つの車線マーカーを割り当てます。

laneMarkerTruth = {[257 254;311 180] [327 183;338 205;374 250]};

ラベル データの table を構築します。

labelNames = {'Lane'};
labelData = table(laneMarkerTruth,'VariableNames',labelNames)
labelData=table
                Lane            
    ____________________________

    {2x2 double}    {3x2 double}

groundTruth オブジェクトを作成します。

gTruth = groundTruth(dataSource,labelDefs,labelData)
gTruth = 
  groundTruth with properties:

          DataSource: [1x1 groundTruthDataSource]
    LabelDefinitions: [1x5 table]
           LabelData: [1x1 table]

シーンの各部分を表すデータを格納する groundTruth オブジェクトを作成します。

データ ソースを作成します。

dataSource = groundTruthDataSource({'visionteam.jpg'});

ラベル定義の table を作成するには、labelDefinitionCreatorを使用します。ラベル 'Person''Background' を定義します。対応するラベルのタイプを PixelLabel として割り当てます。

ldc =labelDefinitionCreator();
addLabel(ldc,'Person',labelType.PixelLabel);
addLabel(ldc,'Background',labelType.PixelLabel);
labelDefs = create(ldc)             
labelDefs=2×6 table
         Name            Type       LabelColor    PixelLabelID     Group      Description
    ______________    __________    __________    ____________    ________    ___________

    {'Person'    }    PixelLabel    {0×0 char}       {[1]}        {'None'}       {' '}   
    {'Background'}    PixelLabel    {0×0 char}       {[2]}        {'None'}       {' '}   

イメージのピクセル ラベル データの位置を指定します。

dataFile = {'visionteamPixelLabels.png'}    
dataFile = 1×1 cell array
    {'visionteamPixelLabels.png'}

ピクセル ラベル データ用のラベル データの table を作成します。

labelData = table(dataFile,'VariableNames',{'PixelLabelData'})
labelData=table
           PixelLabelData        
    _____________________________

    {'visionteamPixelLabels.png'}

groundTruth オブジェクトを作成します。

gTruth = groundTruth(dataSource,labelDefs,labelData)
gTruth = 
  groundTruth with properties:

          DataSource: [1×1 groundTruthDataSource]
    LabelDefinitions: [2×6 table]
           LabelData: [1×1 table]

ビデオからデータ ソースを作成します。

videoName = 'caltech_cordova1.avi';
dataSource = groundTruthDataSource(videoName);

グラウンド トゥルースを指定するために使用されるラベルを定義します。ラベル定義の table を作成するには、labelDefinitionCreator オブジェクトを使用します。

ldc = labelDefinitionCreator();
addLabel(ldc,'Cars',labelType.Rectangle);
addLabel(ldc,'LaneMarkers',labelType.Line);
labelDefs = create(ldc)
labelDefs=2×5 table
         Name            Type       LabelColor     Group      Description
    _______________    _________    __________    ________    ___________

    {'Cars'       }    Rectangle    {0×0 char}    {'None'}       {' '}   
    {'LaneMarkers'}    Line         {0×0 char}    {'None'}       {' '}   

自動車と車線マーカーのラベル データを作成します。

numRows = numel(dataSource.TimeStamps);
carsTruth = cell(numRows,1);
laneMarkerTruth = cell(numRows,1);

2 つの自動車ラベルと 2 つの車線マーカーを最初のフレームに追加します。

carsTruth{1} = [182 186 31 22;404 191 53 34];
laneMarkerTruth{1} = {[257 254;311 180] [327 183;338 205;374 250]};

ラベル データの table を作成します。

labelNames = {'Cars','LaneMarkers'};
labelData = table(carsTruth,laneMarkerTruth,'VariableNames',labelNames);

groundTruth オブジェクトを作成します。このオブジェクトをラベル付けアプリにインポートするには、[開く]、[ラベルをインポート] メニューのオプションを選択します。

gTruth = groundTruth(dataSource,labelDefs,labelData)
gTruth = 
  groundTruth with properties:

          DataSource: [1×1 groundTruthDataSource]
    LabelDefinitions: [2×5 table]
           LabelData: [250×2 timetable]

ヒント

  • ビデオベースのデータ ソースの groundTruth オブジェクトは、オペレーティング システムのビデオ読み取り機能に依存します。ビデオ データ ソースを使用して作成された groundTruth オブジェクトは、そのオブジェクトを作成するために使用された同じプラットフォームでのみ整合性を維持します。プラットフォーム固有の groundTruth オブジェクトを作成するには、ビデオをイメージのシーケンスに変換します。

R2017a で導入