前言
最簡單的Lenet網絡使用的是多層卷積+softmax,存在不足:輸入圖像是分割好的單個字符,更理想的形式是將分割與識別組合爲端到端的網絡。且使用softmax的機制意味着分割後子圖的數量決定了輸出字符串的長度。
當前OCR的問題在於對傾斜文本、彎曲文本、二維文本的識別效果不佳,且在ASTER方法中,預測時會出現某個字識別錯誤後後面全錯的問題。
CTC
CNN+RNN+CTC(CRNN+CTC)
CTC:聯結主義時間分類
簡單來說,CNN獲取特徵圖,對特徵圖按列切分,輸入BLSTM網路提取文字序列特徵,BLSTM網路的輸出尺寸爲識別的最長字符串長度,使用空白字符blank機制(增加空字符‘-’)、β變換(去冗餘)及CTC損失,實現不定長文本的識別。
同一目標輸出,可由多條不同路徑經β變換獲得
CTC的訓練目的爲輸入圖像x,輸出目標字符串的概率最大p(l |x)
CTC借用了HMM的“向前—向後”(forward-backward)算法來計算 p(l |x),涉及前向遞推概率和、反向遞推概率和。目標輸出CAT,某一條正確的路徑,t時刻爲A,則t-1時刻只能爲C、A或-,t+1時刻只能爲A、T、-,式中求積代表某條子路徑的概率,求和代表多條子路徑的概率和。
CTC損失爲負的最大似然,預測結果正確率越高,損失越小。
前向推斷時,可採取前綴搜索算法解碼(輸出序列的每一步中選擇最可能的單詞)或約束解碼算法(束搜索:在每一步中,每個候選序列都被擴展爲所有可能的後續步驟。每個候選步驟的分數通過概率相乘得到。選擇具有最大概率的k個序列,並刪去其他候選項,然後重複該過程直到序列結束。)
參考文獻:
https://zhuanlan.zhihu.com/p/43534801
Attention
CNN+Seq2Seq+Attention
“在Seq2Seq結構中,編碼器Encoder把所有的輸入序列都編碼成一個統一的語義向量Context,然後再由解碼器Decoder解碼。在解碼器Decoder解碼的過程中,不斷地將前一個時刻的輸出作爲後一個時刻的輸入,循環解碼,直到輸出停止符爲止。”
複用編碼器前幾個隱藏層狀態(類似殘差網絡的思想),提高信息利用率,當輸出較長時更爲明顯,解決語義向量Context長度限制問題。由於w不同,形成了一種對編碼器不同輸入對應的注意力機制(權重越大注意力越強)。與前一個狀態拼接在一起形成一個新的向量輸入到隱藏層計算結果。
缺陷:前一時刻作爲會作爲後一個時刻的輸入,因此,前一時刻的輸出錯誤會導致下一時刻的輸出錯誤,影響訓練,爲了解決這個問題,提出了Scheduled Sampling(即在訓練中xt按照一定概率選擇輸入y(t-1)或t-1時刻對應的真實值,即標籤.,既能加快訓練速度,也能提高訓練精度。
參考文獻:
https://zhuanlan.zhihu.com/p/51383402
ASTER
將字符區域矯正後識別,ASTER = 矯正網絡 + Attention
Localization Network:檢測控制點
Grid Generator:生成映射關係,傳統方法,非DL
Sampler V:在原圖中採樣,生成矯正後圖像
缺陷:矯正網絡能力有限,若矯正不佳,影響圖像質量,更不利於識別。
參考文獻:
https://blog.csdn.net/weixin_30457065/article/details/97851173
ACE
將圖像分割爲多個子區域後(子區域數量與特徵圖尺寸有關),識別子區域的字符。
ACE用了近似計算的思想,如標籤爲CATCAT,按照CTC的思想,輸出目標爲第一個字符爲C,第二個爲A。。。,按照CTC的思路,目標物2個C,2個A,2個T。
缺陷:特徵圖的尺寸限制了所能預測的字符串的長度。最長目標字符串長度越長,輸入網絡的圖像需要越大,而對於中英文及標點而言,寬度不同,這個網絡對於真實的文本,需要的輸入非常大。
參考文獻:
https://blog.csdn.net/CHEN666CONG/article/details/94392249
MASKTEXTSPOTTER
在整張圖像上檢測單個字符,並拼接起來
RPN:候選區域網絡,生成候選文本區域
ROI Align: 提取候選區域特徵
Fast R-CNN : 生成更準確的迴歸框
Mask branch:全局文本分割 +字符分割
缺陷:標註量劇增
參考文獻: