Grad-CAMを用いたVGG16モデルの判断依拠の可視化

1.背景・目的

AIのホワイトボックス化という点で、判断依拠の可視化は非常に重要で、Grad-CAMなどの手法が有名です。
今回、研究の仮説立案のフェーズで研究者をサポートするという使い方ができないかトライしてみました。
最近、6世代マツダ車のアテンザとアクセラとデミオが街中で見かけるようになりましたが。この区別がしづらいなと思ったので、これをうまく分類できる特徴は何なのか?という問題に対してGrad-CAMを適用し、仮説立案できるか確認しました。

2.環境

Ubuntu20.04.4 LTS
メモリ:8GB
CPU:Intel® Core™ i5-9300H CPU @ 2.40GHz × 8
GPU:NVIDIA Corporation TU117M [GeForce GTX 1650 Mobile / Max-Q]
TensorFlow:2.6.0
Keras:2.6.0
CUDA;11.2
cuDNN:8.1.1

3.本題

3.1.準備

3.1.1画像収集

Googleの画像検索結果を回収するのに便利なツールgoogle_images_downloadを用いて収集。
導入については下記が参考になりました。
【最新】Google画像検索を保存するPythonライブラリの使い方&ChromeDriverをubuntuで使う
注意点:いろいろなサイトではpipでインストールできるとしていますが、pypiに登録されているパッケージが古いため、gitからソースを入手&インストールする必要があります。
うまくいかないときは下記のようなメッセージが出ます。

googleimagesdownload --keywords "アクセラ" -l 100 --chromedriver ./chromedriver 
Item no.: 1 --> Item name = \u30a2\u30af\u30bb\u30e9
Evaluating...
Starting Download...


Unfortunately all 100 could not be downloaded because some images were not downloadable. 0 is all we got for this search filter!

Errors: 0


Everything downloaded!
Total errors: 0
Total time taken: 0.7263548374176025 Seconds

うまく動けば下記のようになります。

Item no.: 1 --> Item name = \u30a2\u30af\u30bb\u30e92015
Evaluating...
Starting Download...
Completed Image ====> 1.10251027_201508a.jpg
Completed Image ====> 2.10251026_201508c.jpg
Completed Image ====> 3.10251026_201508g.jpg
...
Errors: 0


Everything downloaded!
Total errors: 0
Total time taken: 20.0814106464386 Seconds

こんな感じで、収集していきます。

3.1.2整形

別の世代や内装の画像は不要なので、削除していきます。
また、紛らわしい画像(アクセラのリアをアテンザっぽくするパーツ)とかもあるので、削除していきます。
拡張子がpngとjpgとjpegといろいろあるので、jpgに変換しておきます。
ここらへんは手を汚さなくてはならないため、一番面倒です。

3.2.転移学習

VGG16を用いたモデルは多々ありますが、下記のサイトが結構汎用性が高いモデルを公開してくれています。
VGG16を転移学習させて「まどか☆マギカ」のキャラを見分ける

画像を学習用、検証用に7:3くらいで分けて、学習を開始します。
学習結果は下記のような感じ。
検証用の精度は83%。もう少し上がってほしいですが、ひとまずこのモデルを使っていきます。

3.3.可視化

TensorFlow+Kerasを用いたGrad-CAMのモデルは下記のサイトで紹介してくれています。
kerasでGrad-CAM 自分で作ったモデルで
TensorFlowのバージョンが上がると、Kerasやgradientsの呼び出し方が変わるので、適宜修正してください。

4.結果・考察

左側の3×3の画像群が入力画像、右側の画像群がGrad-CAMの結果です。
画像の上部分のタイトルのactが実際の分類、predが予測した分類となっており、正しく分類できています。
Grad-CAMの結果について、赤〜青に色分けされており、赤になるほど予測結果を出力する上で寄与度が高かった入力情報を示しています。
アテンザとデミオのフロントグリル部分が赤くなっており、ナンバープレートの位置関係が依拠ということがわかります。
また、リアのハッチバックについては、アクセラが凹凸があり、デミオにはないことが依拠ということがわかります。
気になるのは、アクセラのフロント部分で、ヘッドライトとフォグランプの間が依拠となっています。フロントからアクセラとデミオを判断するためには、フォグランプの形状やヘッドライトとの距離など、結構分かりづらい要素が判断依拠になっている可能性がありますね。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です