韓国語手書き認識AI
建国大学校シニア、マルチメディア プログラミング - 期間プロジェクト (個人プロジェクト)
1. はじめに
「個人の韓国語の筆跡は人工ニューラルネットワークを通じて学習できるのでしょうか?」
同じ文字を書いていても、人によって字体は微妙に異なります。無理やり書かれた人やげっぷをしながら書いた人の筆跡は、通常とは異なる痕跡が残るため、証拠としての信頼性が高い。この一意性が署名を一意なものにします。重要な書類や試験では、筆跡が本物であるかどうかを確認することが非常に重要です。
本人であることを証明するために使用されるため、筆跡は唯一無二ですが、わずかな違いしかない2つの異なる筆跡がある場合、人間が肉眼でその違いを区別することは困難です。したがって、韓国語の手書き認識用の人工知能モデルを実装したいと考えました。
(1-1) 入力データ
- 上の写真はすべて別の人が書いたものです。 (同じ文字ですが、微妙に異なることがわかります。)
(1-2) 目標
- 10名(家族3名、親しい友人7名)
- BSN(ソナ・バン)、CHW(チェ・ホウォン)、KBJ(キム・ボムジュン)、KJH(クォン・ジュニョン)、LJH(イ・ジョンホ)、LSE(スンゴン・イ)、PJH(パク・ジョンヒョク)、PSM(サンムン・パク)、SHB(ソク・ヒョンビン)、SWS(シン・ウソプ)
(1-3) 期待される応用分野
- 国家試験や重要書類の筆跡確認。
- OCR (光学式文字認識)
2. データベースの作成
2-1. 1文字データ
(1) 既読
- フォントデザイン会社「Ongle-leap」より提供されたテンプレートを使用
- あらゆるハングル文字の組み合わせを収録
(2) アンシャープマスク
- 手書きをシャープにするためにシャープになっていないマスクを使用しました
(3) グレースケール変換
(4) ヒストグラムの検査と第 1 のしきい値の適用
- ヒストグラムを通じて閾値を設定し、閾値に基づいて画像を二値化します。
- (この例では閾値を0~255の150に設定しています)
(5) LPFをかける
- 筆跡の位置を抽出するには、LPFを通して筆跡を平滑化し、輪郭を露出させる必要がある。
- カーネルサイズを適切に設定し、cv2.filter2D を通じて 2 値化画像に LPF を適用します。
- カーネル サイズが小さいほど、母音や子音などの小さな単位を検出しやすくなり、カーネル サイズが大きいほど、文字自体の輪郭を検出しやすくなります。
- (例は 21x21 カーネルを適用します)
(6) ヒストグラムの検査と第 2 しきい値の適用
- LPFで平滑化した画像のヒストグラムから閾値を設定し、その閾値に基づいて再度二値化を行います。
- (閾値の例:230)
(7) 輪郭と座標の抽出、画像のトリミング
- 文字ではない小さな輪郭は抽出されませんでした。
- 抽出した輪郭線から x,y 座標と w,h 値を抽出し、後で 64x64 サイズにリサイズする必要があるため、手書きの特徴をできるだけ失わないよう、座標を正方形で再計算しました。
- 計算された座標により、画像が正方形に切り取られました。
(8) インライト
- 1文字データ 1人あたり81個
- 合計 : 810 個の 1 文字データが収集され、
2-2. 2文字データ
- 2 文字のデータは、それぞれが適切にスケーリングされた、異なる 1 文字のデータを組み合わせて作成されました。
- サイズ変更中の特徴情報の損失を減らすために、img_concat(img1, img2) 関数が作成され、画像を接続して正方形に形成するために使用されました。
- ターゲットごとに 6,480 個の 2 文字データを取得 (81P2)
2-3. 3文字データ
- 3 文字データは、1 文字データと 2 文字データを組み合わせて作成され、それぞれ適切なスケーリングが施されました。
- ターゲットごとに 7,980 個の 3 文字データを取得
2-4.メモを取る実際の手書きデータ
- データはターゲットの実際のメモ取りから取得されました。
3. 1回目の結果
トレーニングデータ : テストデータ = 9 : 1
使用データ = 1文字(81) + 2文字(500) + 3文字(500) + 実際の手書き(30)
n.エポック = 20、バッチ サイズ = 50、学習率 = 0.01
レイヤ構成
- 結果
- 損失=0.7819、精度=0.72
- テストデータの結果=0.6503
4. 2回目の結果
トレーニングデータ : テストデータ = 9 : 1
使用データ = 1文字(81) + 2文字(1000) + 3文字(1300) + 実際の手書き(30)
n.エポック = 20、バッチ サイズ = 150、学習率 = 0.04
レイヤ構成
- 結果
- 損失=0.0397、精度=0.9908
- テストデータの結果=0.9360
5. 結果の分析
最初の結果と比較して、2 番目の結果はすべて大幅に改善されました。成績が向上した理由は以下のようなものだと考えています。
(5-1) 学習に使用するデータを増やす
- 1 回目の試行ではターゲットごとに 1,111 個のデータが使用され、2 回目の試行では 2 倍以上の 2,411 個のデータが使用されました。
- より多くのデータを用いて学習・評価を行ったため、対象者の筆跡のより繊細な特徴を捉えることができた。
(5-2) 人工ニューラルネットワーク層の変更
- 2 回目の試行では、畳み込みマスクのサイズとプーリングのサイズが変更されました。
- 畳み込みマスクのサイズは、非常に細かい手書きの特徴を捉えるために、以前よりも小さいサイズに縮小されました。
- プール サイズを削減することで、学習プロセスにおける手書き特性の損失を軽減しました。
- さらに、手書きに関するより多くの情報をパラメータとして含めるために、完全に接続されたノードの数が 128 から 256 に増加しました。
(5-3) バッチサイズと学習率の増加