天天看點

CRNN模型

CRNN論文解析

CRNN 算法詳解

目錄

  • 一、描述
  • 二、網絡結構
  • 三、CNN結構
  • 四、RNN結構
  • 五、CTC模型
  • 六、模型訓練
  • 七、實驗
    • 7.1 資料集
    • 7.2 實施細節
  • 相關研究
    • CNN網絡
    • RNN網絡
    • 非深度學習的機器學習算法

論文:https://arxiv.org/pdf/1507.05717.pdf

此文檔位址 提取碼:2020

基于圖像的序列識别是計算機視覺領域長期以來的研究課題。本文研究了場景文本識别問題,這是基于圖像的序列識别中最重要和最具挑戰性的任務之一。提出了一種集特征提取、序列模組化和轉錄為一體的神經網絡體系結構。與以往的場景文本識别系統相比,本文提出的架構具有四個獨特的特點:

  • 端到端的算法模型;
  • 可處理任意長度的序列,不涉及字元分割或水準尺度歸一化;
  • 不受任何預定義詞彙的限制,在無詞彙和基于詞彙的場景文本識别任務中都取得了優異的成績;
  • 小模型,效果良好,實際應用價值高。
小結:算法在 III-5K、ICDAR、街景文字資料集上做了baseline的訓練,其表現優于現有技術(2015年),在遷移性方面,在樂譜識别方面表現良好,明顯驗證了該算法的通用性。

本文的主要貢獻是提出了一種新的神經網絡模型,該模型的網絡結構是專門為識别圖像中的序列類目标而設計的。由于該神經網絡是DCNN和RNN的結合,是以将該神經網絡模型命名為卷積遞歸神經網絡(CRNN)。對于類序列對象,CRNN與傳統的神經網絡模型相比,有幾個明顯的優勢:

  • 可以直接從序列标簽(例如單詞)中學習,不需要詳細的注釋(例如字元);
  • 不需要手工制作特征,也不需要進行二值化/分割、元件定位等預處理步驟;
  • 與RNN具有相同的性質,能夠産生一個标簽序列;
  • 不受序列類對象長度的限制,在訓練和測試階段隻需要高度歸一化;
  • 場景文本(單詞識别)上取得比現有技術更好或更具競争力的性能;
  • 比标準的DCNN模型包含更少的參數,消耗更少的存儲空間.
作者的track
  1. 使用CNN網絡對文本區域進行檢測;
  2. 使用RNN網絡對候選區域内的文字進行序列預測;
  3. 使用CTC進行文字預測。

一個端到端的模型,主要由CNN、RNN、CTC模型組合得到。

模型架構圖如圖所示:

CRNN模型

CNN架構負責從自然場景圖檔中識别到單詞區域,即目标檢測的候選區域;RNN負責将候選區域的特征圖序列化結構做遞歸神經網絡預測,這裡可以了解為從特征圖到字元編碼,如這裡的

-s-taatte

;經過 transcription layer 實作單詞的預測。

在CRNN模型中,卷積層的組成部分是通過使用标準CNN模型中的卷積層和最大池層(去掉全連接配接層)來建構的。該元件用于從輸入圖像中提取連續的特征表示。在輸入網絡之前,所有的圖像都需要縮放到相同的高度。然後從卷積層元件生成的特征圖中提取出一系列的特征向量,卷積層元件是循環層的輸入。具體來說,特征序列的每個特征向量在特征圖上按列從左到右生成。這意味着第i個特征向量是所有映射的第i列的串聯(平鋪)。在我們的設定中,每一列的寬度固定為單個像素。

CRNN模型

如圖所示:Fearture Sequence的每一個特征向量,是下方特征圖所有通道的第\(i\)列平鋪後的特征向量.

作者使用了雙向遞歸神經網絡模型,額,就是LSTM。

主要的特點:

  • RNN具有很強的序列上下文資訊捕獲能力;(基于上下文識别字元會更加準确)
  • 其次,RNN可以将誤差微分反向傳播到它的輸入,即卷積層,使我們可以在一個統一的網絡中聯合訓練循環層和卷積層;
  • 不定長:RNN能夠對任意長度的序列進行操作,從開始到結束進行周遊。

雙向RNN結構有利于擷取上下文資訊,使用多層LSTM結構有利于擷取進階語義,在NLP領域有很好的性能提升,是以作者這裡使用了多層LSTM結構疊加。

CRNN模型

​ a. 基本LSTM單元的結構。LSTM由一個單元子產品和三個門組成,即輸入門、輸出門和遺忘門。

​ b. 本文采用的深度雙向LSTM結構。将正向LSTM(從左到右)和反向LSTM(從右到左)結合在一起就形成了雙向LSTM。多層雙向LSTM疊加後形成深雙向LSTM。

這裡兩個層級之間有一個Map-to-Sequence layer進行連接配接。

參考資源連結:

  • https://zhuanlan.zhihu.com/p/42719047
  • https://blog.csdn.net/liuxiaoheng1992/article/details/83660557

轉錄是RNN将每幀預測轉換為标簽序列的過程。從數學上講,轉錄是在每幀預測的條件下找到機率最高的标簽序列。在實踐中,存在着兩種轉錄方式,即無詞典轉錄和基于詞典轉錄。詞典是一組被預測限制的标簽序列,例如拼寫檢查詞典。在無詞彙模式下,預測不需要任何詞彙。在基于詞典的模式中,通過選擇機率最大的标簽序列來進行預測。

額:說那麼多,實際這部分就是語言模型。不管你是磕磕巴巴“說”出來的單詞,語言模型都會給出最可靠的結果。

這裡作者選用了CTC模型進行RNN輸出标簽的處理。CTC模型在場景文字識别領域可以算是一個baseline的技術點。

定義

\(l\) 為模型預測的label,這裡即為字元,\(\textbf{L}\)為序列,即輸出向量labels;

\(y_{t}\) 為RNN模型預測的輸出,CTC模型的輸入, \(\textbf{Y}\)為CTC輸入的序列;

CTC算法即為:\(\underset{\textbf{Y}}{argmax} P\left ( \textbf{L}|\textbf{Y}\right )\)

目标函數:\(-logP\left ( \textbf{L}|\textbf{Y}\right )\)

​ 目标函數為條件機率的負對數似然函數。額,說白了就是統計裡面的條件機率--->對數似然--->求解參數。

CRNN模型
備注

Lexicon-free transcription 獨立轉換

​ 作者這裡使用了\(\Pi\)各個元素之間互相獨立,即\(y_{t}\)之間互相獨立,\([-, -, h,h,-,e,l,-,l,l,-,o,o,-,-]\)之間互相獨立。基于兩兩獨立假設,每一個\(y_{t}\)隻需要求解最可能的“字元”,這樣模型變得很簡單了。但是這兩個序列明顯不獨立啊,而且序列内部是有相關性的,這個相關性主要是語言模型造成的。那麼這種相關性很強嗎?實際上從特征工程上講,這種相關性不是強相關,這裡我無法給出嚴格的數學證明,我們可以從語言模型本身出發了解,在一個語言模型下,某單詞字元序列我們假設其為強相關的,那麼當字元可重複時,這種相關性就大打折扣了,如果再加空白符,那麼它還能強相關嗎?是以作者使用獨立性假設,取得了很好的效果,說明這種相關性是很弱的,如果是強相關,這裡訓練的模型一定會識别性能很差。

​ 若哪一天可以解決這種弱相關,那時我們一定處于強人工智能時代。

Lexicon-based transcription 基于字典的轉換

​ 作者在這部分告訴我們,假設我們考慮每個字元(最終的輸出字元)的相關性,即我們不考慮中間過程,那麼我們要對每一個序列考慮排列組合的情況,感覺要了老命了,如字元有60個,假設現在最終的序列長為10,那我們要考慮\(60^{10}\),這可不是一個小數目,再加上複雜的數學計算,額,裂開了。這種情況我們時間是還是在對齊的狀态說的,而輸入、輸出序列本身就不能對齊,這是真的太難了;另一方面我們要考慮的對象是單詞而不是字元,是以實際遠大于60,如論文中給出的是5000個詞。

​ 在這個時候,論文給出了一種近似算法。

​ \(L^{*}\approx B\left ( \underset{L\in \delta \left ( {L}' \right ) }{argmax}\ p\left ( L|Y \right ) \right )\),其中\({L}'\)是中從\(\textbf{Y}\)轉換後的中間狀态,如\([-, -, h,h,-,e,l,-,l,l,-,o,o,-,-]\)。\(\delta \left ( {L}' \right )\)是中間狀态的最大編輯距離的鄰域,主要這裡的最大編輯距離是一個超參數,你得提前定啊!

​ 那麼怎麼搜尋鄰域内的單詞呢?嗯,作者這裡提出了BK-tree,這個算法是編輯距離裡面做拼寫檢查的,這個知識點已經忘了,點點連結了解一下吧!

​ 作者還提到他在測試中使用了 Hunspell spell-checking dictionary。

  1. 網絡可以對圖像和序列進行端到端訓練,省去了在訓練圖像中手工标注所有單個成分的過程。不然你得标框,再标label。
  2. 使用随機梯度下降優化(SGD),在RNN中使用BPTT反向傳播計算。
  3. 使用Adadelta優化,做學習率的自動調整。一鍵進入優化方法。為什麼使用這個,反正,作者實驗後覺得這個在這就是好。

  • 訓練資料集:Synth 論文:Synthetic data and artifificial neural networks for natural scene text recognition

    該資料集包含800萬張訓練圖像及其對應的ground truth詞。這樣的圖像是由合成文本引擎生成的,非常逼真。我們的網絡在合成資料上訓練一次,并在所有其他真實世界的測試資料集上測試,沒有任何微調他們的訓練資料。盡管CRNN模型是純合成文本資料訓練的,但它在标準文本識别基準的真實圖像上工作得很好。

  • 測試資料集:ICDAR 2003、 ICDAR 2013、 IIIT 5k-word、Street View Text。

  • 模型架構
    Type Confifigurations
    Transcription -
    Bidirectional-LSTM #hidden units:256
    Map-to-Sequence
    Convolution #maps:512, k:2 × 2, s:1, p:0
    MaxPooling Window:1 × 2, s:2
    BatchNormalization
    #maps:512, k:3 × 3, s:1, p:1
    #maps:256, k:3 × 3, s:1, p:1
    Window:2 × 2, s:2
    #maps:128, k:3 × 3, s:1, p:1
    #maps:64, k:3 × 3, s:1, p:1
    Input W × 32 gray-scale image

    采用了1x2的MaxPooling使得方框扁平化,因為我們的文字是長序列;

    normalization在模型訓練中有很好的效果;

DCNN網絡被提出之後,很多學者用這種架構的網絡來提取字元,這種方法通常需要訓練一個強大的字元檢測器,以便準确地檢測和裁剪出原始單詞圖像中的每個字元;另一種方法将場景文本識别作為一個圖像分類問題,為每個英語單詞(總計90K單詞)配置設定一個類标簽。這是一個龐大的訓練模型,類的數量龐大,很難推廣到其他類序列對象,如中文文本、樂譜等,因為此類序列的基本組合數量可能超過100萬個。綜上所述,目前基于DCNN的系統還不能直接用于基于圖像的序列識别。

小結:這裡我們注意到,識别每一個單詞或者字元,假設算法可以\(100\%\)的識别正确字元、單詞。但是在自然場景的序列化上面,我們會遇到組合爆炸的情況!

遞歸神經網絡(RNN)模型是深度神經網絡家族的另一個重要分支,主要用于處理序列。

RNN的優點之一是在訓練和測試中都不需要序列目标圖像中每個元素的位置。但是在我們的任務場景中,需要需處理圖檔的特征圖到序列化特征。

  • Graves等人在手寫數字識别項目中,預處理為特征序列階段,選擇了幾何特征和圖像特征實作特征提取;
  • Su and Lu: Accurate scene text recognition based on recurrent neural network使用了單詞圖像的HOG(方面梯度直方圖)特征。

預處理步驟獨立于流水線中的後續元件,是以現有的基于RNN的系統不能以端到端的方式進行訓練和優化。

  • 對單詞圖像編碼(圖向量),對單詞生成詞向量,同一個向量空間:識别就變為檢索問題;
  • 使用中層特征進行場景文本識别,這種方法甚至比前面的深度學習方法效果還好。具體特征采集手段見論文。

清澈的愛,隻為中國

繼續閱讀