今回の改良点について
前回の手書き数字認識では、課題として認識率の向上を挙げておりました。
今回、その課題を解決するために、「判別器の変更」、「画像の前処理の追加」を行ないました。
さらに上記に加え、プロトタイププログラムの操作や実行結果の表示を、CUIよりもGUIで行ないたいと考え、GUIの追加を行ないました。
以下に、今回行なった上記三項目の詳細を説明します。
判別器の変更について
認識率を向上させるためには、パラメータの類を調整する、などでの解決は難しく、判別器を別のものに変えたほうが良いと考え、前回のscikit-learnの替わりに「Keras(※注1)のMNIST(※注2)学習済モデル」を使用することにしました。
- ※注1:Kerasはニューラルネットワークのライブラリ。
- ※注2:MNISTは手書き数字画像のデータベース。
前処理の追加について
MNIST学習済モデルに手書き数字画像を判別させるために、入力する手書き数字画像に前処理を施すようにしました。
前処理を行なう理由は、モデルが学習したのはMNISTの画像データなので、入力する手書き数字画像は、できるだけ学習したデータと同じ形式(画像のサイズ、アスペクト比、黒地に白で文字が描かれている、など)に揃えた方がよいためです。
前述の、判別器の変更に伴い、それまで行なっていなかった「判別対象の画像データを、学習した画像データの形式に合わせる」という前処理を追加したところ、認識率が向上しました。
GUIの追加について
PythonのGUIのツールキットは、「PyQt(パイキュート)」「Kivy(キヴィ)」等、複数存在しますが、今回はPythonの標準的なGUIツールキットである「Tkinter(ティーケイインター)」を使用して、手書き数字認識プロトタイプにGUIを追加しました。
動作の様子
GUIを追加したプロトタイプで、手書き数字の認識処理を行なう様子を、以下に示します。
STEP1.
プログラムを実行すると、メイン画面が表示されます。
認識処理実行ボタンは非アクティブ(押下しても何も起こらない)状態です。
図1 メイン画面、起動直後
STEP2.
画像ファイル選択ボタンを押下すると、ファイル選択ダイアログが表示されます。
そこで認識対象の書類画像ファイルを選択します。
図2 ファイル選択ダイアログ
STEP3.
ファイル選択後、ファイル名がダイアログ上に表示され、認識処理実行ボタンが押下できるように(アクティブ状態に)なります。
図3 ファイル選択後のメイン画面
STEP4.
手書き数字の認識処理実行ボタンを押下すると、認識処理が実行され、認識結果表示欄に結果が表示されます。
図4 手書き数字認識実行後のメイン画面
おわりに
今回は、以前行なった「手書き書類中の数字の認識」の課題解決と、アプリをGUI化したことについてご紹介しました。
今後は、引き続き手書き書類における文字認識に関して、画像処理技術やAIを中心とした技術習得を行なっていきたいと思います。
- 当ページの人物画像はNIGAOE MAKERで作成しました。