前 言
本文主要解讀文字識別論文CRNN.
論文地址:chrome-extension://ikhdkkncnoglghljlkmcimlnlhkeamad/pdf-viewer/web/viewer.html?file=https%3A%2F%2Farxiv.org%2Fpdf%2F1507.05717v1.pdf
01
網絡結構
CRNN是一種卷積循環神經網絡結構,用于解決基于圖像的序列識別問題,特別是場景文字識別問題。CRNN網絡結構如下圖:
網絡結構包含三部分,從下到上依次為:
卷積層,作用是從輸入圖像中提取特征序列;
循環層,作用是預測從卷積層獲取的特征序列的標簽(真實值)分布;
轉錄層,作用是把從循環層獲取的標簽分布通過去重整合等操作轉換成最終的識別結果;
02
卷積層
CRNN卷積層由標準的CNN模型中的卷積層和最大池化層組成,自動提取出輸入圖像的特征序列。
與普通CNN網絡不同的是,CRNN在訓練之前,先把輸入圖像縮放到相同高度(圖像寬度維持原樣),論文中使用的高度值是32。
提取的特征序列中的向量是從特征圖上從左到右按照順序生成的,每個特征向量表示了圖像上一定寬度上的特征,論文中使用的這個寬度是1,就是單個像素。
特別強調序列的順序是因為在之后的循環層中,先后順序是LSTM訓練中的一個重要參考量。
03
循環層
循環層由一個雙向LSTM循環神經網絡構成,預測特征序列中的每一個特征向量的標簽分布(真實結果的概率列表),循環層的誤差被反向傳播,最后會轉換成特征序列,再把特征序列反饋到卷積層,這個轉換操作由論文中定義的“Map-to-Sequence”自定義網絡層完成,作為卷積層和循環層之間連接的橋梁。
在卷積層的上部建立一個深度雙向遞歸神經網絡,稱為遞歸層。遞歸層對特征序列x = x1......xT中每幀的標簽分布進行預測。遞歸層的優點有三方面。首先,RNN具有很強的序列上下文信息捕獲能力。使用上下文線索進行基于圖像的序列識別比單獨處理每個符號更加穩定和有用。以場景文本識別為例,寬字符可能需要幾個連續幀來充分描述。此外,有些歧義字在觀察其上下文時更容易區分,例如“il”通過字高對比比單獨識別更容易識別。
其次,RNN可以將誤差微分反向傳播到它的輸入,即卷積層,讓我們在一個統一的網絡中共同訓練遞歸層和卷積層。第三,RNN能夠對任意長度的序列進行操作,從開始到結束進行遍歷。
傳統的RNN單元在輸入層和輸出層之間有一個自連接的隱含層。每當它在序列中接收到一個幀 xt 時,它就用一個非線性函數更新它的內部狀態(或稱隱藏狀態)ht,這個函數接受當前輸入xt和上一個內部狀態ht-1: ht=g(xt,ht-1)。然后,基于ht進行預測yt。這樣就捕獲了過去的上下文{xt'}t'
LSTM是方向性的,它只使用過去的上下文。然而,在基于圖像的序列中,來自兩個方向的上下文是有用的,并且相互補充。因此,將兩個向前和向后的LSTM合并為一個雙向LSTM。此外,可以對多個雙向LSTM進行疊加,得到如上圖b所示的深雙向LSTM。與淺層結構相比,深層結構允許更高層次的抽象,并在語音識別任務中取得了顯著的性能改進。
在遞歸層中,誤差差沿上圖b所示箭頭的相反方向傳播,例如,通過時間反向傳播(BPTT)。在遞歸層的底部,傳播的微分序列被連接到映射中,反轉了將特征映射轉換為特征序列的操作,然后反饋到卷積層。在實踐中,我們創建了一個稱為“映射-序列”的自定義網絡層,作為卷積層和循環層之間的橋梁。
04
轉錄層
網絡結構簡圖:
Transcription層是將lstm層的輸出與label對應,采用的技術是CTC,可以執行端到端的訓練,用來解決輸入序列和輸出序列難以一一對應的問題,不要求訓練數據對齊和一一標注,直接輸出不定長的序列結果。對于一段長度為T的序列來說,每個樣本點t(t遠大于T)在RNN網絡的最后一層都會輸出一個softmax向量,表示該樣本點的預測概率,所有樣本點的這些概率傳輸給CTC模型后,輸出最可能的標簽,再經過去除空格(blank)和去重操作,就可以得到最終的序列標簽,CTC對齊輸入輸出是多對一的,例如he-l-lo-與hee-l-lo對應的都是“hello”。
基于詞典的轉錄
基于字典的模式,其實是就是上面CTC的基礎上,在獲得結果時,又從字典查了一遍,來更加提高準確率,而沒有字典的就只能取高概率的結果,少了從字典查這一步。
采用了由Graves等人提出的連接時序分類(Connectionist TemporalClassifification CTC) 層中定義的條件概率。該概率定義為:基于每幀的預測y=y1,y2......yT的標簽序列 l,它忽略了 l 中每個標簽的位置。因此,當我們以該概率的負對數作為訓練網絡的目標時,我們只需要圖像及其對應的標簽序列,避免了為個別字符標注位置的勞動。
條件概率的公式簡述如下:輸入是一個序列y=y1,y2......yT,其中T為序列長度。其中,每一個
是集合 L’ =LU 上的概率分布,而 L 包含任務中的所有標簽(例如所有英文字符),以及表示為的“空白”標簽。一個序列到序列的映射函數定義在如下序列上:
其中,T是長度,是預測概率。???映射??到標簽序列 I 上,通過先去除重復的標簽,再去除空白的標簽。例如:?? 映射 “--hh-e-l-ll-oo--”到“hello”( “-”代表空格) 。之后,定義條件概率為所有預測概率?到標簽序列 l 上的映射?的概率和:
其中,?的概率定義為p(??|y)=
其中,是標簽?在時間戳t的概率。
在基于詞典的模式中,每個測試示例都與一個詞典 D 相關聯。主要的,序列標簽通過選擇詞典中定義的擁有最高的條件概率來被選擇,例如,l?=
然而,對于較大的詞典,對詞典進行窮舉搜索,即對詞典中的所有序列計算條件概率,并選擇概率最大的一個,將非常耗時。為了解決這個問題,通過無詞典轉錄預測的標簽序列,在編輯距離度量下往往接近于ground-truth。這表明可以將搜索限制為最近鄰的候選對象? ,其中??是最大編輯距離,I'是為y在無詞序模式下轉錄的序列:
候選對象可以以bk樹數據結構被有效找尋,bk樹數據結是一種專門適用于離散度量空間的度量樹。bk樹的搜索時間復雜度為
因此,這個方案很容易擴展到非常大的詞典。在本方法中,離線地為詞典構造一個bk樹。然后,通過查找小于或等于編輯距離的查詢序列,用bk樹執行快速在線搜索。
無詞典的轉錄
以定義的條件概率最高的序列l?作為預測,
即在每個時間戳 t上獲取最可能的標簽,并將結果序列映射到l?。
審核編輯 :李倩
-
神經網絡
+關注
關注
42文章
4774瀏覽量
100897 -
圖像
+關注
關注
2文章
1087瀏覽量
40501 -
OCR
+關注
關注
0文章
145瀏覽量
16388
原文標題:OCR之CRNN論文解讀
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論