HOME >>  Pythonをさわってみよう >  手書き数字の自動認識 実験してみました

手書き数字の自動認識 実験してみました

 機械学習の実感をつかむため、教本のChapter5 「手書きの文字を認識しよう」に挑戦し、手書き数字の自動認識に取り組んでいます。先回は、前処理や学習と予測についてまとめましたが、実際の認識実験を実施しましたので、その結果を報告します

 

■ 手書き数字の自動認識のコマンド

 処理の手順は先回の報告と同じコマンドを使用するのですが、不要な部分は削除しました。教本では、内容が理解できるように処理の各ステップ毎にその結果を表示しています。従って実際に使用する場合には、このような表示コマンドは省略できますので、必要なコマンドだけにして実施しました。

  1. 上段のセル[1]にはモデルを学習させるための処理を実施させます。
  2. 下段のセル[2]にて対象の画像ファイルを読み込み、自動認識させます。
  3. その結果の回答を最後に打ち出します。上記の結果では、D-5.jpg ファイルを読み込み、自動認識した回答が”4”である事を示しています。

  .

  .

■ 実験方法

 手書きの数字は、右の写真に示すようにA4のルーズリーズ上に書きました。これをカメラで撮影し、各文字毎に画像を切り出して JPEG 形式の個別のファイルにしました。

 画像切り出しに使用した画像編集ソフトは、いつも使用している Macromedia の Fireworks MX2004 です。

  1. 最初に書いた大きい文字(Aタイプ)は、40mm四方の枠にサインペンで書きました。
  2. また、さらに太い字と考えてマジックペンで書いたのですが、インクの出が悪かったのでかすれた文字となりました。(Bタイプ
  3. この二つの文字でトライした結果は、さんざんでしたので、小さい枠に同じサインペンで描き、文字の大きさに対してより太い文字になるようしたのがCタイプです。ルーズリーズの上の方にかいてある 10mm 四方の数字です。
  4. それでも、成績が良くなかったので、手書きでは無くてパソコンの綺麗な文字を使って実験したのがMタイプです。でも、結果として意外でしたね。
  5. そして、Bタイプのかすれた文字を上記の画像編集ソフトを使って、コントラストを協調するために手を加えました。明るさを +13,コントラストを +93 にして画像を処理して認識させたのがDタイプです。
  6. 画像の全体の明るさが影響するのではと考えて、暗くした画像としてランダムに設定しましたが、無駄のようでした。

 なお、右の写真で分かるように、Bタイプの”0”を忘れていましたね。

 そして、これらの画像ファイルを上記に示したプログラムを使って指定し、認識結果を一つずつ出していきました。

 

■ 実験結果

 各画像の認識結果を下記にまとめます。なお、ここで表示している文字画像は、この表に収まるように 50×50 ピクセルに縮小しています。そして、画像の傍に記入した数字が認識結果の数値です。さらにその結果が誤回答の場合は欄を橙色にしています。

数字 Aタイプ Bタイプ Dタイプ Cタイプ Mタイプ
内容

手書き文字

約500x500

手書き文字

約500x500

手書き文字

約500x500

手書き文字

約350x350

パソコン文字

50x50

大きくて細い字 大きくて太いかすれた字 Bタイプのコントラストを調整 小さい字 MSPゴジック太字60ピクセル
 0 *** ***  0  0
 2  7  2  2  3
 2  4  2  2  2
 3  7  3  3  3
 4  7  1  4  4
 5  4  4  5  5
 6  6  6  4
 7  5  7  7  7
 3  3  8  3  4
 7  7  7  8  0
正解
誤回答
認識率
70%
11%
56%
60%
70%
  1. 文字がかすれたBタイプは、ほぼ全滅です。
  2. その画像のコントラストを調整したDタイプは、認識率が向上しています。
  3. 形が整っているパソコン用のフォントであるMSPゴジックといえども認識率は100%ではありませんでした。
  4. 数字の”1”と”9”は全滅で、”8”も成績が悪かった。
  5. 画像全体の明るさの影響を見てみようとしましたが、判別できませんな。
  6. 認識させる数字としては、コントラストの強い、太く書いた文字の方が認識率や高いようです。また、学習させた文字の原本がどのような特徴のある文字なのかわかりませんが、自分が書く文字の癖とはだいぶ違っているようです。

■ まとめ

  .

 期待していたのに、ガッカリしてしまった結果となりました。その理由(?)を考えてみたのですが、

 ネットでも同じように、自分の手書き文字を認識されたサイトを見つけましたが、やはり不合格のようでした。

     *****************************************************

 郵便番号の自動読み取りシステムや、文字認識ソフトでは、相当な高度の認識アルゴリズムを使って判断しているものと推察します。