RGB 3 成分ピクセルとスカラー ピクセル

深層学習を使用したセマンティック セグメンテーションをもとに自分で用意したデータセットでセマンティックセグメンテーションを行おうとしたところ,以下のようなエラーが発生しました.解決法を教えてください.
エラー: trainingOptions (line 285)
'ValidationData' の値は無効です。 ピクセル ラベル イメージは、RGB 3 成分ピクセル ラベル ID ではなく、スカラー ピクセル ラベル ID をもっています。

12 commentaires

Kenta
Kenta le 12 Jan 2020
こちら、すでに解決しましたか?もし未解決であれば、データとコードを添付していただけると何かわかるかもしれません。
Kodai Sato
Kodai Sato le 12 Jan 2020
ラベル付きイメージとラベルIDを添付します
labelIDs = { ...
% "black"
[
000 000 000; ... % "black"
003 000 009; ...
014 007 000; ...
010 005 000; ...
001 000 002; ...
009 005 000; ...
001 000 000; ...
002 002 002; ...
000 000 002; ...
006 000 004; ...
000 003 000; ...
003 002 000; ...
026 019 000; ...
008 000 000; ...
];
% "orange"
[
255 085 000; ... % "orange"
255 084 004; ...
255 084 000; ...
253 087 003; ...
252 015 013; ...
247 092 000; ...
244 091 000; ...
248 088 002; ...
238 097 018; ...
255 086 001; ...
253 080 004; ...
244 088 003; ...
255 087 002; ...
254 085 000; ...
252 088 000; ...
254 086 000; ...
249 088 000; ...
220 108 000; ...
255 084 002; ...
255 081 005; ...
234 093 014; ...
236 090 000; ...
251 084 003; ...
254 085 002; ...
255 083 007; ...
249 087 006; ...
250 084 006; ...
249 089 001; ...
255 088 001; ...
244 087 000; ...
255 083 004; ...
255 081 002; ...
247 099 013; ...
228 095 000; ...
245 089 004; ...
255 178 004; ...
247 088 000; ...
246 147 004; ...
255 193 029; ...
252 082 004; ...
243 088 008; ...
244 077 000; ...
255 084 010; ...
252 086 000; ...
255 077 000; ...
244 089 007; ...
240 097 000; ...
255 086 000; ...
245 086 005; ...
244 098 000; ...
235 121 000; ...
255 089 003; ...
250 084 000; ...
249 165 014; ...
250 090 006; ...
250 088 007; ...
252 083 000; ...
255 083 000; ...
255 082 003; ...
255 086 003; ...
231 123 000; ...
251 085 000; ...
252 086 002; ...
255 082 009; ...
246 084 000; ...
246 085 007; ...
251 086 000; ...
253 084 000; ...
254 083 005; ...
];
%"lightblue"
[
000 168 255; ... %"lightblue"
000 169 255; ...
000 167 250; ...
028 158 210; ...
055 159 160; ...
034 162 211; ...
003 168 248; ...
000 176 255; ...
028 157 199; ...
026 161 229; ...
027 167 202; ...
004 166 249; ...
044 154 171; ...
000 169 254; ...
002 163 243; ...
002 168 252; ...
043 160 154; ...
000 173 251; ...
026 164 211; ...
013 161 233; ...
023 164 218; ...
061 149 197; ...
020 166 249; ...
000 173 245; ...
012 163 242; ...
002 168 254; ...
004 169 251; ...
000 171 255; ...
065 172 180; ...
012 166 236; ...
018 167 235; ...
010 168 255; ...
006 168 251; ...
020 174 246; ...
006 166 250; ...
062 181 224; ...
002 166 225; ...
000 170 245; ...
038 167 189; ...
024 160 236; ...
002 167 255; ...
007 165 255; ...
000 170 252; ...
050 162 186; ...
000 170 255; ...
035 163 226; ...
016 160 255; ...
011 163 246; ...
];
% "yellow"
[
255 240 001; ... % "yellow"
255 239 000; ...
255 238 011; ...
255 239 001; ...
255 240 005; ...
252 237 012; ...
255 238 004; ...
238 215 037; ...
252 241 000; ...
254 238 002; ...
249 240 013; ...
255 238 001; ...
255 237 002; ...
251 239 000; ...
255 240 048; ...
254 238 003; ...
250 246 033; ...
255 236 007; ...
255 238 000; ...
254 241 004; ...
250 239 009; ...
255 232 022; ...
239 221 059; ...
250 234 000; ...
251 240 011; ...
241 236 030; ...
250 238 016; ...
255 239 006; ...
255 240 011; ...
255 239 003; ...
252 241 003; ...
253 237 002; ...
254 241 002; ...
250 238 004; ...
255 237 001; ...
254 240 021; ...
253 241 000; ...
253 244 000; ...
253 242 002; ...
253 238 000; ...
255 240 000; ...
254 240 000; ...
254 237 007; ...
254 235 018; ...
254 240 019; ...
254 243 013; ...
254 239 000; ...
249 243 001; ...
252 243 000; ...
252 237 000; ...
252 242 000; ...
242 233 052; ...
243 241 032; ...
253 237 004; ...
253 237 001; ...
255 239 004; ...
245 243 002; ...
245 239 031; ...
243 243 021; ...
255 240 007; ...
253 240 003; ...
249 240 000; ...
255 239 008; ...
255 242 000; ...
253 239 003; ...
255 241 009; ...
246 242 020; ...
247 242 028; ...
254 229 000; ...
255 236 004; ...
251 237 006; ...
241 228 026; ...
];
};
Kenta
Kenta le 12 Jan 2020
添付をいただきありがとうございます。用いたコードも添付してもらえますか?また、label IDも上のような生データではなくて、.matファイルなど、こちらで扱いやすい形にしておいていただけると幸いです。
Kodai Sato
Kodai Sato le 12 Jan 2020
上のコードをそのまま使用していますので変更した部分のみ添付いたします
Kenta
Kenta le 12 Jan 2020
ちなみに、このラベル付けはMATLABのアプリか何かでされましたか?
あと、ラベル付き画像と、それの元の画像が必要ですよね。もちろんダミーの画像をこちらで作成することもできますが、できるだけ、そちらの実際にちかい状況を説明、再現していただけるとこちらはやりやすいです。
データも1枚だけではなくて、もう少しある方が再現性はあがると思います。またコードのほうも、例と同じなので、例を見てほしいという気持ちはわかるのですが、微妙に意図せず改変してしまっていて、それがエラーにつながるということもあると思います。
そのため、データやコードをできるだけ完全な形で添付していただけませんか?
また、例を走らせながら、同時に別のMATLABを起動させ、それらを見比べながら確認してみるとよいと思います。エラーの原因になっていそうなことなど、Kodai Satoさまの予想も教えていただけるとうれしいです。よろしくお願いします。
Kodai Sato
Kodai Sato le 12 Jan 2020
ラベル付けはphotoshopで行われております.
画像のほうですが13枚あり,圧縮しても容量を超えてしまい添付することが出来ませんでした.申し訳ありません.
Kenta
Kenta le 12 Jan 2020
Modifié(e) : Kenta le 12 Jan 2020
ああなるほど、photoshopでやったんですね、ありがとうございます。
それだと、一度、matlabのセグメンテーション用のアプリを使ってラベリングし、そこで得たデータで学習させてはいかがでしょうか。それだとそれ用のドキュメントもありますし、また大規模なデータ構築まではされていないようなので、いまのうちに方向転換するのも良いかもしれません。
Kodai Sato
Kodai Sato le 12 Jan 2020
お手数おかけして申し訳ありませんでした.
ご丁寧にありがとうございました.
原因としては,やはりphotoshopでラベル付けをしたことでしょうか?
Kenta
Kenta le 12 Jan 2020
Modifié(e) : Kenta le 12 Jan 2020
うーん、ちょっと状況がわからないのでなんともいえませんが、アプリでやったほうが、エラーになる確率は低そうです。matlabのラベリングアプリのほうが、多くの点で使いやすい気がするのでそっちでやってみてはどうかというところです。
時間があったらそっちでダミーでラベリングしてやってみます
Kodai Sato
Kodai Sato le 12 Jan 2020
ご丁寧にありがとうございました.
Kenta
Kenta le 12 Jan 2020
はい、またそちらでmatlabのアプリのほうを試されて、質問内容のほう、アップデートしていただけると幸いです。よろしくお願いいたします。
上が参考になると思います。
Kodai Sato
Kodai Sato le 15 Jan 2020
上のURLの例に添付されているサポート関数でリサイズするとスカラー ピクセル ラベル IDになるようです

Connectez-vous pour commenter.

 Réponse acceptée

Kenta
Kenta le 20 Jan 2020
Modifié(e) : Kenta le 20 Jan 2020

0 votes

こんにちは、訓練時のvalidationデータですが、RGB 3 成分ピクセル ラベル IDは受け付けますが、少なくとも私の試したデータでは、スカラーラベルIDは入らないようです。上のURLの補助関数自体ではなく、その中の操作の過程で、RGBラベルがスカラーラベルに変換されます。それをRGBラベルのままにすると動きました。trainNetwork関数も含めて実行できました。リサイズの補助関数とi_learningを添付します。i_learningのほうでは、imageSize=[360 480 3];と変更しただけです。
ただ、扱うデータなど、私の環境と微妙にちがうので、軽微なエラーを返すかもしれません。練習段階として、実行したいのであれば、ひとまず、optionsの'ValidationData',pximdsVal,...は削除して、全体感を見るほうが効率はよいかもしれません。
ちなみに、'ValidationData',pximdsVal,とすれば、検証データを入れ込めるというコードはどこを参考にしましたか?上のURLではvalidationdataは設定していなかったので、どこのページに書いてあったか教えてもらえますか?
while count<numel(pxds.Files)+1
% Read the pixel data.
% [C,info] = read(pxds);
C=imread(pxds.Files{count});
% Convert from categorical to uint8.
%L = uint8(C); %2018
% L = uint8(C{1}); %2019
L = uint8(C);
% Resize the data. Use 'nearest' interpolation to
% preserve label IDs.
L = imresize(L,[360 480],'nearest');
%L = imresize(L,[180 240],'nearest');
% Write the data to disk.
% [~, filename, ext] = fileparts(info.Filename);
name=pxds.Files{count};
name1=extractBefore(name,'label');
name2=extractAfter(name,'label');
name3=strcat(name1,'labelResized',name2);
imwrite(L,name3)
count=count+1;
end

2 commentaires

Kodai Sato
Kodai Sato le 20 Jan 2020
上のURLにある学習オプションの選択のコードをコピーしました
Kenta
Kenta le 20 Jan 2020
Modifié(e) : Kenta le 20 Jan 2020
リンクのほう、教えていただきありがとうございます。私の見ていたコードは同様の例でしたが、その記述はありませんでした。

Connectez-vous pour commenter.

Plus de réponses (1)

koki mori
koki mori le 21 Juin 2020
Modifié(e) : koki mori le 21 Juin 2020

0 votes

はじめまして、もし解決していたら申し訳ありません。
自分もセマンティックセグメンテーションのラベル付き画像を自作していてここで詰まっていたのでよければ参考にしてください。
原因としては他の回答者さんにもある通り、スカラーピクセル値でやっているのが問題でした。なのでグレースケール(スカラー値)を無理やりRGBスケールにしてあげることで解決しました。
以下にそのソースコードを載せておきますね。
rootFile = fullfile('C:\','Users','自分のユーザー名','OneDrive','デスクトップ');%画像データ保存場所
imDir = fullfile(rootFile,'imageLabel');%画像ディレクトリ
imds = imageDatastore(imDir);%グレースケール画像データストア(スカラー値画像)
for v = 1:1:173 %画像枚数
Y = readimage(imds,v); %イメージ読み込み
[G] = imsplit(Y); %グレースケールのピクセル値を取得
Y = cat(3,G,G,G); %ピクセル値を3次元行列として連結
s = num2str(v); %インクリメント変数Vを文字列に変換
str = [s,'.png']; %変換した文字列と拡張子文字列を連結
newstr = join(str);
imwrite(Y,newstr); %指定した文字列のイメージファイルの保存
end
上記のコードではRGBスケールに直した後、その枚数目の名前になるようになっているので注意してください。

Catégories

En savoir plus sur イメージ dans Centre d'aide et File Exchange

Produits

Version

R2019b

Community Treasure Hunt

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

Start Hunting!