Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
半谷
OHS#6
CNNの可視化手法 Grad-CAMの紹介
~CNNさん、あなたはどこを見ているの?~
• 今日においては、Deep Learningは様々な場面で使われるようになった。
• 特に、画像認識(言語処理や音声認識でも使われるが)では、画像からの特徴抽出
にConvolutional Neural Networks (CNN)が使われる。
• 精度を上げるため、より深くより複雑な構造になってきている。
• 一方で、解釈するのはどんどん難しくなる。
(なんでその答えにたどり着いたの?)
Introduction
Densely Connected Convolutional Networks
https://arxiv.org/abs/1608.06993
Aggregated Residual Transformations for Deep Neural Networks
https://arxiv.org/abs/1611.05431
• CNNがどんな情報に反応しているかを可視化する取組み
Understanding CNN
• CNNの解釈ができると嬉しいこと:
• 失敗モードを知る(研究/開発者が正しい方向に改善するヒント)
• ユーザの信頼を確立する(何を学んだかを確認できる)
• 人を超えたときに、なぜそう考えたか教えてもらう
コレハ
ピアノ
デスネ
Visualizing and Understanding Convolutional Networks
https://arxiv.org/abs/1311.2901
• モデルの予測にとって重要な領域を可視化する技術
• 予測クラスごとに関連の深い領域を確認できる
• CNNベースのモデルに幅広く適用できる(CNN+LSTMなど)
Gradient-weighted Class Activation Mapping
Grad-CAM: Why did you say that? Visual Explanations from Deep Networks via Gradient-based Localization
https://arxiv.org/abs/1610.02391
CatDog
Grad-CAM Guided Grad-CAM
(左記二つのくみあわせ)
Guided Backprop
(従来手法)
Gradient-weighted Class Activation Mapping
Grad-CAM: Why did you say that? Visual Explanations from Deep Networks via Gradient-based Localization
https://arxiv.org/abs/1610.02391
① 普通に推論 ② 対象クラスのみ1、
他を0にして勾配を
逆伝播計算
③ 各チャネルで勾配
の平均を取り、重みと
する
④ 特徴マップの値に
重みをかけて足し合わせる
⑤ ピクセルレベルの
従来手法と
組み合わせる
• 最終出力yにおいて、対象クラスのみ1/他を0とし、その信号を逆伝播させて、対象の
特徴マップでの勾配を求める。これを各チャネルの重み付けに使う。
• それぞれの層でGrad-CAMを可視化してみた例(上段)
• 一番深いConv+ReLUの出力が可視化に適している
• 深い=解像度が低いので、ピクセルレベルの可視化手法と組み合わせる(下段)
(Guided Grad-CAM: Guided Backpropagation + Grad-CAM)
Guided Grad-CAM
Grad-CAM: Why did you say that? Visual Explanations from Deep Networks via Gradient-based Localization
https://arxiv.org/abs/1610.02391
class-discriminative
+
high resolution
人が見ても
納得できる
• 分類問題の失敗モードの分析例
• 正解クラスと誤答クラスで、それぞれGuided Grad-CAMによる可視化
Analyzing failure modes for image classification
Grad-CAM: Why did you say that? Visual Explanations from Deep Networks via Gradient-based Localization
https://arxiv.org/abs/1610.02391
• VQAなど、RNN系を使っているモデルにも適用可能
• 答えと可視化された位置が見事に対応している
Visual Question Answering
Grad-CAM: Why did you say that? Visual Explanations from Deep Networks via Gradient-based Localization
https://arxiv.org/abs/1610.02391
Red
Yellow
Yellow
and Red
• なるべくモデルに変更を加えずにGrad-CAM, Guided Grad-CAMができないものか
Grad-CAM using Chainer framework
• yのgrad属性に対象クラスを1としたone hot vectorをセットし
retain_grad=Trueとして逆伝播
• 対象のFeature mapはモデルの順伝播計算(__call__)の中で
name属性を設定して、計算グラフを逆向きに辿っていってみつける
(診断用途で入出力を変えずに実現したいなと。)
• あとは対象のFeature mapのgrad属性に入っている勾配情報を
使って重みを算出し、data属性の情報を使ってGrad-CAMを計算する
チャネル毎の重み
Grad-CAMの計算
親戚の家の猫をAlexNetはどう見ているか。
Summary
• CNNの重要性は増しており、その挙動を理解することには価値がある
• デバッグ、人の信頼を得る、人が考え方を理解するのに有用
• 可視化手法の紹介
• 予測クラスに寄与する領域を可視化する(⇒ Grad-CAM、(粗いマップ))
• ピクセルレベルの可視化手法と組み合わせることで、画像中の何を見ているか
理解を助けるような情報(図)が得られる。(Guided Grad-CAM)
• CNNベースであれば幅広いモデルに適用可能
(モデル構造の変更や再学習も不要)
コレハ
ピアノ
デスネ
・・・多少は気持ちが分かるようになったかな?
Reference
論文
• 紹介させていただいた論文:
Grad-CAM: Why did you say that? Visual Explanations from Deep Networks via Gradient-
based Localization(https://arxiv.org/abs/1610.02391)
• Deconvolutionを使ったCNNの可視化:
Visualizing and Understanding Convolutional Networks(https://arxiv.org/abs/1311.2901)
• Guided Backpropagationの論文:
Striving for Simplicity: The All Convolutional Net(https://arxiv.org/abs/1412.6806)
実装関係
• Grad-CAM 著者らの公式実装:https://github.com/ramprs/grad-cam
• Grad-CAM Kerasでの実装:https://github.com/jacobgil/keras-grad-cam
• Guided BackpropのLasagne実装:
https://github.com/Lasagne/Recipes/blob/master/examples/Saliency%20Maps%20and%2
0Guided%20Backpropagation.ipynb

More Related Content

CNNの可視化手法Grad-CAMの紹介~CNNさん、あなたはどこを見ているの?~ | OHS勉強会#6