オンラインで動作する手書き文字識別システムを実装・公開しました。
以下で試すことができます。(黒色のキャンバス部分に数字を1文字を書いて、識別ボタンを押してみてください。)
ソースコードは、
言語はPython 3.4.3を使用、Webアプリ周りはflask、識別器はchainerを使ってディープラーニングモデルを構築しました。
仕組みとしては、
という流れです。
ディープラーニングモデルについては、こちらのサイトを参考にさせていただいた。(いつも読ませていただいております。)
MNISTデータを学習後モデルを書き出して、ここで作成したモデルをアプリ側でpickleをつかって読み込んでいます。
おかげさまで、識別器の実装はかなり簡単でした。
問題だったのは、「Canvasに書かれた要素を画像としてアプリで受け取って学習器に渡す」というところ。
そもそもflaskの文献が少ない上に、今回は実行環境の関係で普段使っているOpenCVではなくPillowで画像処理を実装したので結構苦労しました。
最終的に、Postされた画像データはbyte形式で送られてきていることをがわかったので、それをPillowにうまく食わせて処理するようにしたらなんとか実装できました。。
とりあえず、今回は「こんなん実装したで(ドヤァ」という報告だけ。
細かい技術的なことはまた次回。