cnn_handwritten_chinese_recognitionCNN在線識別手寫中文。
cnn_handwritten_chinese_recognition
使用python+flask搭建的一個網(wǎng)站,然后從網(wǎng)頁的寫字板上獲取鼠標(biāo)手寫的漢字經(jīng)過轉(zhuǎn)碼后傳回后臺,并經(jīng)過圖片裁剪處理之后傳入CNN手寫中文識別的模型中進行識別,最后通過PIL將識別結(jié)果生成圖片,最后異步回傳給web端進行識別結(jié)果展示。中文總共50,000多漢字,常用的有3,755個。這里主要對常見的3755個漢字進行識別。
一、數(shù)據(jù)集
目前國內(nèi)有很多優(yōu)秀的中文手寫識別數(shù)據(jù)集。例如:北京郵電大學(xué)模式識別實驗室發(fā)布的數(shù)據(jù)(HCL2000),它是目前最大的脫機手寫漢字庫,共有1,000個人書寫,除了漢字樣本庫外,還有一個對應(yīng)的書寫者信息庫,記錄了書寫者的年齡、職業(yè)、文化程度等信息,用于研究相關(guān)影響因素。目前此數(shù)據(jù)庫免費向研究者公開。本文使用的是中科院自動研究所的分享的中文手寫數(shù)據(jù)集CASIA-HWDB(下載地址http://www.nlpr.ia.ac.cn/databases/handwriting/Home.html ),由187個人通過Wacom筆在線輸入的手寫漢字。
二、CNN結(jié)構(gòu):
用tensorflow庫來實現(xiàn)【三個卷積層+三個池化層+兩個全連接層】的卷積神經(jīng)網(wǎng)絡(luò),結(jié)構(gòu)如下圖所示:
訓(xùn)練圖片都修整成64x64大小,這里我只訓(xùn)練常見的3755個漢字,在CNN識別數(shù)字的模型結(jié)構(gòu)上再添加了一個卷積層和池化層,其他結(jié)構(gòu)差不多。
將下載好的HWDB數(shù)據(jù)集解壓處理好開始訓(xùn)練,這個訓(xùn)練過程比較長,我最終在GPU:GTX1050Ti上迭代了12,000次花費幾個小時,最終取最可能的前三個預(yù)測值
三、加載模型
我訓(xùn)練模型迭代了12,000次之后,將訓(xùn)練參數(shù)保存在checkpoint文件夾中,不過因為單個文件大小的限制,訓(xùn)練好的模型文件從百度云上下載:鏈接: https://pan.baidu.com/s/1eSWBIyI 密碼: kv2r;
下載之后直接覆蓋checkpoint文件夾。
四、環(huán)境
- python 3.6.1;
- pipenv *;
- flask 0.12.2;
- tensorflow 1.3.0;
- pillow 4.2.1;
- pickleshare 0.7.4;
- numpy 1.13.1;
五、運行
1、克隆項目,先安裝python3.0和pipenv,然后 pipenv install --three;
2、從百度云下載訓(xùn)練好的模型文件,放到相應(yīng)的checkpoint文件夾下;
3、使用pipenv run python3 run.py運行;
4、打開本地瀏覽器輸入localhost:5000進行查看;
六、其他
- 功能非常齊全而且強大的微信商城小程序源碼,感興趣可以看看:https://github.com/taosir/wxapp_store
