セマンティックセグメンテーションのラベル設定

6 visualizzazioni (ultimi 30 giorni)
kota kobayashi
kota kobayashi il 30 Lug 2018
Commentato: kota kobayashi il 2 Ago 2018
深層学習を使用したセマンティック セグメンテーション https://jp.mathworks.com/help/vision/examples/semantic-segmentation-using-deep-learning.html を参考に、自分で設定したクラスにラベルIDを設定しようとしていますが、うまくいきません。そこで classes=["sea","land","sky"] labelIDs = [1 2 3]; (カラーマップはcmap = [ 0 0 0 0 0 20 0 0 40 ]) とするとうまくいきますが、これでは、セマンティックセグメンテーションさせたときの色とカラーマップを対応させることができません。 例を参考に、
classes = [
"sea"
"land"
"sky"
];
labelIDs = {...
[
000 000 020; ...
]
[
000 000 040; ...
]
[
000 000 060; ...
]
};
などと設定して実行すると以下のエラーがでます。 位置 1 のインデックスが配列範囲を超えています。
エラー: images.internal.labeloverlayalgo (line 13) colormap = [colormap(1,:);colormap];
エラー: labeloverlay (line 95) B = images.internal.labeloverlayalgo(A,L,cmap,alpha,includeList);
エラー: DataCheck (line 28) B = labeloverlay(I,C); どのようにラベルを設定すべきか教えてください。

Risposta accettata

Kei Otsuka
Kei Otsuka il 31 Lug 2018
例題に含まれているサポート関数の内容を一度確認されると良いと思います。
CamVidデータセットではラベル画像がRGBカラー3値で与えられているため、
ラベルIDを以下のように3値で指定しています。
function labelIDs = camvidPixelLabelIDs()
% "Sky"
[
128 128 128; ... % "Sky"
]
.
.
一方、imageLabeler等を利用して作成したラベル画像はグレースケールであるため、
3値を指定してしまうとエラーとなります。
従いまして、ラベルIDは利用するラベル画像にあわせて指定して頂き、
そのIDに該当する色情報はcmapに定義して利用します。
一例として、"sky"と"Building"の2クラスが存在したとして、
それぞれのピクセルラベルの値が"1","2"であり、セグメンテーション結果を
"赤"、"緑"としたい場合は以下のように指定します。
classes = [
"Sky"
"Building"
];
% 該当するラベル画像の値
labelIDs = cell(2,1);
labelIDs{1,1} = 1;
labelIDs{2,1} = 2;
% 対応する色
cmap = [
128 0 0 % Sky=赤
0 128 0 % Building=緑
];

Più risposte (1)

kota kobayashi
kota kobayashi il 1 Ago 2018
Modificato: kota kobayashi il 1 Ago 2018
何度もすいません。 テスト画像に、以下のコードでセグメンテーションさせるとき、
I = read(imdsTest);
C = _semanticseg(I, net);_
B = labeloverlay(I, C);
cmap = camvidColorMap;
figure
imshow(B)
pixelLabelColorbar(cmap,classes);
イメージラベラーでラベリングしたときの色とラベルが対応するように塗分けられるという認識で合っていますか?だとすると、cmapで設定する値は、イメージラベラーで使われている色のRGB値に合わせる必要があるということになりますが。
  2 Commenti
Kei Otsuka
Kei Otsuka il 1 Ago 2018
ご認識の通りで、イメージラベラーでラベリングした時の色と同じにしたければ、
cmapを合わせる必要があります。 イメージラベラーで利用されているカラーマップは
'lines'ですね。
c = colormap('lines');
imshow(reshape(c(1:10,:), [10 1 3]),[])
kota kobayashi
kota kobayashi il 2 Ago 2018
ありがとうございます!!

Accedi per commentare.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!