グレースケール画像をResNet50で分類すると,画像データの与え方でスコアが異なるのはなぜでしょうか?
9 次查看(过去 30 天)
显示 更早的评论
グレースケール画像(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 个评论
Kenta
2021-7-16
audsIm=read(audsTest);
audsImCell=audsIm.input;
audsIm=audsImCell{1};
read関数で読みだせます。imgがimg2になっていて、ちがう画像を参照している、などではないでしょうか?
もしかしたら、uint8(img2rgb)とするとよいかもしれません。試してもらえると嬉しいです。
采纳的回答
Kenta
2021-7-20
コメントのほう、ありがとうございました。解決したようでよかったです。念のため、回答欄に転記させてください。
audsIm=read(audsTest);
audsImCell=audsIm.input;
audsIm=audsImCell{1};
このように、データストアからはread関数で画像を読みだせます。imgがimg2になっていて、ちがう画像を参照している、などではないでしょうか?
もしかしたら、uint8(img2rgb)とするとよいかもしれません。こちらで試したところ、一方はdouble,もう一方は整数のuint8型で呼び出されていて、そこで小さな違いが生じたのかもしれません。
試してもらえると嬉しいです。
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Processing Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!