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

5次浏览(最近30天)
正樹 長谷川
正樹 長谷川 2021年7月16日
回答: 2021年7月20日
グレースケール画像(testimagesフォルダに格納)を,ResNet50による分類のために以下の二つの方法で与えたとき,スコアが異なりました。
1)拡張データストアでRGB化した場合の
imdsTest = imageDatastore(“testimages”)
audsTest = augmentedImageDatastore (224 [224], imdsTest,“ColorPreprocessing”、“gray2rgb”);
[PredTest, scoresTest] =(网络,audsTest)进行分类;
この結果で1番目の画像に対する予測結果の各クラスのスコア(scoresTest)の値と,
2)プログラムで画像をグレースケールからRGB化した時の
imdsTest = imageDatastore(“testimages”);
fileNumber = 1;
img = readimage (imdsTest fileNumber);
[xrow, xcol] =大小(img);
img2rgb = 0 (xrow xcol 3);
因为我= 1:3
img2rgb (:,:, i) = img2;
结束
img2rgb = imresize (img2rgb (224 224));
[PredTest, scoresTest] =(网络,img2rgb)进行分类;
この結果での各クラスのスコア(scoresTest)の値
とが,同じでないのですが何故でしょうか吗?画像によってはPredTestの結果が異なってしまうケースもあります。
ご存じの方がいらしたら,ご教示お願いします。
4评论
正樹 長谷川
正樹 長谷川 2021年7月19日
教えてくださった方法で,画像データの中身を確認したところ,
1)では整数値の画像データでしたが,2)ではimresizeのところで画像データが実数値になっておりました。
分类の得分値が,似た様な数字でも微妙に違う結果になってしまった原因がやっと判りました。
どうもありがとうございました。本当に勉強になりました。

登录评论。

接受的答案

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

更多的答案(0)

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!