在前一篇文章中(詳見本公眾號文章:白話文本檢測經典模型 CTPN),介紹了文字識別在現實生活中的廣泛應用,以及文字識別的簡單流程:
其中「文本檢測」、「文本識別」是其中兩個關鍵環節,「文本檢測」已經在前一篇文章中介紹了詳細的介紹,本文主要介紹「文本識別」的經典模型CRNN及其原理。
在介紹CRNN之前,先來梳理一下要實現「文本識別」的模型,需要具備哪些要素:
(1)首先是要讀取輸入的圖像,提取圖像特徵,因此,需要有個卷積層用於讀取圖像和提取特徵。具體原理可詳見本公眾號的文章:白話卷積神經網絡(CNN);
(2)由於文本序列是不定長的,因此在模型中需要引入RNN(循環神經網絡),一般是使用雙向LSTM來處理不定長序列預測的問題。具體原理可詳見本公眾號的文章:白話循環神經網絡(RNN);
(3)為了提升模型的適用性,最好不要要求對輸入字符進行分割,直接可進行端到端的訓練,這樣可減少大量的分割標註工作,這時就要引入CTC模型(Connectionist temporal classification, 聯接時間分類),來解決樣本的分割對齊的問題。
(4)最後根據一定的規則,對模型輸出結果進行糾正處理,輸出正確結果。
以上就是「文本識別」模型的幾個必須具備的要素。
接下來要介紹的CRNN模型,也是基本由這幾部分組成的。
1、什麼是CRNN
CRNN(Convolutional Recurrent Neural Network,卷積循環神經網絡),是華中科技大學在發表的論文《An End-to-End Trainable Neural Network for Image-based Sequence Recognition and ItsApplication to Scene Text Recognition》提出的一個識別文本的方法,該模型主要用於解決基於圖像的序列識別問題,特別是場景文字識別問題。
CRNN的主要特點是:
(1)可以進行端到端的訓練;
(2)不需要對樣本數據進行字符分割,可識別任意長度的文本序列
(3)模型速度快、性能好,並且模型很小(參數少)
2、CRNN模型結構
CRNN模型的結構如下:
正如前面梳理的「文本識別」模型必須具備的要素,CRNN模型主要由以下三部分組成:
(1)卷積層:從輸入圖像中提取出特徵序列;
(2)循環層:預測從卷積層獲取的特徵序列的標籤分布;
(3)轉錄層:把從循環層獲取的標籤分布通過去重、整合等操作轉換成最終的識別結果。
下面將展開對這三個層進行介紹:
(1)卷積層
① 預處理
CRNN對輸入圖像先做了縮放處理,把所有輸入圖像縮放到相同高度,默認是32,寬度可任意長。
② 卷積運算
由標準的CNN模型中的卷積層和最大池化層組成,結構類似於VGG,如下圖:
從上圖可以看出,卷積層是由一系列的卷積、最大池化、批量歸一化等操作組成。
③ 提取序列特徵
提取的特徵序列中的向量是在特徵圖上從左到右按照順序生成的,用於作為循環層的輸入,每個特徵向量表示了圖像上一定寬度上的特徵,默認的寬度是1,也就是單個像素。由於CRNN已將輸入圖像縮放到同樣高度了,因此只需按照一定的寬度提取特徵即可。如下圖所示:
(2)循環層
循環層由一個雙向LSTM循環神經網絡構成,預測特徵序列中的每一個特徵向量的標籤分布。
由於LSTM需要有個時間維度,在本模型中把序列的 width 當作LSTM 的時間 time steps。
其中,「Map-to-Sequence」自定義網絡層主要是做循環層誤差反饋,與特徵序列的轉換,作為卷積層和循環層之間連接的橋梁,從而將誤差從循環層反饋到卷積層。
(3)轉錄層
轉錄層是將LSTM網絡預測的特徵序列的結果進行整合,轉換為最終輸出的結果。
在CRNN模型中雙向LSTM網絡層的最後連接上一個CTC模型,從而做到了端對端的識別。所謂CTC模型(Connectionist Temporal Classification,聯接時間分類),主要用於解決輸入數據與給定標籤的對齊問題,可用於執行端到端的訓練,輸出不定長的序列結果。
由於輸入的自然場景的文字圖像,由於字符間隔、圖像變形等問題,導致同個文字有不同的表現形式,但實際上都是同一個詞,如下圖:
而引入CTC就是主要解決這個問題,通過CTC模型訓練後,對結果中去掉間隔字符、去掉重複字符(如果同個字符連續出現,則表示只有1個字符,如果中間有間隔字符,則表示該字符出現多次),如下圖所示:
以上就是文本識別模型CRNN的介紹,該模型既可用於識別英文、數字,也可用於識別中文。一般是跟CTPN結合一起使用,使用CTPN進行文字的檢測,使用CRNN進行文字的識別。
本人使用CTPN+CRNN對中文識別出來的效果如下:
牆裂建議
2015年,Baoguang Shi 等人發表了關於CRNN的經典論文《 An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition 》,在論文中詳細介紹了CRNN的思想和技術原理,建議閱讀該論文以進一步了解該模型。
想要閱讀 完整版本 CRNN 論文內容,請關注本公眾號,然後回復「論文」關鍵字可在線閱讀經典論文的內容。
1、長按識別二維碼關注本公眾號「大數據與人工智慧Lab」(BigdataAILab)
2、在公眾號的消息框裡面回復「論文」關鍵字,即可在線閱讀 CRNN 的論文內容
推薦相關閱讀
搜索」大數據與人工智慧Lab「微信號(BigdataAILab),或掃描二維碼關注我們