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

7 views (last 30 days)
emiri kurasina
emiri kurasina on 18 Feb 2020
Answered: Kenta on 19 Feb 2020
Autoencoderについて勉強中です。
以下のページを参考にして手持ちの画像を学習させました。
ディープラーニング:畳み込みAuto Encoder(CAE)による画像異常検知と位置検出
評価用の画像を処理する段階でエラーが生じます。
拡張子がJPGであることが原因のようですがどのように直せば良いのでしょうか?
よろしくお願いいたします。
  4 Comments
Kenta
Kenta on 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 on 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])で実行が可能のようでしたが、
今回の手持ち画像に関してはなぜ実行できなかったのかがよくわかりません。
原因がわかりましたら教えていただけますと幸いです。

Sign in to comment.

Accepted Answer

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

More Answers (0)

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!