グレースケール画像をResNet50で分類すると,画像データの与え方でスコアが異なるのはなぜでしょうか?
9 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
グレースケール画像(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
le 16 Juil 2021
audsIm=read(audsTest);
audsImCell=audsIm.input;
audsIm=audsImCell{1};
read関数で読みだせます。imgがimg2になっていて、ちがう画像を参照している、などではないでしょうか?
もしかしたら、uint8(img2rgb)とするとよいかもしれません。試してもらえると嬉しいです。
Réponse acceptée
Kenta
le 20 Juil 2021
コメントのほう、ありがとうございました。解決したようでよかったです。念のため、回答欄に転記させてください。
audsIm=read(audsTest);
audsImCell=audsIm.input;
audsIm=audsImCell{1};
このように、データストアからはread関数で画像を読みだせます。imgがimg2になっていて、ちがう画像を参照している、などではないでしょうか?
もしかしたら、uint8(img2rgb)とするとよいかもしれません。こちらで試したところ、一方はdouble,もう一方は整数のuint8型で呼び出されていて、そこで小さな違いが生じたのかもしれません。
試してもらえると嬉しいです。
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Image Processing Toolbox dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!