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

11
半半 OHS#6 CNN 半半半半半半 Grad-CAM 半半半 CNN 半半 半半半半半半半半半半半半半 半 、?~

Transcript of CNNの可視化手法Grad-CAMの紹介~CNNさん、あなたはどこを見ているの?~ |...

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

半谷

OHS#6CNN の可視化手法 Grad-CAM の紹介

~ CNN さん、あなたはどこを見ているの?~

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

• 今日においては、 Deep Learning は様々な場面で使われるようになった。• 特に、画像認識(言語処理や音声認識でも使われるが)では、画像からの特

徴抽出に Convolutional Neural Networks (CNN) が使われる。• 精度を上げるため、より深くより複雑な構造になってきている。

• 一方で、解釈するのはどんどん難しくなる。(なんでその答えにたどり着いたの?)

Introduction

Densely Connected Convolutional Networkshttps://arxiv.org/abs/1608.06993

Aggregated Residual Transformations for Deep Neural Networkshttps://arxiv.org/abs/1611.05431

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

• CNN がどんな情報に反応しているかを可視化する取組み

Understanding CNN

• CNN の解釈ができると嬉しいこと:• 失敗モードを知る(研究/開発者が正しい方向に改善するヒント)• ユーザの信頼を確立する(何を学んだかを確認できる)• 人を超えたときに、なぜそう考えたか教えてもらう

コレハピアノデスネ

Visualizing and Understanding Convolutional Networkshttps://arxiv.org/abs/1311.2901

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

• モデルの予測にとって重要な領域を可視化する技術• 予測クラスごとに関連の深い領域を確認できる• CNN ベースのモデルに幅広く適用できる( CNN+LSTM など)

Gradient-weighted Class Activation Mapping

Grad-CAM: Why did you say that? Visual Explanations from Deep Networks via Gradient-based Localizationhttps://arxiv.org/abs/1610.02391

CatDog

Grad-CAM Guided Grad-CAM( 左記二つのくみあわせ)

Guided Backprop(従来手法)

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

Gradient-weighted Class Activation Mapping

Grad-CAM: Why did you say that? Visual Explanations from Deep Networks via Gradient-based Localizationhttps://arxiv.org/abs/1610.02391

① 普通に推論

② 対象クラスのみ1 、他を 0 にして

勾配を逆伝播計算

③ 各チャネルで勾配の平均を取り、

重みとする

④ 特徴マップの値に重みをかけて足し合わ

せる

⑤ ピクセルレベルの

従来手法と組み合わせる

• 最終出力 y において、対象クラスのみ1/他を 0 とし、その信号を逆伝播させて、対象の特徴マップでの勾配を求める。これを各チャネルの重み付けに使う。

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

• それぞれの層で 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 Localizationhttps://arxiv.org/abs/1610.02391

class-discriminative+

high resolution

人が見ても納得できる

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

• 分類問題の失敗モードの分析例• 正解クラスと誤答クラスで、それぞれ Guided Grad-CAM による可視

Analyzing failure modes for image classification

Grad-CAM: Why did you say that? Visual Explanations from Deep Networks via Gradient-based Localizationhttps://arxiv.org/abs/1610.02391

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

• VQA など、 RNN 系を使っているモデルにも適用可能• 答えと可視化された位置が見事に対応している

Visual Question Answering

Grad-CAM: Why did you say that? Visual Explanations from Deep Networks via Gradient-based Localizationhttps://arxiv.org/abs/1610.02391

Red

Yellow

Yellow and Red

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

• なるべくモデルに変更を加えずに 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 はどう見ているか。

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

Summary

• CNN の重要性は増しており、その挙動を理解することには価値がある• デバッグ、人の信頼を得る、人が考え方を理解するのに有用

• 可視化手法の紹介• 予測クラスに寄与する領域を可視化する(⇒ Grad-CAM 、(粗いマッ

プ))• ピクセルレベルの可視化手法と組み合わせることで、画像中の何を見て

いるか理解を助けるような情報(図)が得られる。 (Guided Grad-CAM )

• CNN ベースであれば幅広いモデルに適用可能(モデル構造の変更や再学習も不要)

コレハピアノデスネ

・・・多少は気持ちが分かるようになったかな?

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

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%20Guided%20Backpropagation.ipynb