怎样快速识别 英文地址中包含非英文字符_[论文笔记]端到端的场景文本识别算法--CRNN 论文笔记...
論文地址:https://arxiv.org/abs/1507.05717
開源代碼:https://github.com/bgshih/crnn
1. 摘要
基于圖片的序列識別是計算機視覺領域一個長期研究的課題,其中非常重要且有挑戰性的就是場景文本識別問題。本文針對這個問題,提出了一個新的神經網絡結構,即 CRNN,它將特征提取、序列模型化以及轉錄都集成到一個統一的框架中。對比之前的工作,它有以下四個特點:
實驗的數據集包括了 IIIT-5K,Street View Text 以及 ICDAR,在這些數據集上 CRNN 的性能都超過了之前的工作。
2. 簡介
基于圖片的序列識別問題有這幾個特點:
目前也有一些工作將 DCNN 應用于這個問題,主要是兩個方面的做法:
RNN也是常用于處理序列的算法,它的一個優點是對于一張序列物體圖片,在訓練和測試中不需要每個元素的位置。但需要做一個關鍵的預處理,將輸入的物體圖片轉成圖片特征的序列。這個預處理操作一般是獨立于訓練流程中,即這使得采用 RNN 的方法沒辦法做到端到端的訓練和優化。
本文的主要貢獻就是提出一個專門設計用于序列物體識別的新網絡模型--CRNN,它結合了 CNN 和 RNN 兩個算法。其優點有這幾個:
3. 方法
CRNN 的網絡結構如下所示:
主要是分為三個組件,由下至上,分別是CNN網絡、RNN 網絡以及轉錄層。工作流程是這樣的:
整個 CRNN 網絡雖然包括不同的網絡結構,比如 CNN 和 RNN,但是可以通過一個損失函數來聯合訓練。
3.1 特征序列提取
第一部采用的是移除了全連接層的 CNN 網絡,也就是主要是卷積層和最大池化層。由于之前采用 CNN 來處理場景文本識別問題的工作,其實都無法解決目標物體的長度可變問題,所以 CRNN 的做法是將深度特征轉換為序列表示,從而讓其不受序列類物體長度變化的影響。
在輸入圖片之前,首先需要做的一個預處理步驟是將所有圖片的高度都縮放為相同的高度,因為是對一行文本的識別,所以高度需要統一,而寬度不限制。
接著就是提取圖片的特征,得到一個特征序列,需要注意的是,這個特征序列如下圖所示,是從左到右按列生成的,即每一列特征對應原圖中的一個矩形框區域,也可以說是感受野(receptive field)。
特征序列的寬度,在本文的設定中是固定為 1,即輸出是
,3.2 序列標簽
在 CNN 網絡中對輸入圖片提取特征,并得到特征序列后,接下來就是 RNN 網絡部分。RNN 網絡部分將對特征序列里的每一幀
進行預測,輸出得到對應的標簽分布 。這里使用 RNN 網絡的優點有這三個:
傳統的 RNN 是可以利用到上一個狀態的信息來進行預測的,但是存在一個梯度消失的問題,這會限制 RNN 可以存儲的上下文長度,并且也對訓練增加了負擔。為了解決這個問題,所以就有了 LSTM 算法,LSTM 如下圖(a)所示,一個 LSTM 包含了一個記憶單元和三個乘法門,分別是輸入、輸出和遺忘門。LSTM 的特別設計是可以捕獲在基于圖片的序列中經常出現的長期依賴性。
不過 LSTM 只是單向的,只能使用到過去的上下文信息,但在基于圖片的系列中,過去和未來的上下文都是很有幫助的,因此本文采用的是雙向的 LSTM,并且將多個雙向 LSTM 進行堆積在一起,組成了一個深度雙向 LSTM,如下圖(b)所示。
在實際應用中,這里還設計了一個網絡層,叫做"Map-to-Sequence"層,在 CNN 和 RNN 之間,主要是在反向傳播中,讓 RNN 的誤差微分序列從特征圖轉換為特征序列的形式,然后傳回到 CNN 中。
3.3 轉錄層
最后轉錄層是將 RNN 輸出的每幀預測轉換為一個標簽序列,從數學是來說就是找到概率最大的一個標簽序列。一般來說分為兩種情況,帶有字典和沒有字典的情況:
- 如果測試集帶有字典,那么輸出結果就是計算出所有字典的概率,選擇最大的作為最終預測的結果;
- 如果測試集沒有字典,也就是測試集沒有給出測試集包含哪些字符,那么就選擇概率最大的作為最終的預測結果。
3.3.1 標簽序列的概率
CRNN 采用在論文《 Connectionist temporal classifification: labelling unseg mented sequence data with recurrent neural networks》中提出的 CTC( Connectionist Temporal Classifification) 層定義的條件概率。
這個條件概率是在每幀預測為 y, 標簽序列為 l 的情況下定義的,它省略了每個標簽在 l 中的位置信息,因此可以采用負對數似然函數作為目標函數來訓練網絡,然后只需要圖片以及對應的標簽序列,而不需要知道每個字符的位置的標注信息。
這里簡單介紹這個條件概率的定義。輸入是一個標簽序列:
,其中 T 是序列的長度。這里每個標簽 ,其中 表示任務中所有的標簽(比如所有的英文字符)加上一個空白字符。另外定義一個序列轉換函數 B ,它負責將一個序列 轉換為最終的標簽序列 l。這個轉換操作,首先是移除
里重復的字符以及空白字符,比如將一個序列 “--hh-e-l-ll-oo--”(這里用 - 表示空白字符)轉換為 "hello",注意這里重復的字符之間如果有空白字符'-',那么是不合并的,即 'l-la' 轉換得到 'lla',而 'll-a'轉換得到的是 'la' 。然后條件概率的定義就是如下所示,即將序列
的字符都轉換為 的概率之和。其中
是在時間戳 t 的時候擁有標簽 的概率。上述第一個等式直接計算看起來是不可行的,但是它可以按照 CTC 論文中提出的**“向前—向后”(forward-backward)**算法高效的計算。
更詳細的介紹可以查看這篇文章:
https://zhuanlan.zhihu.com/p/43534801
總結一下,CTC是一種Loss計算方法,用 CTC 代替 Softmax Loss,訓練樣本無需對齊。CTC 的特點:
- 引入blank字符,解決有些位置沒有字符的問題
- 通過遞推,快速計算梯度
3.3.2 沒有字典的轉換
沒有字典的情況下,就是選擇概率最大的標簽序列 l 作為輸出結果。也就是說:
簡單說在初始序列
的階段,選擇每個時間 t 里概率最大的標簽 ,然后再通過映射函數 B 轉換得到最終的標簽序列 l。3.3.3 帶字典的轉換
如果是有帶有字典
的情況,那么預測的結果就是在字典 D 中根據公式(1) 計算得到的條件概率最大的標簽序列。即:但這種做法的問題就是如果字典非常的大,比如帶有 5 萬個單詞的字典中,逐個計算條件概率是一件非常耗時的做法。
為了解決這個問題,參考在沒有字典的情況下預測的結果,可以發現采用編輯距離度量的結果非常接近于真實標簽結果。所以,這里可以通過使用最近鄰候選集來限制搜索的范圍,定義最近鄰候選集
,其中 是最大的編輯距離, 是在按照沒有字典情況下由 y 轉換得到的標簽序列,所以最終的標簽序列可以按如下所示得到:這里候選集 N 可以通過《 Some approaches to best match fifile searching》中提出的 BK 樹結構高效得到,這是一種度量樹,特別適合離散的度量空間,其搜索時間復雜度是
,這里 表示字典的大小。在本文中,BK樹通常是先離線構建好,這樣就可以實現快速的在線搜索。
3.4 網絡訓練
定義數據集
,其中 表示訓練圖片,而 是真實的標簽序列。目標函數是最小化負對數似然函數,如下所示:4. 實驗
4.1 數據集
本文是先在一個包含 800 萬訓練圖片的數據集上進行訓練,然后在其他常用的數據集的測試集進行測試,并對比其他算法的結果。
訓練集采用的是 Jaderberg 公開的一個合成數據集 Synth(論文:Synthetic data and artifificial neural networks for natural scene text recognition)。
采用的四個常用的基準場景文本識別數據集分別是:
4.2 實現細節
CRNN 的網絡參數如下所示:
可以看到 CNN 部分是采用 VGG 網絡模型,但做出了一些修改:
對于第一個修改,這里需要說明一下,首先因為輸入圖片是進行調整到
, 即高度統一為 32,那么假設一張包含 10 個字符的圖片,大小是 ,經過上述的 CNN 后得到的特征尺度就是 ,剛好就符合了在 CNN 部分說的每一列特征對應原圖上的一個矩形框區域。第二點是因為盡管 CNN 部分只有 7 層,相對不是非常深,但是因為后面接著 RNN,RNN 并不好訓練,所以這里是加入了兩個 batch normalization 層來加快訓練的速度。
訓練階段,所有圖片都統一調整為
大小,而測試時候的圖片,只是將高度統一調整為 32,寬度則是保持長寬比的情況下進行調整,但至少是 100。4.3 對比結果
對比實驗結果如下所示,CRNN 基本是在所有數據集上都做到了性能最好的情況,只有 3 種情況下性能不是最好的,分別是在 IC03 數據集是全集以及不使用字典,還有 IC13 測試集但不提供字典的情況。
另外,文章還設置了這幾個對比的角度:
- E2E Train:是否端到端訓練的形式;
- Conv Ftrs:采用 CNN 的特征還是手動設計特征;
- CharGT-Free:是否提供了字符級別的標注;
- Unconstrained:是否只限制在特定的字典,能否處理不在字典上的單詞
- Model Size:模型的大小
5. 總結
CRNN 是結合了 CNN +LSTM+CTC 的優勢:
- 首先用 CNN 提取圖像的卷積特征,不需要手動設計特征;
- 接著用 LSTM 進一步提取圖像卷積特征中的序列特征
- 最后引入 CTC 解決訓練時候字符無法對齊的問題。
可以在只需要基本的單詞級別的標簽和輸入圖片就可以實現端到端的訓練。
CRNN 是一個通用的框架,可以處理多種基于圖片的序列識別問題,不僅是英文單詞、音樂分數,還有中文的識別問題。
參考
總結
以上是生活随笔為你收集整理的怎样快速识别 英文地址中包含非英文字符_[论文笔记]端到端的场景文本识别算法--CRNN 论文笔记...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乌鲁木齐接收转业士官条件
- 下一篇: python装饰器常见问题_关于pyth