論文閱讀(Weilin Huang——【AAAI2016】Reading Scene Text in Deep Convolutional Sequences)


 

Weilin Huang——【AAAI2016】Reading Scene Text in Deep Convolutional Sequences

 


 

目錄

  • 作者和相關鏈接
  • 方法概括
  • 創新點和貢獻
  • 方法細節
  • 實驗結果
  • 問題討論
  • 總結與收獲點
  • 參考文獻

作者和相關鏈接

 

方法概括

  • 解決問題:單詞識別
  • 主要流程:maxout版的CNN提取特征,RNN(LSTM)進行分類,CTC對結果進行調整。整個流程端到端訓練和測試,和白翔的CRNN參考文獻1)方法幾乎一樣,以下為流程圖

創新點和貢獻

  • idea的出發點——把單詞識別問題看成是sequence labelling的問題

    • 傳統的OCR流程:
      1. 字符級分割
      2. 字符分類器
      3. 后處理(語言模型)
    • 傳統OCR方法的問題:
      1. 字符分割難度大,准確率受限 → 影響識別的整體性能                           —— 不用分割(當做序列識別問題)
      2. 忽略了上下文信息 → 削弱識別的魯棒性和可靠性                                        —— 用RNN做分類器可以充分利用上下文信息
      3. 一般用低級(像素級)或中級特征(HOG,strokelet之類)→ 魯棒性差     —— 用CNN學習魯棒的特征(CNN的區域卷積具備平移不變形,對形變具有魯棒性)
  • 方法的優點

    • 能正確識別有歧義的文字圖像
    • 能正確識別形變大的文字圖像
    • 不用字典(可以識別新詞,任意沒有語義的字符串)
    • 效果好!(IC03-50 = 97, IC03-FULL = 93.8,SVT-50 = 93.5

方法細節

  • maxout CNN

    • maxout激活函數和ReLU激活函數的對比

      • ReLU只是簡單的截斷(小於0),Maxout則是一個分段線性函數(可以擬合任何的凸函數)
      • 參數個數:ReLU只有一套參數(1個W和b),maxout有多套參數(k個W和k個b)

 

    • maxout的示例

      • maxout實際上就是把濾波器分成k=2(本例中取2)組,不同組的神經元輸出互相一一對應,取其中最大的作為最后的輸出
      • 如下圖所示,W1j和W2j是兩組濾波器,每組是64個濾波器,上下兩個濾波器互相對應,分別與上一層的feature map對應位置進行卷積,取其中大的為新的輸出。例如藍色和橙色,藍色得到的結果比橙色大,故最后8*8*64的輸出的feature map對應的位置為藍色(藍色濾波器卷積的結果),灰色和紅色中紅色更大。

 

    • 本文的maxout CNN 網絡結構

      • 五個卷積層,前四層提特征,最后一層分類器(實際上沒用?),沒有池化層,沒有全連接層
      • 第四層的128維即為CNN特征(要輸入到RNN中的)
      • 前3層的maxout分為2組,后面兩層為4組。

 

  • RNN(LSTM)

    • LSTM為雙向LSTM
    • xi就是CNN的128維特征,T表示單詞的滑窗個數(高度歸一化到32,步長為1進行滑窗,每個窗口得到一個長度為128的cnn特征——xi)
    • pi是一個長度為37的概率向量(因為不考慮字母的大小寫共36類,加1個背景類,共37類

識別(從CNN特征到最后的單詞輸出)流程

    • 流程圖

 

    • RNN對每個位置的窗口進行識別:X = (x1, x2, ..., xT) → P = (p1, p2, ..., pT)
    • CTC得到單詞輸出:P = (p1, p2, ..., pT) → L = (l1,l2,..., lk) ,例如,L = ‘apartments'
      • CTC的全稱:connectionist temporal classification (參考文獻2
      • CTC的公式
        • 其中,π表示某長度為T的某一個序列,例如,π = ’a__pp__aart_mm_een_t_s__'
        • B表示簡單的去掉空格和去重操作,例如B(π) = B(’a__pp__aart_mm_een_t_s__') = apartments
        • P(π|p)=π的每個位置上屬於某個字符的概率的乘積:P(π|p) = P(π1|p) × P(π2|p) ×P(π3|p) × .... ×P(πT|p) 

      • CTC實際上是用動態規划方法算出所有可能的串的概率(每個位置的概率乘積),然后選擇其中概率最大的串作為最后輸出

 

實驗結果

  • 識別結果(表格帶字典,右圖不帶字典,為任意字符串)

 

  • 結果示例

 

問題討論

  1. maxout 的CNN中的最后一個softmax層似乎沒用到?直接用RNN做的分類,整個過程也是端到端的訓練

總結與收獲點

  1. 本文方法和白翔的CRNN的不同點在於:第一,白翔的CNN是普通的CNN,本文CNN用的是maxout的CNN。第二,白翔的CNN最后用了一個Map-to-Sequence把CNN最后一層的feature map上的每個滑動窗口直接拉成一列一列的特征輸出到RNN中,而這篇文章的CNN是原圖中的每個32*32個大小的滑動窗口,直接得到第四層的一個卷積向量作為該窗口的特征(最后一層用的濾波器大小和該窗口對應的feature map大小一樣,故得到1*1的值),雖然實際上大同小異。其他關於RNN和CTC的用法幾乎一致,白翔的文章還提到了用字典和不用字典的兩種識別策略。
  2. 本篇最大的亮點把識別問題看成sequence labelling問題,把CNN和RNN放在一個網絡中進行端到端訓練(這一點也和白翔他們一樣)

 

參考文獻

  1. Xiang Bai——【PAMI2017】An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition
  2. Graves, A.; Fernandez, S.; Gomez, F.; and Schmidhuber, J. 2006. Connectionist temporal classification: Labelling unsegmented sequence data with recurrent neural networks. IEEE International Conference on Machine Learning (ICML)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM