在前一篇文章中(詳見本博客文章:大話文本檢測經典模型 CTPN),介紹了文字識別在現實生活中的普遍應用,以及文字識別的簡單流程:算法
其中「文本檢測」、「文本識別」是其中兩個關鍵環節,「文本檢測」已經在前一篇文章中介紹了詳細的介紹,本文主要介紹「文本識別」的經典模型CRNN及其原理。網絡
在介紹CRNN以前,先來梳理一下要實現「文本識別」的模型,須要具有哪些要素:分佈式
(1)首先是要讀取輸入的圖像,提取圖像特徵,所以,須要有個卷積層用於讀取圖像和提取特徵。具體原理可詳見本公衆號的文章:白話卷積神經網絡(CNN);函數
(2)因爲文本序列是不定長的,所以在模型中須要引入RNN(循環神經網絡),通常是使用雙向LSTM來處理不定長序列預測的問題。具體原理可詳見本公衆號的文章:白話循環神經網絡(RNN);oop
(3)爲了提高模型的適用性,最好不要要求對輸入字符進行分割,直接可進行端到端的訓練,這樣可減小大量的分割標註工做,這時就要引入CTC模型(Connectionist temporal classification, 聯接時間分類),來解決樣本的分割對齊的問題。性能
(4)最後根據必定的規則,對模型輸出結果進行糾正處理,輸出正確結果。學習
以上就是「文本識別」模型的幾個必須具有的要素。大數據
接下來要介紹的CRNN模型,也是基本由這幾部分組成的。人工智能
一、什麼是CRNNspa
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)模型速度快、性能好,而且模型很小(參數少)
二、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的思想和技術原理,建議閱讀該論文以進一步瞭解該模型。
關注本人公衆號「大數據與人工智能Lab」(BigdataAILab),而後回覆「論文」關鍵字可在線閱讀經典論文的內容。
推薦相關閱讀