基于CRNN的中文文本識別--Tensorflow2.X版本

凡對本文有任何疑惑可加QQ群交流:1081332609
Github地址:https://github.com/lvjianjin/crnn_by_tensorflow2.2.0

CRNN是不定長文本識別的主流算法,但是Github上的項目多以Pytorch、keras版本為主。Tensorflow1.x由于其學(xué)習(xí)成本陡峭的原因一直被廣大開發(fā)者所吐槽,Google于2019年發(fā)布Tensorflow2.x版本,其框架生態(tài)的完整性、官方文檔的完整性以及對于新手的友好度,使得其再次成為深度學(xué)習(xí)框架的首選。本人基于Tensorflow2.2.0重新實(shí)現(xiàn)并訓(xùn)練了一個基于CRNN的中文不定長文本識別模型,并實(shí)現(xiàn)了基于Tensorflow serving的生產(chǎn)環(huán)境下的服務(wù)端構(gòu)建及其調(diào)用方式。

數(shù)據(jù)集準(zhǔn)備

下載并解壓800萬數(shù)據(jù)集,并劃分訓(xùn)練集、驗(yàn)證集、測試集。


數(shù)據(jù)集

模型結(jié)構(gòu)

模型的結(jié)構(gòu)采用華中科技大學(xué)的白翔老師的CRNN模型。該模型通過CNN將圖片的特征提取出來后,再采用RNN對所提取出來的序列特征進(jìn)行預(yù)測,最后通過一個CTC的翻譯層得到最終結(jié)果。具體的模型結(jié)構(gòu)代碼可參見crnn.py。

模型結(jié)構(gòu)

模型訓(xùn)練

將800萬數(shù)據(jù)放進(jìn)去訓(xùn)練,經(jīng)過19個epoch的訓(xùn)練,在驗(yàn)證集上面的表現(xiàn)就已經(jīng)接近72%了。代碼可參照train.ipynb。

Tensorboard

服務(wù)端部署

在生產(chǎn)層級的應(yīng)用上,一般以tfserving的方式來構(gòu)建服務(wù)端(相對于用web框架的方式構(gòu)建,具有更強(qiáng)的并發(fā)能力及處理速度)。但是,要利用tfserving構(gòu)建服務(wù)端之前,需要先將模型結(jié)果的文件轉(zhuǎn)為對映pd格式文件。


image.png

接下來便可以開始搭建tfserving服務(wù)端,這采用docker來進(jìn)行服務(wù)端的構(gòu)建(關(guān)于docker的安裝可自行百度)。安裝完docker之后便可拉取,tfserving的鏡像,

docker pull tensorflow/serving

鏡像拉取完成后,以如下語句啟動服務(wù)端,其中source后接的是剛才模型生成的versions文件夾對應(yīng)路徑。

CPU環(huán)境

docker run --name tfserving-crnn \
        --hostname tfserving-crnn \
        -tid \
        --restart=on-failure:10 \
        -p 8500:8500 \
        -p 8501:8501 \
        --mount type=bind,source=/root/python_project/crnn_by_tensorflow2.2.0/output,target=/models \
        -e MODEL_NAME=crnn \
        -t tensorflow/serving &

GPU環(huán)境

docker run --name tfserving-crnn \
        --hostname tfserving-crnn \
        -tid \
        --restart=on-failure:10 \
        -p 8500:8500 \
        -p 8501:8501 \
        --mount type=bind,source=/root/python_project/crnn_by_tensorflow2.2.0/output,target=/models \
        -e MODEL_NAME=crnn \
        -t tensorflow/serving:latest-gpu &

客戶端

接下來我們就可以通過HTTP、gRPC兩種方式對tsendorflow-serving服務(wù)進(jìn)行調(diào)用,代碼可參照client.ipynb。

模型效果

以下為模型在部分中文文本上的測試效果。
1.png

參考項目

https://github.com/chineseocr/chineseocr
https://github.com/FLming/CRNN.tf2

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容