セマンティックセグメンテーションのラベル設定
7 ビュー (過去 30 日間)
古いコメントを表示
深層学習を使用したセマンティック セグメンテーション 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 件のコメント
採用された回答
Kei Otsuka
2018 年 7 月 31 日
例題に含まれているサポート関数の内容を一度確認されると良いと思います。
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 件のコメント
その他の回答 (1 件)
kota kobayashi
2018 年 8 月 1 日
編集済み: kota kobayashi
2018 年 8 月 1 日
2 件のコメント
Kei Otsuka
2018 年 8 月 1 日
ご認識の通りで、イメージラベラーでラベリングした時の色と同じにしたければ、
cmapを合わせる必要があります。 イメージラベラーで利用されているカラーマップは
'lines'ですね。
c = colormap('lines');
imshow(reshape(c(1:10,:), [10 1 3]),[]);
参考
カテゴリ
Help Center および File Exchange で テキスト ファイル についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!