1. 程式人生 > >自然場景文字處理論文整理(2)STN-OCR

自然場景文字處理論文整理(2)STN-OCR

今天是進入公司實習的第三週了,在小組內負責的工作主要是和自然場景文字檢測相關的內容。這裡把看過的論文做一下翻譯和整理,也方便自己日後檢視。
Paper:STN-OCR: A single Neural Network for Text Detection and Text Recognition
Github地址:https://github.com/Bartzi/stn-ocr

摘要

檢測和識別自然場景影象中的文字是一項具有挑戰性但尚未完全解決的任務。近年來,已經提出了幾種試圖解決兩個子任務(文字檢測和文字識別)中的至少一個的新系統。在本文中,我們提出了STN-OCR,這是邁向場景文字識別的半監督神經網路的一步,可以進行端到端的優化。與大多數由多個深度神經網路和幾個預處理步驟組成的現有作品相比,我們建議使用單個深度神經網路,該網路學習以半監督方式從自然影象中檢測和識別文字。 STN-OCR是一個整合並共同學習空間變換器網路的網路[16],可以學習檢測影象中的文字區域,以及文字識別網路,它採用識別的文字區域並識別其文字內容。我們研究了我們的模型在一系列不同任務(行為的檢測和識別以及文字行)上的行為方式。公共基準資料集的實驗結果顯示了我們的模型處理各種不同任務的能力,而整體網路結構沒有實質性變化。

1、介紹

文字在我們的日常生活中無處不在。文字可以在文件,道路標誌,廣告牌和其他物件(如汽車或電話)上找到。自動檢測和讀取自然場景影象中的文字是系統的重要組成部分,可用於幾個具有挑戰性的任務,如基於影象的機器翻譯,自動駕駛汽車或影象/視訊索引。近年來,在自然場景中檢測文字和識別文字的任務已經引起了計算機視覺和文件分析社群的極大興趣。此外,在計算機視覺的其他領域最近的突破[10,16,25,26]使得能夠建立比以前更好的場景文字檢測和識別系統[5,9,28]。

儘管可以看出光學字元識別(OCR)的問題已經解決了列印文件文字,但是檢測和識別自然場景影象中的文字仍然是具有挑戰性的。包含自然場景的影象表現出大量的光照變化,透視扭曲,影象質量,文字字型,不同的背景等。大多數現有的研究工作開發了端到端的場景文字識別系統,包括複雜的兩步,其中第一步是檢測影象中的文字區域,第二步是識別該識別區域的文字內容。大多數現有作品只關注這兩個步驟中的一個。

在本文中,我們提出了一個解決方案,該解決方案由單個深度神經網路(DNN)組成,可以學習以半監督的方式檢測和識別文字。這與現有作品相反,在現有作品中,文字檢測和文字識別系統以完全監督的方式單獨訓練。最近的工作[3]表明,卷積神經網路(CNNs)能夠學習如何解決複雜的多工問題,同時以端到端的方式進行訓練。

我們的動機是利用CNN的這些功能,建立一個端到端的場景文字識別系統,通過將任務劃分為更加像人類一樣的行為,分成較小的子任務並相互獨立地解決這些子任務。為了實現這一行為,我們學習了一個DNN,它能夠將輸入影象劃分為子任務(單個字元,單詞甚至文字行)並相互獨立地解決這些子任務。這是通過聯合學習使用迴圈空間變換器[16,31]作為注意機制和文字識別網路的定位網路來實現的(參見圖1,系統的示意圖)。 在此設定中,網路僅接收影象和該影象中包含的文字的標籤作為輸入。 文字的本地化是由網路本身學習的,使這種方法成為半監督。

我們的貢獻如下:(1)我們提出了一個系統,該系統是通過整合空間變換器網路來解決端到端場景文字識別的一個步驟。 (2)我們以半監督的方式訓練我們提出的端到端系統。(3)我們證明我們的方法能夠在一系列標準場景文字檢測和識別基準上達到最先進的有競爭力的水平。 (4)我們向研究界提供程式碼1和訓練模型2。

本文的結構如下:在第2節中,我們概述了與我們相關的其他研究人員的工作。第3節詳細描述了我們提出的系統,並提供瞭如何訓練這樣一個系統的最佳實踐。 我們在第4節中展示和討論我們在標準基準資料集上的結果,並在第5節中總結我們的發現。

2、相關工作

多年來,已經開發併發布了用於場景文字檢測和識別的不同方法的豐富環境。 幾乎所有系統都使用兩步過程來執行場景文字的端到端識別。 第一步是檢測文字區域並從輸入影象中提取這些區域。 第二步是識別文字內容並返回這些提取的文字區域的文字字串。

還可以將這些方法分為三大類:(1)依賴手工製作和人類先驗知識所提取出特徵的系統用於文字檢測和文字識別。 (2)系統使用深度學習方法和手工製作的功能,或兩個不同的深度網路用於這兩個步驟中的每一步。 (3)系統不包括兩步法,而是使用單個深度神經網路進行文字檢測和識別。 我們將在下面討論每個類別的一些系統。

手工製作的特徵
在開始時,基於手工製作的特徵和人類知識的方法已被用於執行文字檢測。這些系統使用MSER [24],Stroke Width Transforms [4]或HOG-Features [32]等功能來識別文字區域並將它們提供給系統的文字識別階段。 在文字識別階段,使用滑動視窗分類器[21]和使用HOG特徵[33]的SVM [34]或k-最近鄰分類器的集合。 所有這些方法都使用手工製作的功能,這些功能具有多種超級引數,需要專業知識才能正確調整它們以獲得最佳效果。

深度學習方法
最近的系統通過使用DNN的方法在端到端識別系統的一個或兩個步驟中基於手工製作的特徵交換方法。 Gómez和Karatzas [5]提出了一種特定於文字的選擇性搜尋演算法,該演算法與DNN一起可用於檢測自然場景影象中的(扭曲的)文字區域。 古普塔等人。 [9]提出了一種基於YOLO-Architecture [25]的文字檢測模型,該模型使用完全卷積深度神經網路來識別文字區域。 然後,通過這些方法識別的文字區域可以用作基於執行文字識別的DNN的其他系統的輸入。
Bissacco等人提出了一個完整的端到端架構,使用手工製作的功能執行文字檢測。識別的文字區域被二值化,然後用作深度完全連線的神經網路的輸入,該神經網路獨立地對每個找到的字元進行分類。 Jaderberg等人[15,17]提出了幾種使用深度神經網路進行文字檢測和文字識別的系統。[17] Jader-berg等人提出了一種滑動視窗文字檢測方法,該方法以多種解析度在影象上滑動卷積文字檢測模型。文字識別階段使用單個字元CNN,它跨越確定的文字區域。該CNN與用於文字檢測的CNN共享其權重。在[15] Jaderberg等人。建議使用具有用於文字檢測的額外邊界框迴歸CNN的區域提議網路和將整個文字區域作為輸入並且在預定義的單詞詞典上執行分類的CNN,使得該方法僅適用於一種給定語言。
Goodfellow等人。 [6]提出了一個房屋號碼的文字識別系統,由Jaderberg等人提煉。 [18]用於無約束的文字識別。該系統使用單個CNN,它將完整提取的文字區域作為輸入,並提供該文字區域中包含的文字。這是通過為給定單詞中的每個可能字元設定一個獨立分類器來實現的。基於這個想法,他等人。 [11]和Shi等人。 [27,28]提出了將從提取的文字區域中識別字符作為序列識別問題的文字識別系統。他等人。 [11]使用一種樸素的滑動視窗方法,建立文字區域的切片,用作其文字識別CNN的輸入。由文字識別CNN產生的特徵用作預測字元序列的遞迴神經網路(RNN)的輸入。在我們關於純場景文字識別的實驗中(參見4.3節瞭解更多資訊)我們使用了類似的方法,但是我們的系統使用了更復雜的滑動視窗方法,其中滑動視窗的選擇由網路自動學習而不是由手。施等人。 [27]利用CNN,該CNN使用完整文字區域作為輸入併產生一系列特徵向量,這些特徵向量被饋送到RNN,RNN預測提取的文字區域中的字元序列。該方法基於文字區域的寬度生成固定數量的特徵向量。這意味著對於僅包含幾個字元但與文字區域具有足夠多字元的寬度相同的文字區域,此方法將生成用作RNN輸入的相同數量的特徵向量。在我們的純文字識別實驗中,我們利用我們的方法的力量來學習在提取的文字區域中處理最重要的資訊,因此只產生儘可能多的特徵向量。施等人。 [28]通過首先新增額外的步驟來改進他們的方法,該步驟利用空間變壓器網路[16]的整流能力來糾正提取的文字行。 其次,他們在網路中添加了一種軟關注機制,有助於在輸入影象中生成字元序列。 在他們的工作中,Shi等人。 利用空間變換器作為額外的預處理步驟,使識別網路更容易識別影象中的文字。 在我們的系統中,我們使用空間變換器作為核心構建塊,以半監督的方式檢測文字。

端到端的可訓練方法
所提出的系統總是使用兩步法來檢測和識別場景文字影象中的文字。 雖然最近的方法利用深度神經網路,但他們仍然在任一步驟中或在兩個步驟的結果融合在一起的時刻使用大量手工製作的知識。 史密斯等人。 [30]提出了一種端到端的可訓練系統,能夠使用單個DNN檢測和識別法國街道名稱標誌上的文字。 與我們的系統相比,系統不可能提供影象中文字的位置,只能提取文字內容。 此外,我們的方法中使用的注意機制顯示出更像人類的行為,因為它依次本地化並識別來自給定影象的文字。

3、制定系統

試圖查詢和閱讀文字的人將以順序方式這樣做。 第一個動作是將注意力放在一行文字上,按順序讀取每個字元,然後處理下一行文字。 大多數用於場景文字識別的當前端到端系統不以這種方式執行。 這些系統試圖通過一次從影象中提取所有資訊來解決問題。 我們的系統首先嚐試按順序參加影象中的不同文字區域,然後識別每個文字區域的文字內容。為此,我們建立了一個簡單的DNN,包括兩個階段:(1)文字檢測(2)文字識別。 在本節中,我們將介紹文字檢測階段使用的注意概念和所提出系統的整體結構。 我們還報告了成功培訓此類系統的最佳實踐。

3.1 用空間變換器檢測文字

Jaderberg等人提出的空間變換器[16]是DNN的可微分模組,它採用輸入特徵對映I並對該特徵對映應用空間變換,產生輸出特徵對映O.這種空間變換器模組是三個部分的組合。 第一部分是計算函式f( loc)的定位網路,其預測要應用的空間變換的引數θ。 在第二部分中使用這些預測引數來建立取樣網格,該取樣網格定義輸入要素圖的哪些要素應對映到輸出要素圖。 第三部分是可微分插值方法,它採用生成的取樣網格並生成空間變換的輸出特徵對映O.我們將在以下段落中簡要描述每個元件。
關於STN網路結構的構成以及原理如下:

1、Localisation Network

Localisation Network的輸入是特徵圖U,輸出是變換引數θ,即θ=floc(U),該層的結構通常是一個全連線網路或者卷積網路後接一個迴歸層來訓練引數θ。θ的規模取決於具體的變換,當變換取二維仿射變換時,θ是一個6維(2*3)的向量。

2、Grid Generator
該層利用Localisation 層輸出的變換引數θ,將輸入的特徵圖進行變換,以仿射變換為例,這裡就需要上一篇部落格裡介紹的雙線性插值了,即輸出特徵圖上某一位置(xti,yti)根據變換引數θ對映到輸入特徵圖上某一位置(xsi,ysi),具體如下:
這裡寫圖片描述
但此時往往(xsi,ysi)會落在原始輸入特徵圖的幾個畫素點中間部分,所以需要利用雙線性插值來計算出對應該點的灰度值。需要補充的是,文中在變幻時用都都是標準化座標,即xi,yi∈[−1,1]。(如果不太理解仿射變換和雙線性插值,可以參考我的上一篇部落格 Spatial Transformer Networks論文筆記(一)——仿射變換和雙線性插值),文中給出了該層兩個例子,如下圖:
這裡寫圖片描述## 標題 ##
3、Sampler
在講過上面兩個部分後,我們可以知道,對於輸出特徵圖上的每一個點,都可以和輸入特徵圖上的某些畫素點灰度值建立具體的聯絡,具體表示成如下公式:
這裡寫圖片描述
上式中,Vci為輸出特徵圖上第c個通道某一點的灰度值,Ucnm為輸入特徵圖上第c個通道點(n,m)的灰度值,該點的灰度是由某種插值方法確定,k()為具體的取樣核,它定義了輸入和輸出特徵圖的重要關係。可以這樣理解:(1)輸出特徵圖上某一點Vci的灰度對應於輸入特徵圖上某一點(xsi,ysi)的灰度值,而這點的灰度值由周圍的若干點的灰度值Ucnm共同確定並且距離(xsi,ysi)越近(距離關係由xsi−m和ysi−m確定),影響越大(權重越大);(2)具體的灰度插值方法由k()中Φx和Phiy確定。當採用雙線性插值方法時,公式如下:

這裡寫圖片描述

與公式(3)不同的是,(5)中定義的雙線性插值使得目標灰度值只與(xsi,ysi)
周圍4個點的灰度有關。具體來說,當|xsi−m|或者|ysi−m|大於1時,對應的max()項將取0,也就是說,只有(xsi,ysi)周圍4個點的灰度值決定目標畫素點的灰度並且當1−|xsi−m|和1−|ysi−m|越小,影響越大(即離點(xsi,ysi))越近,權重越大。

3.2網路整體結構:

這裡寫圖片描述
我們工作中使用的網路包括兩個主要部分。 第一個是定位網路,它採用輸入影象並預測N個變換矩陣,它們應用於N個相同的網格,形成N個不同的取樣網格。 生成的取樣網格以兩種方式使用:
(1)用於計算所識別的文字區域的邊界框
(2)用N個取樣網格對輸入影象進行取樣,提取N個文字區域。 然後,在識別網路中使用N個提取的文字影象來執行文字識別。 通過僅提供關於每個文字區域的文字標籤的資訊來對端到端的整個系統進行訓練。

4.網路訓練技巧

用於訓練模型的訓練集X由一組輸入影象I和一組用於每個輸入影象的文字標籤L I組成。我們不使用任何標籤來訓練文字檢測階段。這個階段只是通過使用通過計算交叉熵損失或CTC損失獲得的誤差梯度來學習檢測文字區域。在我們的實驗中,我們發現,當從頭開始訓練時,一個檢測和識別兩個以上文字行的網路不會收斂。該問題的解決方案是執行一系列預訓練步驟,其中難度逐漸增加。此外,我們發現選擇用於訓練網路的優化演算法對網路的收斂有很大影響。我們發現使用隨機梯度下降(SGD)在較簡單的任務上預訓練網路是有益的,而Adam [20]則用於在具有更多文字行的影象上微調已經預先訓練好的網路。我們認為SGD在預訓練期間表現更好,因為學習率η在較長時間內保持不變,這使得文字檢測階段能夠探索輸入影象並更好地找到文字區域。隨著學習速率的降低,檢測階段的更新變得更小,並且文字檢測階段(理想地)落在已經找到的文字區域上。同時,文字識別網路可以開始使用提取的文字區域並學習識別該區域中的文字。在使用SGD訓練網路時,重要的是要注意選擇過高的學習率會導致模型早期出現分歧。我們發現,使用1-5和5-7之間的初始學習率幾乎適用於所有情況,除非網路只能進行微調。在這裡,我們發現使用Adam是更可靠的選擇,因為Adam以自適應方式選擇每個引數的學習率,因此不允許檢測網路像使用SGD時那樣徹底地進行探索。

後面的內容由於篇幅原因這裡就不提及了。主要就是針對不同的資料集,實驗的效果比對。