質問: グレースケール画像をresnet50で分類すると,画像データの与え方でスコアが異なるのはなぜでしょうか? グレースケール画像(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の結果が異なってしまうケースもあります。 ご存じの方がいらしたら,ご教示お願いします。
回答: コメントのほう、ありがとうございました。解決したようでよかったです。念のため、回答欄に転記させてください。 audsim=read(audstest); audsimcell=audsim.input; audsim=audsimcell{1}; このように、データストアからはread関数で画像を読みだせます。imgがimg2になっていて、ちがう画像を参照している、などではないでしょうか? もしかしたら、uint8(img2rgb)とするとよいかもしれません。こちらで試したところ、一方はdouble,もう一方は整数のuint8型で呼び出されていて、そこで小さな違いが生じたのかもしれません。 試してもらえると嬉しいです。