こんにちは、今回は前回に引き続き、プログラミング言語Juliaで機械学習のニューラルネットワークの実装をやってみたいとおもいます。前回の記事は以下を参照ください。
Juliaによる画像処理〜ニューラルネットワークpart1〜
Juliaによる画像処理〜ニューラルネットワークpart1〜
1. 今回すること
今回は前回の続きで手書き文字の識別をやっていきます。前回の内容から以下のように識別機が生成され、ファイルが作られたとおもいます。これを用いて新しい手書き文字に関して識別することが今回の目標です。
2. データの準備
今回は自分の書いた手書き文字の検出をします。白い紙に好きな数字を書いて、それを判別できたら嬉しいですよね!今回は以下のような写真を用意しました。
今回のinputdataは(28,28)の大きさの画像です。なので、これの大きさを変える必要があります。
ImageJでやっていきましょう。なお、画像を得るための方法は以下を参照ください。
30秒でわかる画像処理 #03 画像の切り出し、サイズ調整
https://www.youtube.com/watch?v=LIHC0N4IGEk&feature=youtu.be
まず画像をdrag&dropでImageJから起動します。そのあと、8の周りを四角で囲みcropをし、それをImage->Scaleから変更。さらにImage->Adjust->Thresholdから白黒画像にすればOKです。なお、閾値を決めずにScaleを変えた画像を用いてももちろん識別できます。以下のプログラムでは二つの画像を識別してみました。
これで、下のような画像が得られたと思います!
ImageJでやっていきましょう。なお、画像を得るための方法は以下を参照ください。
30秒でわかる画像処理 #03 画像の切り出し、サイズ調整
https://www.youtube.com/watch?v=LIHC0N4IGEk&feature=youtu.be
まず画像をdrag&dropでImageJから起動します。そのあと、8の周りを四角で囲みcropをし、それをImage->Scaleから変更。さらにImage->Adjust->Thresholdから白黒画像にすればOKです。なお、閾値を決めずにScaleを変えた画像を用いてももちろん識別できます。以下のプログラムでは二つの画像を識別してみました。
これで、下のような画像が得られたと思います!
3. ニューラルネットワークで作られた識別器
前回のプログラムにより、識別器("snapshots/snapshot-010000.jld")ができたと思います。これを用いてまずはうまく作動するかどうかを調べてみましょう。
まずはこれでsnapshotを読み出します。
これにより、HDF5形式で保存されているデータを読み出し、識別器にかけています。今回は200番目のデータの文字が何に属されるのかをチェックしています。
実行してみると、
実行してみると、