ResNet50 を用いたGrad-cam

4 次查看(过去 30 天)
eri matsuyama
eri matsuyama 2020-4-26
初めての質問投稿です。よろしくお願いいたします。
ドキュメンテーション(Grad-CAMでの深層学習による判定理由の解明)を見ながら、勉強しています。
実際にGoogleNetで、独自の画像を使って試して見たところ、上手き、感激しました。
一方、RseNet18で実施したく、ResNet18を読み込みました。
そして、ソフトマックス層の名前と最終畳み込み層の名前を以下のように記述してみました。
softmaxName = 'prob';
convLayerName = 'res5b_relu'; 
しかし,以下のようなエラーになります。
エラー: dlfeval (line 41)
[varargout{1:nout}] = deep.internal.dlfeval(fun,varargin{:});
エラー: G_CAM (line 105)
[convMap, dScoresdMap] = dlfeval(@gradcam, dlnet, dlImg, softmaxName, convLayerName, classfn);
ResNetの最終畳み込み層の指定に誤りがあるのだと思いますが、どの層を指定すれば良いのか、
お教え頂きたく思います。 よろしくお願いいたします。

采纳的回答

Kenta
Kenta 2020-4-26
こんにちは、私の方では問題なく実行できました。
>ResNetの最終畳み込み層の指定に誤りがあるのだと思いますが、どの層を指定すれば良いのか
こちら、matsuyamaさまのコードで正しいと思います。
一度、添付したファイルを実行していただけませんか。
ちなみに、学習過程でもCAMを作成し、次第に「よい特徴を学習していく」ことを示したデモもあります。
以下のURLもよければ参考にしてみてください。よろしくお願いいたします。
  3 个评论
Kenta
Kenta 2020-4-26
返信ありがとうございます。解決し、よかったです。タイトルがresnet50になってますが、18との間違いですかね?ほかの理由としてはある行をそれ単体で実行してしまっている(「セクションを実行」をしなければならない)などが考えられます。理由は置いておいて、grad-camやカスタムループと呼ばれるものの実行は若干不規則かもしれません。また進めるにあたって問題あれば連絡ください。
eri matsuyama
eri matsuyama 2020-4-26
こちらこそ、ありがとうございます。
お察しの通り、行単体で実行している事が原因のような気がいたします。
他に怪しい箇所が見当たりませんので。アドバイスを頂けて、本当に助かりました。
タイトルの件ですが、当初resnet50で転移学習をしておりました。学習データ数が1000程ですので、resnst50より18の方が良いかと考えており...タイトルを間違えて
しまいました。申し訳ありません。今後ともよろしくお願いいたします。

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Just for fun 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!