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

groundTruth

グラウンド トゥルース ラベルを保存するオブジェクト

説明

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

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

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

作成

説明

gTruth = groundTruth(dataSource,labelDefs,labelData) は、イメージ ラベラー アプリ、ビデオ ラベラー アプリ、およびグラウンド トゥルース ラベラー アプリにインポートできるグラウンド トゥルース ラベルを含むオブジェクトを返します。dataSourcelabelDefinitions、および labelData の入力でプロパティを設定します。ラベル定義は、ラベル、サブラベルおよび属性を記述します。ラベル データには、ラベルの識別情報、位置、およびタイムスタンプが含まれます。

プロパティ

すべて展開する

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

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

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

ラベル定義。最大 5 つの列を含むテーブルとして指定します。使用可能な列は Name、Type、PixelLabelID、Description、および Hierarchy です。

table には、ピクセル ラベルを使用する場合は PixelLabelID 列、サブラベルまたは属性を作成する場合は Hierarchy 列が含まれます。table に常に含まれる列は Name、Type、および Description です。ラベルの説明はオプションであるため、列は空にできます。

ラベル定義説明
Nameラベル カテゴリの名前を指定する文字ベクトル。
Typeラベル カテゴリのタイプを指定する labelType 列挙。
PixelLabelIDスカラー、列ベクトル、または整数値ラベル ID の M 行 3 列の行列。PixelLabelID は、ラベル カテゴリを表すために使用されるピクセル ラベル値を指定します。この値は、Type を labelType.PixelLabel に設定する場合は必須です。ピクセル ラベル ID の値は 0 ~ 255 の範囲でなければなりません。
Descriptionラベル カテゴリを表す文字ベクトル。説明ラベル定義はオプションです。
Hierarchyサブラベルと属性データを含む構造体。サブラベルまたは属性を作成すると、アプリによって階層列にデータが挿入されます。このラベル定義は、ビデオ ラベラー アプリおよびグラウンド トゥルース ラベラー アプリにのみ適用されます。ビデオ ラベラー入門およびGet Started with the Ground Truth Labeler (Automated Driving Toolbox)を参照してください。

たとえば、この定義 table には、carsskyvegetationroadSigns、および laneMarkers という 6 つのラベル カテゴリが含まれています。

メモ

属性とサブラベルは、ビデオ ラベラーおよびグラウンド トゥルース ラベラーでのみ使用できます。上記の例では、ラベルの 2 つが属性を含んでいます。そのため、すべてのラベルについて 1 つの Hierarchy 列が作成されています。

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

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

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

各 ROI とシーン ラベルのラベル データ。イメージ コレクションの場合は table、ビデオまたはイメージ シーケンスの場合は timetable として指定します。table または timetable の各列には単一のラベル カテゴリのラベルが保持されます。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 ラベル タイプRectanglePixelLabel または Scene ラベル タイプ
ラベル データRectangleLinePixelLabel、または Scene ラベル タイプの timetableRectanglePixelLabel、または Scene ラベル タイプの table (timetable なし)

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

オブジェクト関数

selectLabelsByGroupSelect ground truth data for set of labels by group
selectLabelsByTypeSelect ground truth data for a set of labels by type
selectLabelsByNameSelect ground truth data by name
changeFilePathsChange file paths in data source and pixel label data of ground truth object

すべて折りたたむ

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

data = load('stopSignsAndCars.mat');
imageFilenames = data.stopSignsAndCars.imageFilename(1:2)
imageFilenames = 2x1 cell array
    {'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×4 table
       Name         Type       Group     Description
    __________    _________    ______    ___________

    'stopSign'    Rectangle    'None'        ' '    
    'carRear'     Rectangle    '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   
    ____________    ____________

    [1x4 double]    [1x4 double]
    [1x4 double]    [1x4 double]

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

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

          DataSource: [1x1 groundTruthDataSource]
    LabelDefinitions: [2x4 table]
           LabelData: [2x2 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=1×1 table
                Lane            
    ____________________________

    [2x2 double]    [3x2 double]

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

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

          DataSource: [1x1 groundTruthDataSource]
    LabelDefinitions: [1x4 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×5 table
        Name           Type       PixelLabelID    Group     Description
    ____________    __________    ____________    ______    ___________

    'Person'        PixelLabel        [1]         'None'        ' '    
    'Background'    PixelLabel        [2]         'None'        ' '    

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

dataFile = {'pixelLabeledVisionTeam.jpg'}    
dataFile = 1x1 cell array
    {'pixelLabeledVisionTeam.jpg'}

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

labelData = table(dataFile,'VariableNames',{'PixelLabelData'})
labelData=1×1 table
           PixelLabelData       
    ____________________________

    'pixelLabeledVisionTeam.jpg'

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

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

          DataSource: [1x1 groundTruthDataSource]
    LabelDefinitions: [2x5 table]
           LabelData: [1x1 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×4 table
        Name           Type       Group     Description
    _____________    _________    ______    ___________

    'Cars'           Rectangle    'None'        ' '    
    'LaneMarkers'    Line         '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: [1x1 groundTruthDataSource]
    LabelDefinitions: [2x4 table]
           LabelData: [250x2 timetable]

ヒント

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

R2017a で導入