みらいテックラボ

音声・画像認識や機械学習など, 週末プログラマである管理人が興味のある技術の紹介や実際にトライしてみた様子などメモしていく.

TensorFlowで文字認識にチャレンジ(9)

TensorFlowによる日本語のかな/漢字の手書きデータの認識について, これまで何回かに分けて検討してきた.
そして, ある程度の認識性能を実現できることも確認できた.
日本語のかな/漢字の認識については, 今回でいったん最後にしようと思うが, 最後に学習データを大幅に増やし, 学習データを増やすことがどの程度認識性能に影響するかを試してみた.

1. 特徴量とモデル構造

方式構成参照URL
画像・同一座標点の除去
・変化点の抽出
・文字の重心を求め, 重心が文字中央になるようように文字データを拡大/縮小変換
・28×28dotのグレー画像化
[1]
・モデル構造
 1.畳み込み層(3×3)
 2.プーリング層(2×2)
 3.畳み込み層(3×3)
 4.プーリング層(2×2)
 5.全結合層
 6.Softmax Regression層
[2][3]
筆点列・同一座標点の除去
・変化点の抽出
・文字の重心を求め, 重心が文字中央になるようように文字データを拡大/縮小変換
・所定のピッチで特徴点を抽出. ただし, できるだけ変化点は残すように.
ストロークのON/OFF別に, 各軸方向への移動量を特徴量に
[4][5]
・モデル構造
 1.畳み込み層(5×8)
 2.プーリング層(3×1)
 3.畳み込み層(3×1)
 4.プーリング層(2×1)
 5.全結合層
 6.Softmax Regression層
[4]

2. 学習と評価
[学習条件]

  • 対象文字:ひらがな73文字種 + 漢字2,965文字種(JIS第一水準)
  • 筆記スタイル:楷書(ひらがな, 漢字) + フリー(漢字)
  • 学習データ:約340,000(ひらがな約10,000, 漢字約330,000)
  • 学習回数:ミニバッチ(100サンプル)×100,000回

[認識条件]

  • 対象文字:ひらがな73文字種 + 漢字2,965文字種(JIS第一水準)
  • 筆記スタイル:楷書(ひらがな, 漢字) + フリー(漢字)
  • 評価データ:ひらがな2,010, 漢字(楷書)11,762, 漢字(フリー)29,471

[実験結果]

方式対象1位累積(5位)
画像ひらがな 95.37% 99.80%
漢字(楷書) 99.15% 99.95%
漢字(フリー) 95.71% 99.13%
筆点列ひらがな 97.56% 99.95%
漢字(楷書) 99.35% 99.91%
漢字(フリー) 95.95% 98.93%

これまで, あれこれ特徴量やモデル構造など検討してきたが, 単純に学習データを増やすのが最も効果があった, という結果になった.

最後に, 手書きで日本語入力を行う場合には, これ以外に英数字, カタカナ, 記号なども認識対象にする必要がある.
実はストローク数の少ない単純な文字ほど, 類似した文字が多く1位認識率を上げるのが難しい.
[例1] 同じ形状の文字
 - ひらがな「へ」とカタカナ「ヘ」
 - 記号「+」と漢字「十」
 - カタカナ「カ」と漢字「力」
 - 数字「1」と英字「I」,「l」と記号「|」
   :
[例2] 類似した形状の文字
 - カタカナ「ス」,「ヌ」と漢字「又」
 - カタカナ「フ」or「ワ」と数字「7」
 - 漢字「土」と「士」
 - 漢字「乙」と英字「z」,「Z」
   :

しかし, 累積候補内の上位に認識することができれば, 音声認識などのように言語処理を活用することで前後関係から候補文字の順位を入れ替え, 単語あるいは文として正しく認識することができるはずである.
このあたりもDeep Neural Networkでトライしてみるのも面白いのではと思っている.

---
参照URL:
[1] TensorFlowで文字認識にチャレンジ(6)
[2] Deep MNIST for Experts - TensorFlow
[3] TensorFlowで文字認識にチャレンジ(5)
[4] TensorFlowで文字認識にチャレンジ(7)
[5] TensorFlowで文字認識にチャレンジ(8)




ウェブデータの機械学習 (機械学習プロフェッショナルシリーズ)

ウェブデータの機械学習 (機械学習プロフェッショナルシリーズ)


Python機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)

Python機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)


さわってわかる機械学習 Azure Macine Learning 実践ガイド

さわってわかる機械学習 Azure Macine Learning 実践ガイド


機械学習と深層学習 ―C言語によるシミュレーション―

機械学習と深層学習 ―C言語によるシミュレーション―