韓文手寫辨識AI
建國大學高級,多媒體程式設計 - 學期專案(個人專案)
一、簡介
“可以透過人工神經網路學習個人的韓語筆跡嗎?”
即使寫同樣的字母,每個人的筆跡風格看起來也有微妙的差異。被迫寫字或打嗝寫字的人的筆跡會留下與平常不同的痕跡,作為證據的可靠性很高。這種獨特性使得簽名獨一無二。在重要文件和考試中,檢查筆蹟的真實性非常重要。
由於是用來證明身分的,筆跡是唯一的,但如果有兩種不同的筆跡,只有細微的差別,人類很難用肉眼來區分。因此,我想實作一個用於韓語手寫辨識的人工智慧模型。
(1-1) 輸入數據
- 上圖都是不同人寫的。 (您可以看到它們是相同的字母,但略有不同。)
(1-2)目標
- 10人(3名家人,7位親密朋友)
- BSN(Sona Bang)、CHW(Howon Choi)、KBJ(Beomjun Kim)、KJH(Joonhyung Kwon)、LJH(Jongho Lee)、LSE(Seungeon Lee)、PJH(Jonghyuk Park)、PSM(Sangmoon Park)、SHB(石玄彬)、SWS(申佑燮)
(1-3) 預期應用領域
- 國家考試及重要文件的筆跡驗證。
- OCR(光學字元辨識)
2. 建立資料庫
2-1.單字母數據
(1) 未讀
- 使用字體設計公司“Ongle-leap”提供的模板
- 包含韓文字母的所有組合
(2) 未銳化蒙版
(3)灰階變換
(4) 直方圖檢查並應用第一個閾值
- 透過直方圖設定閾值,根據閾值對影像進行二值化。
- (本例中閾值設定為0到255中的150)
(5) 應用低通濾波器
- 為了提取筆跡的位置,需要透過LPF對筆跡進行平滑處理,使輪廓暴露出來。
- 適當設定核心大小,並透過 cv2.filter2D 將 LPF 應用於二值化影像。
- Kernel 尺寸越小,越容易偵測元音和輔音等較小的單元,Kernel 尺寸越大,越容易偵測字母本身的輪廓。
- (範例適用21x21核心)
(6) 直方圖檢查並應用第二閾值
- 透過LPF平滑後的影像直方圖設定閾值,然後根據閾值再次進行二值化。
- (閾值範例:230)
(7) 擷取輪廓&座標,影像裁剪
- 未提取非字母的小輪廓。
- 從提取的輪廓中提取x,y坐標和w,h值,並用正方形再次計算坐標,以便盡可能不丟失手寫特徵,因為稍後必須將它們調整為64x64尺寸。
- 透過計算出的座標,將影像裁剪成正方形。
(8) 寫入
- 每人 81 個單字母數據
- 總計:收集了 810 個單字母數據,
2-2.兩個字母的數據
- 兩個字母的數據是透過組合不同的單字母數據創建的,每個數據都進行了適當的縮放。
- 為了減少調整大小時特徵資訊的遺失,創建了img_concat(img1, img2)函數,用於連接圖像,並將它們形成正方形。
- 每個目標獲得 6,480 個兩個字母資料 (81P2)
2-3.三字母數據
- 三字母資料是透過將一字母資料和兩字母資料組合而成的,每個資料都進行了適當的縮放。
2-4.筆記中的實際手寫數據
3. 第一個結果
- 結果
- 損失=0.7819,準確度=0.72
- 測試數據結果=0.6503
4. 第二個結果
- 結果
- 損失=0.0397,準確度=0.9908
- 測試數據結果=0.9360
5.結果分析
與第一個結果相比,第二個結果都有顯著改善。我認為成績提高的原因如下。
(5-1)增加用於學習的數據
- 在第一次嘗試中,每個目標使用了 1,111 個數據,在第二次嘗試中,使用了 2,411 個數據,增加了一倍以上。
- 由於學習和評估是透過更多的數據進行的,因此可以捕捉到目標筆跡更微妙的特徵。
(5-2)人工神經網路層的變化
- 在第二次嘗試中,修改了卷積遮罩的大小和池化的大小。
- 卷積掩模的尺寸被減小到比以前更小的尺寸,以捕捉非常精細的筆跡特徵
- 透過減少池化大小,減少學習過程中手寫特徵的損失。
- 此外,為了包含更多關於手寫的資訊作為參數,全連接的節點數量從 128 個增加到 256 個
(5-3)批量大小和學習率的增加