セマンティックセグメンテーションのラベル設定
8 views (last 30 days)
Show older comments
kota kobayashi
on 30 Jul 2018
Commented: kota kobayashi
on 2 Aug 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); どのようにラベルを設定すべきか教えてください。
0 Comments
Accepted Answer
Kei Otsuka
on 31 Jul 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=緑
];
0 Comments
More Answers (1)
kota kobayashi
on 1 Aug 2018
Edited: kota kobayashi
on 1 Aug 2018
2 Comments
Kei Otsuka
on 1 Aug 2018
ご認識の通りで、イメージラベラーでラベリングした時の色と同じにしたければ、
cmapを合わせる必要があります。 イメージラベラーで利用されているカラーマップは
'lines'ですね。
c = colormap('lines');
imshow(reshape(c(1:10,:), [10 1 3]),[]);
See Also
Categories
Find more on テキスト ファイル in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!