Autoencoderを使用した異常検知について

Autoencoderについて勉強中です。
以下のページを参考にして手持ちの画像を学習させました。
ディープラーニング:畳み込みAuto Encoder(CAE)による画像異常検知と位置検出
評価用の画像を処理する段階でエラーが生じます。
拡張子がJPGであることが原因のようですがどのように直せば良いのでしょうか?
よろしくお願いいたします。

4 Kommentare

Kenta
Kenta am 18 Feb. 2020
すいません、ちなみにどの行を実行したらどのようなエラーを返しますか。
emiri kurasina
emiri kurasina am 19 Feb. 2020
返信ありがとうございます。
以下コードにて次のようなエラーが生じます。
% テスト画像の枚数分処理を行う
for nn=1:numel(imdsTest.Files)
% 大規模画像のためにブロック単位で処理していく
I_big = read(imdsTest);
fun = @(block_struct) predict(net,block_struct.data);
Predicted_big = uint8(blockproc(I_big,BlockSize,fun));
% 画像を統合していく
I_All(:,:,:,nn) = I_big;
Predicted_All(:,:,:,nn) = Predicted_big;
% 各入力画像と出力画像を並べて表示する
figure,imshowpair(I_big,Predicted_big,'montage');shg
end
ユーザー指定の関数ハンドル FUN を評価中に BLOCKPROC でエラーが発生しました。
ur_output = blockprocFunDispatcher(fun,block_struct,trim_border);
エラー: blockproc (line 249)
result_image = blockprocInMemory(source,fun,options);
原因:
不正な入力サイズです。入力イメージのサイズは [240 256 3] でなければなりません。
サンプルプログラムに入っている(my_bigimage_Segnet.asv)にTIFF以外の拡張子は読み込みに対応していないとありました。
どのようにすると実行できますでしょうか?
Kenta
Kenta am 19 Feb. 2020
こんにちは、ご返信ありがとうございます。
ご説明いただき、ありがとうございました。おかげで状況がより鮮明にわかりました。
画像に相当する変数 I_bigは、RGBチャンネルを有する3チャンネルの画像ですか?その場合、
少なくとも、このエラーのいっていることは、画像サイズは縦240横256チャンネル数3でないといけないが
I_bigは他のサイズになっているということと思います。
I_big = imresize(read(imdsTest),[240 256]);
とすれば、ひとまず今回のエラーは回避できそうです。
「サンプルプログラムに入っている(my_bigimage_Segnet.asv)にTIFF以外の拡張子は読み込みに対応していないとありました。どのようにすると実行できますでしょうか?」
に関しては、こちらのサンプルファイルを実行していないのであまり具体的に状況がイメージできていません。また時間があればこちらでも見てみます。よろしくお願いいたします。
emiri kurasina
emiri kurasina am 19 Feb. 2020
ありがとうございます。
教えていただいた部分に加え、Imgsizeの部分も縦240横256に直すと実行できました。
しかし、本来のサイズである縦3246横2448で実行を行えるのが理想でした。
%% 学習したネットワークで推論する
Imgsize = [3246 2448];
BlockSize = [240 256];
MxN = Imgsize./BlockSize;
% 変数の準備
I_All = uint8(zeros(Imgsize(1),Imgsize(2),3,numel(imdsTest.Files)));
Predicted_All = uint8(zeros(Imgsize(1),Imgsize(2),3,numel(imdsTest.Files)));
I_big =uint8(zeros(Imgsize(1),Imgsize(2),3));
Predicted_big =uint8(zeros(3246,2448,3));
サンプルのコードでは縦720横1280(Imgsize = [720 1280])で実行が可能のようでしたが、
今回の手持ち画像に関してはなぜ実行できなかったのかがよくわかりません。
原因がわかりましたら教えていただけますと幸いです。

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Kenta
Kenta am 19 Feb. 2020

1 Stimme

こんにちは、「本来のサイズである縦3246横2448で実行を行えるのが理想でした」とのことでしたので、こちらでそのサイズでも対応できるように変更しました。添付のファイルをご確認お願い致します。
こちらのデータはうまくいきましたが、そちらのデータで実行すれば、軽微なエラーを返すかもしれません。
手持ちの画像に対しては、うまく、blocksizeなどの変数を適宜変更する必要があって、そこでエラーを返したものと思われます。ブロックに分割するので、分割した画像のサイズが整数になるようチェックしたりする必要があって、そこでエラーを返した可能性もあります。いくつかクリアすべき条件があって、1つずつコードを確認していただくのがはやいかもしれません。またTIFF以外の拡張子でもうまく指定すれば可能と思います。

Weitere Antworten (0)

Kategorien

Mehr zu Deep Learning Toolbox finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2019b

Gefragt:

am 18 Feb. 2020

Beantwortet:

am 19 Feb. 2020

Community Treasure Hunt

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

Start Hunting!