圖像文字識別初探(一)-CRNN(Convolution Recurrent Neural Network)和DTRN(Deep-text Recurrent Network)

最近參加了一個圖像文字識別比賽,之前沒有接觸過這個方向,所以經過多方查找,目前選定五篇論文,希望能從這五篇論文中找出能解決的方法。

圖像文字識別初探(一)-CRNN(Convolution Recurrent Neural Network)和DTRN(Deep-text Recurrent Network)

圖像文字識別初探(二)-FAN(Focusing Attention Network)

圖像文字識別初探(三)-Mask TextSpotterr

圖像文字識別初探(四)-- single-shot text detector

CRNN(Convolution Recurrent Neural Network)

論文:An End-to-ENd Trainable Neural Network for Image-based Sequence Recognition and Its application to Scene Text Recognition (2015)

這篇論文來自於華科白翔老師團隊,將特徵提取(feature extraction),序列模型(sequence modeling)和transcription整合到一個完整的網絡,這個神經網絡則被稱爲CRNN(Convolution Recurrent Neural Network)儘管這個網絡包含好幾種網絡架構,但是它可以在一個損失函數下進行訓練,CRNN網絡的整體架構如下圖所示,從下往上看,CNN從給定的圖片中提取特徵序列(feature sequence),在CNN網絡之上,RNN(bi-LSTM)將根據卷積層生成的特徵序列做預測,最後,在CRNN之上的the transcription layer將RNN層的預測結果翻譯成一個label sequence。

特徵提取(Feature Sequence Extraction)

在CRNN中卷積組件是由卷積和最大池化層組成,也就是標準卷積網絡中去除全連接層,卷積層的作用是從輸入圖像中提取特徵序列特徵序列(feature sequence)中的每一個特徵向量(feature vector)是從特徵圖(feature maps)中從左向右按列生成,也就是說,第i-th個特徵向量是由所有特徵圖第i列生成的特徵向量連接而成,每一列的寬度被設置爲一個像素。因爲卷積層,最大池化和按元素的激活函數的平移不變性(translation invariant),所以每一列的特徵圖對應着原圖中的一個矩形區域,這個矩形區域則被稱爲receptive field,而且這個矩形區域是與其在特徵圖中相對應的從左向右的列是相同順序的,那麼就可以認爲特徵序列中的每一個特徵向量也是與原圖中的每一個receptive field相對應的,如下圖所示,輸入圖像是要固定爲同一height值的。

序列標註(Sequence Labeling)

在卷積層後接上一個雙向RNN(bidirectional RNN)作爲recurrent layer, RNN是將每一個在卷積層生成的特徵序列\mathbf{x}=x_{1},\cdots, x_{T}中的x_{t}預測爲一個label distribution y_{t}選擇RNN的原因一是在於RNN是有很強的能力捕捉到一個序列的上下文信息,在上述的特徵提取中,可以看到一個寬字符可能有好幾個連續的receptive field描述,對基於圖像的序列識別使用上下文比將單個字符單獨對待要更加有效,而且對於一些含糊的字符,觀察其上下文信息後也會很好區分;而是因爲RNN也能夠後向傳播(back-propagates)進行權重更新,從而使得可以將CNN和RNN連接成一個完整的網絡;三是因爲RNN可以處理任意長度的序列,上文中對輸入圖片的高進行固定,是固定每一個receptive field的大小(每一個receptive field的寬爲一個像素,也是固定的),那麼這樣的話,可以對任意寬度的圖像進行處理。

CRNN中的RNN架構選擇的是雙向LSTM,這裏不再贅述

Transcription

Transcription的作用是將RNN生成的預測轉化成一個label sequence。論文裏採用的CTC(Connectionist Temporal Classification)層中定義的條件概率,該概率是指在RNN生成的預測\mathbf{y}=y_{1}, \cdots, y_{T}的條件下得到label sequence \mathbf{l}的概率。因此就可以使用該概率的負log-likelihood作爲目標函數進行訓練網絡,那麼數據僅僅需要圖片和圖片相對應的label sequence即可。

假設經過recurrent layer後的輸出爲\mathbf{y}=y_{1}, \cdots, y_{T},每一個y_{t}\in \mathbb{R}^{{L}'}是在集合{L}'=L\cup上概率分佈,其中L包含任務中的所有lable和一個空白blank label。在序列\pi \in {L}'^{T}上定義一個sequence-to-sequence的函數映射B,B是將\pi映射到\mathbf{l},通過先移除相同的labels,隨後移除空白。那麼條件概率則被定義爲B將所有\pi映射到\mathbf{l}的概率和p\left( \mathbf{l}| \mathbf{y}\right)=\sum_{\mathbf{\pi}:B\left ( \mathbf{\pi} \right )= \mathbf{l}}p\left ( \mathbf{\pi} | \mathbf{y} \right ) = \sum_{\mathbf{\pi}:B\left ( \mathbf{\pi} \right )= \mathbf{l}} \prod_{t=1}^{T}y_{\pi_{t}}^{t}, 其中y_{\pi_{t}}^{t}是指在t時刻存在label \pi_{t}的概率。

transcription分爲lexicon-free transcription 和 lexicon-based transcription,具體計算方法還得閱讀其他論文,目前這一塊還不是重點,得到實現時再細看。

網絡訓練(Network Training)

假設訓練數據爲X=\left \{ \mathbf{I}_{i}, \mathbf{l}_{i} \right \}_{i},其中\mathbf{I}_{i}是訓練圖片,\mathbf{l}_{i}是ground truth label sequence,目標方程是要最小化條件概率的負log-likelihood,O=-\sum_{\mathbf{I}_{i},\mathbf{l}_{i}\in X}log p\left ( \mathbf{l}_{i}| \mathbf{y}_{i} \right ),其中y_{i}是指CNN和RNN從輸入圖像\mathbf{I}_{i}計算得來的序列。

網絡架構借鑑了VGG架構,輸入圖片的高度值固定爲32,網絡訓練時採用SGD,對於optimization則使用Adadelta。

總結:

  • CRNN是端到端的訓練網絡,直接從序列標籤中學習
  • 對識別的對象不限定長度,僅僅需要height normalization
  • 帶字典和不帶樣本的樣本都可以

DTRN(Deep-Text Recurrent Network)

論文:Reading Scene Text in Deep Convolutional Sequences

DTRN是來自於深圳先進技術研究院喬宇老師團隊,將場景文字識別看作序列標註問題。思想和上述的白翔老師團隊的類似,都是充分利用CNN和RNN的特性,CNN提取特徵,RNN預測序列,將兩者整合到一個統一的網絡裏,實現端到端的訓練。

DTRN總架構如下圖所示,整個系統是端到端的,它以一個帶有單詞的圖片作爲輸入,直接輸出相對應的單詞序列,不需要預處理和後向處理等那等操作。首先由一個特殊的CNN網絡架構,將輸入圖片編碼成一個有順序的序列(an ordered swquence),然後使用一個RNN網絡將CNN輸出的序列解碼成一個單詞串。對於輸入的圖像和輸出的單詞串的長度是不加限制的。

通過在輸入圖片上滑動子窗口的形式保證在CNN模型下輸出一個有序的特徵序列。CNN網絡架構如下,CNN的輸入圖片大小爲32×32,與滑窗的窗口大小一致,maxout CNN模型有五個卷積層,每個卷積層後面跟隨two or four-group Maxout操作。對於輸入的圖片,將它的高度resize成32,並且保持它原先的縱橫比。

 下面的RNN選擇雙向LSTM架構,由於LSTM輸出的長度與目標單詞串的長度不一致,因此引入CTC將LSTM的序列輸出匹配到目標字符串,這個和上面的RCNN類似,不再描述。

總結:

  • 端到端訓練
  • 可以利用有用的文本信息識別高度模糊的詞彙,不需要預處理和後期處理
  • 深度CNN特徵足可以抵抗嚴重扭曲的單詞
  • 包含詞彙圖片中明確的順序信息,這是劃分單詞串的根本
  • 不依賴預先定義的詞典,可以處理未知單詞和任意單詞串
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章