SONYから出たライブラリ「Nural Network Console」のことを皆さんはご存知でしょうか。
今回は、Nural Network Consoleがどのようなライブラリなのかというところと、実際にNural Network Consoleで学習済みのCNNを作り「NNabla(Neural Network Libraries)」で推論実行をさせてみたいと思います。
SONYのNural Network Consoleとは
Nural Network ConsoleはConvolutional Neural Network(畳み込みニューラルネットワーク)という学習ができるライブラリのことです。
Convolutional Neural NetworkはCNNやNNCと略されることがありますので、今回は統一してCNNと書かせていただきます。
このCNNライブラリを有名なSONYが出しているので、注目されているライブラリとなっています。
今回Nural Network Consoleのクラウド版が正式リリースされ、AI学習やCNNをクラウド上のGPUを使って高速に実行できる有償オプションが利用できるようになりました。
Windowsアプリ版では、CPUパソコンで機械学習をさせる場合は学習させてる間じっと数時間待ち続けるというストレスに耐える必要がありました。
クラウド版では、モデルを作ってそのままGPUで実行させるという選択肢が加わりましたので、さらに利用しやすいディープラーニング・ツールになってきたと思います。
さらに詳しいNural Network Consoleの概要や特徴に関しては下記記事で詳しく解説しています。
早速CNN(畳み込みニューラルネットワーク)を構築しよう
手書き数字画像(0~9)を読み込んで、それぞれを0~9に分類するというお馴染みの処理を学習させてみます。
まず、 「Nural Network Console」で上記図のようなCNNを構築します。
入力層が28×28×1ノード、中間層は畳み込み層とプーリング層が2層ずつ、全結合層が1層、出力層が10ノード(数字0~9の10種類)からなるCNNです。
中間層では活性化関数にReLU関数を使用してみます。
CNNの構築①学習用と評価用のデータセットを設定
次に、学習と評価に使用するデータセット(MNISTデータセット)を学習用と評価用のそれぞれで選択設定します。
データセットの準備ができたら、いよいよ学習を実行します。
今回は、エポック数を「20」にし、ミニバッチ数を「100」にして実行!
そして評価を実行してみます。
その評価結果は、次の表(Confusion Matrix)のようになりました。
分類精度は「0.9934」となっています。
ちなみに、Confusion MatrixはCSVファイルとしてダウンロードできるようになっています。
CNNの構築②CNNの学習済みモデルで推論実行する
それでは今回の主題「学習済みモデルを使ってNeural Network Libraries(Python)から推論する」ということをやってみたいと思います。
Nural Network Consoleを利用した場合の推論プログラム(Python)の作り方は、以下の3ステップになります。
①load_parametersコマンドで読み込む
Nural Network Consoleでの学習結果パラメータが格納されるparamters.h5を、load_parametersコマンドで読み込みます。
②ソースコードを取り出す
Neural Network Console上で作ったニューラルネットワークの画面上で右クリックして、
「Export > Python Code(NNabla)」を選択し、ネットワークのソースコードを取り出します。
③ネットワークを実行する
ステップ1のパラメータが読み込まれた状態で、ステップ2のエクスポートされたネットワークを実行(forward)します。
推論実行のための骨格はこれだけで可能です。
あとは入力画像を読み込む部分や推論結果を出力する部分を追加していくだけです。
追加コーディングした主な機能は、
- プログラムを実行すると手書き数字を選択する画面が表示され画像を選べる機能
- 選択した手書き数字画像を画面上に表示し同時に推論した数字を回答する機能
の2つとなっており、画面上で双方を比較検証できる仕組みにしてみました。
CNNを学習させたAIを実際に使ってみる
それではSONYのNural Network ConsoleでCNNを教え込んだAIを実際に動かしてみましょう。
上記画像のようにAI実行直後にポップアップが表示されるので、推論させたい手書き数字画像を選択します。
今回は手書き数字「9」を選択してみましょう。
選んだ手書き数字「9」の画像と、AIによる推論結果が表示されます。
<<< あなたが選んだ手書きの数字は[9]です。 >>>
このライブラリを使用すると、想像していたよりもかなり簡単にCNN(畳み込みニューラルネットワーク)の実装ができました。
アイデア次第ではとても安価に効果的なAIシステムを導入することができるのではないでしょうか。
SONYのライブラリでCNNを行ってみたまとめ
今回はSONYから出たライブラリ「Nural Network Console」でCNNを行ってみましたがいかがでしょうか。
AIプログラミングをご存知の方からすると「こんな簡単にできるんだ!」と感じられたと思いますが、AI知識がない方からすると「これだけのためにこんなに工程が必要なんだ」と思われたかもしれません。
AIを自分の手で作るのはとても労力と時間がかかるので、ぜひ上手にライブラリを利用してAI作成を行ってみてください。