ResNet50 を用いたGrad-cam

5 views (last 30 days)
eri matsuyama
eri matsuyama on 26 Apr 2020
Commented: eri matsuyama on 26 Apr 2020
初めての質問投稿です。よろしくお願いいたします。
ドキュメンテーション(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の最終畳み込み層の指定に誤りがあるのだと思いますが、どの層を指定すれば良いのか、
お教え頂きたく思います。 よろしくお願いいたします。

Accepted Answer

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

Sign in to comment.

More Answers (0)

Categories

Find more on Just for fun in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!