メインコンテンツに移動

本日は、ソニーのNeural Network Console(略称NNC)の使い方を解説いたします。
2、3年前からあったので、やろうと思っていましたが遅くなりました。
2種類ありましたが、クラウド版ではないほうをダウンロードしてインストールします。
https://dl.sony.com/


ダウンロードしたファイルを実行すると、フォルダが作成され、その中に必要なファイルが解凍されるというものです。
起動するには、フォルダにある「neural_network_console.exe」をダブルクリックします。
Visual Studio 2015のVisual C++のエラーが発生したので、ダウンロードしてインストールしようとしたら既にインストール済みだったのでこのまま様子を見ることにします。

その後、ブラウザが起動し、GoogleかSonyのアカウントを使用して、ログインする画面が表示されたので、ログインしておきましょう。下記のメッセージが表示されれば完了です。

Activation completed successfully.
Close this window and return to the Neural Network Console.

プラグイン一覧のアップデートが終わると使用可能となります。

新規プロジェクトでは、ドラッグアンドドロップでモデルを作成することができます。
また、ネットにあるプロジェクトを使用することもできます。
今回は初めから用意されているサンプルを使用して、学習、検証の過程を確認します。
residual_learningtを試してみます。これは0から9までの数値が手書の画像になっており、それを識別するというものです。60000の画像を学習して、10000の画像を正しく識別できるか検証するサンプルとなっていました。


初回の起動では、画像データをダウンロードしているらしく、しばらく待ちます。
それでは、編集画面の右上が学習となっていることを確認し、実行ボタンをクリックしましょう。しかし、私のPCが高性能でなく処理に時間がかかりそうだったので、途中で諦め、簡単なプロジェクトでやり直しすることにしました。
logistic_regressionというプロジェクトを選択し、確認します。こちらのプロジェクトは4と9の2つの数値が手書の画像になっており、それを識別するというものです。学習件数は1500あり、500の画像を検証するというものです。
レイヤーは4つしかなく先ほどに比べ複雑ではありません。


右上のコンフィグボタンをクリックすると、自分で設定出来ますが、初期値のまま行います。学習反復世代数が100となっており、これを増減することで学習の回数を決めることができるみたいです。


先ほどと同じ要領で、編集画面で学習となっていることを確認し、実行ボタンをクリックします。今度はそれほど時間はかかりませんでした。

学習完了後は、左上の編集画面が学習になっており、右上が評価となっております。ここでも実行ボタンをクリックします。


評価完了後は、混同行列を選択すると結果を見ることができます。
0.952となっているのは95.2%の精度があるということだと思います。

次は学習結果リストを右クリックします。「学習結果のフォルダを開く」を選択するとエクスプローラが開き、CSVファイルを確認することができます。

confusion_matrix_y.csvを開くと先に述べた精度を確認することができます。output_result.csvを開くと500件の評価の結果を確認できます。
せっかくなのでA列が示しているフォルダの画像を、エクセルに一覧表示してみましょう。

VBAを使用して下記のコードを記述します。私はVBAの達人ではないので、ネット検索してコードをコピーしてきました。少しの編集は必要ですが、見ればだいたい修正する場所の見当はつきました。

Sub Folder_url_Picture()
Dim Pshp As Shape
Dim xRg As Range
Dim xCol As Long
On Error Resume Next
Application.ScreenUpdating = False
Set Rng = ActiveSheet.Range("A1:A501")
For Each cell In Rng
filenam = cell
ActiveSheet.Pictures.Insert(filenam).Select
Set Pshp = Selection.ShapeRange.Item(1)
If Pshp Is Nothing Then GoTo lab
xCol = cell.Column + 3
Set xRg = Cells(cell.Row, xCol)
With Pshp
.LockAspectRatio = msoFalse
If .Width > xRg.Width Then .Width = xRg.Width * 2 / 3
If .Height > xRg.Height Then .Height = xRg.Height * 2 / 3
.Top = xRg.Top + (xRg.Height - .Height) / 2
.Left = xRg.Left + (xRg.Width - .Width) / 2
End With
lab:
Set Pshp = Nothing
Range("A2").Select
Next
Application.ScreenUpdating = True
End Sub

マクロを実行すれば画像が表示されます。

あとは、並び替えなどを駆使して、どこをご判断したかを確認しますが、人間が見ても4なのか9なのか判断に迷う画像がありました。これを保存する必要があるときは拡張子が.xlsmにして保存します。