未来を創る、テックコミュニティー

5/17 代表勉強通信~画像処理のプロセス可視化、CNN Explainer試してみた

草場代表
2020/05/17

こんばんは。代表の草場です。

PyCaretは一休みして、本日はCNN Explainerに関してです。どこかのサイトでお勧め論文として載っていた、「CNN Explainer: Learning Convolutional Neural Networks with Interactive Visualization」を試しました。AI使った画像処理はどんどん進んでいますが、初心者にはわかりづらいので可視化したよ、という論文です。ありがたや。

まずはGitHubに移動し、レポジトリをデスクトップにダウンロード。Anacondaで仮想環境作って、以下で依存環境をダウンロードします。なんと、Node.jsが入ってなかったので、Anaconda Navigator使ってインストールしました。
npm install
そして、以下を実行すると、http://localhost:5000/ が出てくるので、そこに移動します。
npm run dev

上記ページにCNNの解説含めて、詳細に記載があります。とりあえずいじってみます。CNN Explainerで使われているネットワーク・アーキテクチャはTiny VGGです。これは、「最先端のCNNで使われているのと同じレイヤーと操作を多く含んでいますが、より小さなスケールで使われいる」とのことです。

パンダが好きなので、パンダを選びます。CNNは、ざっくりいうと畳み込み(Conv)→活性化関数(ReLuとか)→Max Pool(やらないこともある)の繰り返しで、最後に平たん化(Flatten)→ソフトマックスで合体で判定、という流れです。色が三色(RGB)なので、パンダの写真が三枚に分かれています。

・畳み込み層で起こっていること
Conv1.1をクリックすると、以下の画面になります。フィルターで中間層のニューロンの特徴を取り込んでいる様子です。

Intermidiateの写真をクリックすると、もとの写真からフィルターを通して特徴量をIntermideiate層に取り込む様子が見れます。

・活性化層で起こっていること
ReLu1.1のどれかをクリックすると、以下が表示されます。活性化関数をかませている様子です。

・次の畳み込み層へ
次の畳み込み層の適当なニューロンをクリックすると、前の畳み込み層からの特徴量の取り込みの様子が見れます。

・Max Pooling層
Max Poolingの様子です。

最後に平坦化です。

そしてソフトマックスで合成、予測。

ふむ。red pandaと予測されました。あたりです。

さて、自分の写真をアップロードして判定したところ、、

ピーマンまたはスポーツカーと予測されました。うーむ、この辺で面長の特徴のみが抽出されているのか??

CNNの様子が見れてとても面白いですね。もう少しいじってみます。オリジナルの論文も読まないとですね!

それでは。

この記事を書いた人
草場代表
エディター