2017年3月25日土曜日

TensorFlowの学習結果を使ってAndroidで手書き数字認識

 Deep Learning関係で以前、以下の記事を書きました。

情報工学科ブログ記事:
ディープラーニング(人工知能)を小さく自作する
http://blog.cs.kanagawa-it.ac.jp/2016/09/blog-post.html

 そこでは、自作(といっても手引きにしたがって)Pythonで手書き数字認識の簡単なニューラルネットワークを構成しました。その学習処理は、デスクトップPCで行いますが、認識テスト時には、Android画面からの手書き画像をそのPCヘ送る、という、ちょっと、まどろっこしいことになっていました。それでも、オープンキャンパスなどでデモしてきました。

 今回は、ちょっと進化しました。(narative nights(株)三好康祐氏の資料に基づいています。)Google TensorFlowにある、MNIST for Expertsにしたがって、PC上でTensorFlowによる学習をさせ、その結果(結合辺の重みとバイアス値)をAndroidに取り込みます。Androidでは、その結果を使ってForward処理することで、リアルタイムに手書き数字判定(認識)をできるようになりました。つまり、デモなどで、手書き数字をAndroid画面に書いてもらい、直ちに、判定結果がでます。Android単独ででき、PCなどとの連携は必要ありません。これによって、さらに手軽に、Deep Learningのデモができるようになりました。

Android単体で、手書き数字認識する!
(TensorFlow MNIST for Expertsの学習結果を利用)

 TensorFlowのMNIST for Expertsでは、55,000件の手書き数字を学習させます。そのネットワークに対して、テスト用の別の10,000件の手書き数字を認識させたところ、99%を越える高い認識率が得られています。実際に、上図のように試してみると、その認識率の高さを実感できます。

 今回は、Android上のJavaプログラムでこの認識処理を行っていますが、Android上のTensorFlowもありますので、今後はそちらにも挑戦します。

0 件のコメント:

コメントを投稿