[DeepLearning2] AIは何を見て評価しているのか?

投稿日:

更新日:

カテゴリ:

AIの味わい – Kerasを使った画像の分類の続きです。

AIは画像を読み込み、猫の細かい種類まで判定してくれました。では、何を見てそう評価したんでしょうか。

AIはブラックボックスですので、解釈できないと思ってましたが、ニューラルネットワークはどう構成されたかは分からないかもしれませんが、投入した特徴量の重みは確認できるみたいです。

まず結論として、猫と犬はの次のように見られ、赤やオレンジ、黄色のような暖色部分は評価されたところのようです。

赤はどうなのかが分かりませんが、顔部分に黄色が集中していることがよく分かりますね!顔見て判断しているということでしょうか。

このような画像を「クラス活性化マップ」もしくは「ヒートマップ」というそうです。

これは正しい例ですが、モデルを作る時に、このような手法を用いてちゃんと正しい部分を評価されているかどうかを確認できるとのことです。

ポイント

ポイントは以下のところになるはずです。

    explainer = GradCAM()
    model = tf.keras.applications.vgg16.VGG16(weights='imagenet',
                                              include_top=True)
    grid = explainer.explain(data, model, 'block5_conv3', index)
    explainer.save(grid, '.', name + 'grad_cam.png')
    display_images([each_path, name + 'grad_cam.png'])

ここのモデルを注目すると、前回の「ResNet50」から「VGG16」に変わりました。これを「ResNet50」に戻してみると、次のようなエラーになります。

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[14], line 24
     20 # model = tf.keras.applications.vgg16.VGG16(weights='imagenet',
     21 #                                           include_top=True)
     22 model = tf.keras.applications.resnet50.ResNet50()
---> 24 grid = explainer.explain(data, model, 'block5_conv3', index)
     25 explainer.save(grid, '.', name + 'grad_cam.png')
     26 display_images([each_path, name + 'grad_cam.png'])

    ...以下略...

ふむふむ、、説明できるモデルと説明できないモデルがあったりするのかな?!とりあえずここらへんにしておきましょう。

トラブルシューティング

上のスクショは「ディープラーニング実践ガイド」のソース「Practical-Deep-Learning-Book」の「code/chapter-2」配下で「2-colab-what-does-my-neural-network-think.ipynb」を実行した結果です。

上記jupyterファイルのリンクを辿っていくと、Githubで直接実行結果を確認できます。

ローカルで実行する時にいくつかの問題を紹介します。

  • エラー:
    ERROR: Could not find a version that satisfies the requirement tensorflow-gpu==2.0.0 (from versions: 2.12.0)
    ERROR: No matching distribution found for tensorflow-gpu==2.0.0

    解決策:
    ソースの冒頭には次の2行ありました。

    !pip install tensorflow-gpu==2.0.0
    !pip install tf-explain==0.1.0

    TensorFlowの公式でUse a GPUを見ると、特にtensorflow-gpuのインストールが見つからず、このモジュールのインストールは不要になったと思われます。実際そこを飛ばして冒頭のように実行はできました。
    ちなみに、現時点tf-explainの最新バージョンは0.3.1です。
    ですので、上の2行を次のの1行だけに直せば問題ないかと思います。

    !pip install tf-explain==0.3.1
  • 仮想環境では、次のようにkaras-visをインストールする時にエラーが発生します。
    pip install keras-vis --user
    ERROR: Can not perform a '--user' install. User site-packages are not visible in this virtualenv

    仮想環境では、最後の「–user」を付けるべきではないようです。

  • 動画フレームのヒートマップ可視化も面白いです。余裕がある方は是非やってみてください。
    その際、ffmpegコマンドを使えるようにする必要があります。macOSでhomebrewを使ってる場合、次のようにインストールできます。

    brew install ffmpeg

投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

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