グレースケール画像を​ResNet50で分​類すると,画像データ​の与え方でスコアが異​なるのはなぜでしょう​か?

13 Ansichten (letzte 30 Tage)
正樹 長谷川
正樹 長谷川 am 16 Jul. 2021
Beantwortet: Kenta am 20 Jul. 2021
グレースケール画像(testimagesフォルダに格納)を,ResNet50による分類のために以下の二つの方法で与えたとき,スコアが異なりました。
1)拡張データストアでRGB化した場合の
imdsTest=imageDatastore('testimages')
audsTest=augmentedImageDatastore([224 224],imdsTest,"ColorPreprocessing","gray2rgb");
[PredTest, scoresTest]=classify(net,audsTest);
この結果で1番目の画像に対する予測結果の各クラスのスコア(scoresTest)の値と,
2)プログラムで画像をグレースケールからRGB化した時の
imdsTest=imageDatastore("testimages");
fileNumber=1;
img=readimage(imdsTest,fileNumber);
[xrow,xcol]=size(img);
img2rgb=zeros(xrow,xcol,3);
for i=1:3
img2rgb(:,:,i)=img2;
end
img2rgb=imresize(img2rgb,[224 224]);
[PredTest, scoresTest]=classify(net,img2rgb);
この結果での各クラスのスコア(scoresTest)の値
とが,同じでないのですが何故でしょうか?画像によってはPredTestの結果が異なってしまうケースもあります。
ご存じの方がいらしたら,ご教示お願いします。
  4 Kommentare
Kenta
Kenta am 16 Jul. 2021
audsIm=read(audsTest);
audsImCell=audsIm.input;
audsIm=audsImCell{1};
read関数で読みだせます。imgがimg2になっていて、ちがう画像を参照している、などではないでしょうか?
もしかしたら、uint8(img2rgb)とするとよいかもしれません。試してもらえると嬉しいです。
正樹 長谷川
正樹 長谷川 am 19 Jul. 2021
教えてくださった方法で,画像データの中身を確認したところ,
1)では整数値の画像データでしたが,2)ではimresizeのところで画像データが実数値になっておりました。
classifyのscore値が,似た様な数字でも微妙に違う結果になってしまった原因がやっと判りました。
どうもありがとうございました。本当に勉強になりました。

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Kenta
Kenta am 20 Jul. 2021
コメントのほう、ありがとうございました。解決したようでよかったです。念のため、回答欄に転記させてください。
audsIm=read(audsTest);
audsImCell=audsIm.input;
audsIm=audsImCell{1};
このように、データストアからはread関数で画像を読みだせます。imgがimg2になっていて、ちがう画像を参照している、などではないでしょうか?
もしかしたら、uint8(img2rgb)とするとよいかもしれません。こちらで試したところ、一方はdouble,もう一方は整数のuint8型で呼び出されていて、そこで小さな違いが生じたのかもしれません。
試してもらえると嬉しいです。

Weitere Antworten (0)

Kategorien

Mehr zu イメージを使用した深層学習 finden Sie in Help Center und File Exchange

Produkte


Version

R2020b

Community Treasure Hunt

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

Start Hunting!