前回までは, 手書きの文字を28×28画素の画像とし扱い, CNN(Convolutional Neural Network)による文字認識や認識性能の改善について検討してきた.
しかし, 現状ではJIS第一水準(2965文字種)を認識対象とすると, 約91%の1位認識率しか得られていない.
そこで, 今回は時系列の手書きデータ(筆点列)を直接Deep Neural Networkで処理することを検討してみた.
1. 前処理・特徴抽出処理
前処理・特徴抽出処理としては, 以下を行っている.[1][2]
1) 同一座標点の除去
2) 変化点の抽出
3) 文字の重心を求め, 重心が文字中央になるようように文字データを拡大/縮小変換
4) 所定のピッチで特徴点を抽出. ただし, できるだけ変化点は残すように.
[例]
2. 特徴量
以下のような各軸方向への移動量とストロークのON/OFF情報を特徴量とすることにした.
3. モデル構造
時系列データを扱う場合には, RNN(Recurrent Neural Network)を用いる方法がよく知られているが, 自然言語処理でCNNを活用した事例[3][4]もあるので, 今回はCNNでチャレンジしてみることにした.
モデル構造は, 下図のような構造にしてみた.
4. 学習と評価
[学習条件]
- 対象文字:漢字2,965文字種(JIS第一水準)
- 筆記スタイル:楷書
- 学習データ:53,244サンプル
- 学習回数:ミニバッチ(100サンプル)×50,000回
[認識条件]
- 対象文字:漢字2,965文字種(JIS第一水準)
- 筆記スタイル:楷書
- 評価データ:11,762サンプル
[実験結果]
方式 | 1位 | 累積(5位) |
---|---|---|
ベース [5] | 88.31% | 98.01% |
筆点列 | 92.54% | 97.99% |
筆点列の場合筆順の情報が利用できるので, 1位の認識率upを期待していがまずまずの性能が出た.
----
参照URL:
[1] Google OS実験室 ~Moonlight 明日香~:手書き文字認識にチャレンジ ~前処理~
[2] Google OS実験室 ~Moonlight 明日香~:手書き文字認識にチャレンジ ~特徴抽出~
[3] Understanding Convolutional Neural Networks for NLP - WildML
[4] 自然言語処理における畳み込みニューラルネットワークを理解する - けんごのお屋敷
[5] TensorFlowで文字認識にチャレンジ(3)
図解入門 最新人工知能がよ~くわかる本 (How-nual図解入門Visual Guide Book)
|
|
Python機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)
|
|