1. 程式人生 > >基於注意力模型和卷積迴圈神經網路的中文自然場景文字識別

基於注意力模型和卷積迴圈神經網路的中文自然場景文字識別

 最近,在進行相關中文文字識別的工作,查閱了許多論文。最終決定參考谷歌的基於注意力機制的街景文字識別的論文:"Attention-based Extraction of Structured Information from Street View Imagery",並對官方原始碼進行修改。

      本次中文文字識別的github地址為:https://github.com/A-bone1/Attention-ocr-Chinese-Version。程式碼使用的是python3.5及Tensorflow1.4,可在window10、ubuntu16.04上執行。下面對本次模型進行一個較為詳細的描述。

一:模型整體框架及識別基本流程

       基於注意力模型的卷積迴圈神經網路(Attention-CRNN)的整體框架如圖所示,它主要由三部分組成:卷積神經網路、迴圈神經網路和注意力模型。 

       在網路的前端,卷積神經網路自動從輸入的圖片中提取特徵,接著注意力模型根據迴圈神經網路神經元的隱藏狀態及上一時刻的輸出計算出注意力權重,最後將卷積神經網路輸出的特徵圖與注意力權重結合起來,輸入迴圈神經網路進行編解碼後,得到整個字符集的概率分佈,最後直接提取概率最高的編號所對應的字元作為最後的識別結果。雖然,Attention-CRNN是由幾個不同的神經網路及部件(CNN,RNN,Attention)構成的,但它們可以使用同一個損失函式進行端到端訓練。

二:如何開始進行訓練

1、生成自己的訓練資料並轉化成FSNStfrecord格式:

     首先建立自己的字典(dic.txt),並生成自己的樣本資料集,再將其轉化成訓練所需要的FSNS tfrecord格式。詳細轉化步驟及程式碼可參考部落格github

2、下載所提供的中文文字識別的原始碼,並將資料集放在對應的目錄中。

3、根據README中的文件進行相關修改及設定便可開始訓練。

建議:

(1)可使用課程學習(Curriculum Learning)策略提高模型泛化能力,即先用生成的簡單背景的訓練樣本進行訓練,再逐漸加入真實的較為複雜的自然場景文字圖片增加樣本複雜度。

(2)該模型對視訊記憶體要求較高,如視訊記憶體不滿足訓練需求,可以在生成訓練樣本的時候將圖片尺寸降低並在訓練程式碼中進行相關圖片尺寸修改。

三:目前訓練結果


1、損失函式                                               2、準確度 (單字精確度92.96%,整句精確率80.18%)     

                

        

3、在訓練測試集上的識別結果

原始圖片:

識別結果:


    詳細操作步驟可轉至github專案進行檢視
--------------------- 

原文:https://blog.csdn.net/qq_40003316/article/details/80062023