ラベラー アプリにおけるエクスポートしたピクセル ラベルの保存方法
イメージ ラベラー、ビデオ ラベラー、またはグラウンド トゥルース ラベラー (Automated Driving Toolbox) (Automated Driving Toolbox™ が必要) アプリでピクセル ラベルを作成してエクスポートすると、2 セットのデータが保存されます。
PixelLabelData
という名前のフォルダー。このフォルダーには、ピクセル ラベル情報の PNG ファイルが含まれます。これらのラベルは、インデックス値として符号化されています。ピクセル ラベル データとその他のラベル データを含む MAT ファイル。このデータは
groundTruth
オブジェクトに保存されるか、またはグラウンド トゥルース ラベラー アプリを使用している場合はgroundTruthMultisignal
(Automated Driving Toolbox) オブジェクトに保存されます。ピクセル ラベル データの場合、このオブジェクトは、イメージ/ビデオ フレームと PNG ファイル との間の対応関係も保存しています。
PixelLabelData
フォルダーに含まれる PNG ファイルは、categorical 行列として保存されています。この categorical
行列には、各カテゴリに割り当てられた値が含まれています。categorical はデータ型です。categorical 行列は、非数値データを効率的に保存して操作するのに適しています。また、意味のわかりやすい名前を値に維持することもできます。これらの行列は、セマンティック セグメンテーション グラウンド トゥルースの自然な表現であり、各ピクセルは事前定義されたラベルのカテゴリの 1 つです。
ピクセル ラベル データ フォルダーの場所
グラウンド トゥルース オブジェクトは、ピクセル ラベル データ フォルダーのフォルダー パスと名前を格納します。groundTruth
オブジェクトの LabelData
プロパティ、または groundTruthMultisignal
オブジェクトの ROILabelData
プロパティには、'PixelLabelData'
列の情報が含まれます。ピクセル データ ファイルの場所を変更する場合は、グラウンド トゥルース オブジェクトに含まれる関連情報も更新しなければなりません。情報の更新には、関数 changeFilePaths
を使用できます。
エクスポートしたピクセル ラベル データの表示
ラベラー アプリは、各カテゴリを表す uint8
値と共に、セマンティック セグメンテーション グラウンド トゥルースを可逆圧縮の PNG ファイルとして保存します。アプリでは、関数 categorical
を使用して、uint8
値をカテゴリに関連付けます。ピクセル データを表示するには、イメージにカテゴリを重ね合わせるか、ラベル付けされたイメージからデータストアを作成します。
イメージにカテゴリを重ね合わせて、エクスポートしたピクセル ラベル データを表示する
関数 imread
を、関数 categorical
および labeloverlay
と共に使用します。categorical 行列からピクセル データを直接表示することはできません。エクスポートしたピクセル ラベル データの表示を参照してください。
ラベル付けされたイメージのデータストアからエクスポートしたピクセル ラベル データの表示
関数 pixelLabelDatastore
を使用して、ラベル付けされた一連のイメージからデータストアを作成します。関数 read
を使用して、ピクセル ラベル データを読み取ります。ピクセル ラベル データの読み取りと表示を参照してください。
例
エクスポートしたピクセル ラベル データの表示
イメージと、ラベラー アプリからエクスポートした対応するピクセル ラベル データを読み取ります。
visiondatadir = fullfile(toolboxdir('vision'),'visiondata'); buildingImage = imread(fullfile(visiondatadir,'building','building1.JPG')); buildingLabels = imread(fullfile(visiondatadir,'buildingPixelLabels','Label_1.png'));
buildingLabels
で、各ピクセル値のカテゴリを定義します。
labelIDs = [1,2,3,4]; labelcats = ["sky" "grass" "building" "sidewalk"];
イメージと定義を使用して categorical 行列を作成します。
buildingLabelCats = categorical(buildingLabels,labelIDs,labelcats);
イメージにカテゴリを重ねて表示します。
figure imshow(labeloverlay(buildingImage,buildingLabelCats))
ピクセル ラベル データの読み取りと表示
ピクセル ラベル データをイメージに重ね合わせます。
イメージとピクセル ラベル データの場所を設定します。
dataDir = fullfile(toolboxdir('vision'),'visiondata'); imDir = fullfile(dataDir,'building'); pxDir = fullfile(dataDir,'buildingPixelLabels');
イメージ データストアを作成します。
imds = imageDatastore(imDir);
ピクセル ラベル データストアを作成します。
classNames = ["sky" "grass" "building" "sidewalk"]; pixelLabelID = [1 2 3 4]; pxds = pixelLabelDatastore(pxDir,classNames,pixelLabelID);
イメージとピクセル ラベル データを読み取ります。read(pxds)
は、categorical 行列 C
を返します。この行列の要素 C(i,j) は、位置 l(i,j) のピクセルに割り当てられたカテゴリカル ラベルです。
I = read(imds); C = read(pxds);
C
のラベル カテゴリを表示します。
categories(C{1})
ans = 4x1 cell
{'sky' }
{'grass' }
{'building'}
{'sidewalk'}
ピクセル ラベル データをイメージに重ね合わせて表示します。
B = labeloverlay(I,C{1}); figure imshow(B)
参考
アプリ
- イメージ ラベラー | ビデオ ラベラー | グラウンド トゥルース ラベラー (Automated Driving Toolbox)
オブジェクト
groundTruth
|groundTruthMultisignal
(Automated Driving Toolbox) |pixelLabelImageDatastore
関数
changeFilePaths (groundTruthMultisignal)
(Automated Driving Toolbox) |changeFilePaths (groundTruth)