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

9 vues (au cours des 30 derniers jours)
正樹 長谷川
正樹 長谷川 le 16 Juil 2021
Réponse apportée : Kenta le 20 Juil 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 commentaires
Kenta
Kenta le 16 Juil 2021
audsIm=read(audsTest);
audsImCell=audsIm.input;
audsIm=audsImCell{1};
read関数で読みだせます。imgがimg2になっていて、ちがう画像を参照している、などではないでしょうか?
もしかしたら、uint8(img2rgb)とするとよいかもしれません。試してもらえると嬉しいです。
正樹 長谷川
正樹 長谷川 le 19 Juil 2021
教えてくださった方法で,画像データの中身を確認したところ,
1)では整数値の画像データでしたが,2)ではimresizeのところで画像データが実数値になっておりました。
classifyのscore値が,似た様な数字でも微妙に違う結果になってしまった原因がやっと判りました。
どうもありがとうございました。本当に勉強になりました。

Connectez-vous pour commenter.

Réponse acceptée

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

Plus de réponses (0)

Catégories

En savoir plus sur Image Processing Toolbox dans Help Center et File Exchange

Produits


Version

R2020b

Community Treasure Hunt

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

Start Hunting!