ICCV 2019丨CharNet:卷積字元網路

  • 2019 年 11 月 27 日
  • 筆記

自然場景下的文字檢測與識別是近年來的熱點研究方向之一,也是很多電腦視覺技術實現應用時的重要步驟。相較於技術已經相對成熟的列印文檔文字識別,自然場景中的文本識別仍具困難,比如文字的呈現可以有多種方向、多樣的顏色和字體等,這些情況都為文字檢測與識別技術在現實生活中的應用帶來了挑戰。

不同於過去把場景文字識別看作是文字檢測和文字識別兩個單獨的問題來處理,當前的研究熱點則是專註於實現端到端文字識別,即把文字檢測和文字識別統一到一個框架中。最近已有一些統一的文本檢測和識別框架出現,並取得了長足的進展,但大部分的框架都是基於 RoI Pooling 的兩階段演算法模型,而 RoI Pooling 會對識別性能造成較大的影響。碼隆科技在 ICCV 2019 上提出了一種單階段模型——卷積字元網路 – CharNet(Convolutional Character Networks)。CharNet 成功實現了在一次前向傳播內,同時解決文字檢測和識別這兩個問題。

碼隆科技 CharNet 主要貢獻為:1. 利用單個字元作為基本元素,巧妙地避免了需要同時優化 CNN 文本檢測和 RNN 文本識別模型的困難與限制;2. 針對字元標註難以獲取的問題,提出一個可以利用合成數據訓練字元檢測器的方法。該方法可以更好地將模型在合成數據上學到的知識遷移到真實數據上。

目錄

1 導論

2 卷積字元網路

2.1 概覽

2.2 字元分支

2.3 文本檢測分支

2.4 迭代字元檢測

3 實驗、結果與比較

3.1 迭代字元檢測演算法

3.2 文字檢測的結果

3.3 端到端文字識別結果

4 結論

1

導論

自然影像文本識別一直被認為是兩個連續但獨立的問題:文字檢測和文字識別。由於深度神經網路的成功,這兩個任務都取得了很大的進展。文字檢測的目的是對每一個文本實例預測一個文本框。當前最好的文字檢測方法都是從目標檢測或分割框架擴展而來。基於文字檢測的結果,文字識別的目標是從被摳出來的文本圖片中識別出一連串字元。一般來說,文字識別被轉換為一個序列標記問題,通常用基於卷積神經網路(CNNs)特徵的遞歸神經網路(RNNs)來解決。這種解決方案目前是最好的。

然而,通過這樣兩階段的方法實現文本識別通常有很多限制。首先,獨立地學習這兩個任務是一個次優的問題,因為這樣很難完全利用文本本身的性質。比如說,聯合的文字檢測和識別可以提供豐富的上下文資訊並且兩個任務可以實現互補。最近的工作已經證明這樣的聯合學習可以提升兩者的準確率。第二,兩階段的方法通常需要多個連續的步驟,這樣使整個系統變得複雜,並且使得識別結果很大程度上依賴於檢測性能的好壞。

最近,已經有很多方法嘗試去開發一個統一的文字檢測與識別框架(也叫端到端識別)。比如說,[2, 4] 通過添加一個 RNN 的分支到文字檢測模型來實現端到端識別,並且取得了很好的性能。雖然這些方法可以用單個模型完成文字檢測與識別,但是他們本質上還是屬於兩階段的框架。因此還是有以下幾個缺點。第一,他們仍然使用 RNN 序列模型去識別文字。基於 RNN 的模型是比較難與 CNN 文本檢測模型進行聯合優化的。因此這樣的模型需要大量的樣本去訓練,並且需要一個精心設計的複雜的訓練策略。這些問題限制了端到端模型的發展。第二,當前這些兩階段的框架都需要 RoI Pooling。因此,很難精確的摳出精確的文本區域。通常會有很多背景被包含在摳出來的特徵中。這不可避免的限制了文字識別的性能,尤其是對於多方向或者彎曲文本。

為了克服上述 RoI Pooling 的限制,He 等人 [2] 提出一個文本對齊層去精確的計算任意方向文本實例的卷積特徵,提升整個系統的性能。[4] 也提出在卷積特徵上進行多種仿射變換來增強文本資訊。但是,這些方法對於彎曲文本並不適用。此外,很多高性能的方法把單詞作為基本單元。但是,以單詞作為基本單元,通常需要把隨後的文字識別轉換為序列標定問題。如前面所述,這樣會引入 RNN 並且導致很多問題。此外,不像英文有很清晰的單詞的定義,很多語言比如說中文只有字元能作為一個清晰的基本單元。因此,相比單詞,字元是一個清晰並且更具有一般性的基本單元。更重要的是,字元識別是直截了當的並且可以直接使用一個簡單的 CNN(而不是RNN)模型來完成。

貢獻:在這篇文章中,我們提出以單個字元作為基本單元的,用於端到端文字檢測與識別的卷積字元網路(簡稱 CharNet)。此外,我們第一次用單個 CNN 模型來解決端到端文字檢測和識別,並且顯著提升了當前兩階段方法的性能。我們提出的 CharNet 可以直接進行字元檢測與識別,還有文本實例(比如,單詞)檢測。因此我們不需要基於 RNN 的單詞識別分支,從而導致一個簡單,緊湊且性能強大的模型。這個模型可以直接輸出單詞的文本框,字元框以及對應的字元類別,如圖1所示。我們總結我們的主要貢獻如下:

第一, 我們提出了一個單階段的,用於聯合文本檢測與識別的 CharNet。我們引入了一個新的字元檢測與識別的分支。這個分支被無縫整合進當前的文本檢測模型中。我們利用字元作為基本單元,因此避免 RoI Pooling 以及 RNN 識別分支帶來的影響。這兩者是當前兩階段模型的主要限制。

第二, 我們開發了一個迭代字元檢測方法。這個方法可以更好的遷移這個模型從合成數據上學到的字元檢測能力到真實數據上,從而生成真實數據上的字元標註。這使得我們的方法可以使用真實數據訓練而無需額外的人工字元級別的標註。

第三, CharNet 穩定地超過最近的兩階段端到端識別框架,比如說 [2, 5, 4,6]。我們把 ICDAR 2015 上端到端識別的最好結果從 65.33% 提升到 71.08%(使用通用字典),也把 Total-Text 上最好的結果從 54.0% 提升到 69.23%。此外,即使完全不使用字典,我們的方法也可以達到很不錯的精度。比如說,在 ICDAR 2015 可以取得 67.24%。

2

卷積字元網路

在這一章,我們首先詳細地描述我們提出的 CharNet。然後,我們將描述我們提出的迭代字元檢測方法。這個方法可以利用合成數據自動生成真實影像上的字元級標註。在這個工作中,我們使用「文本實例」代表一個高層次的文本概念。依賴於上下文,一個文本實例可能是一個單詞或者一行文本。

2.1 概覽

如之前討論,當前的端到端文字識別演算法普遍被 RoI 與 RNN 識別所限制。我們提出的 CharNet 是一個單階段的卷積架構,主要由兩個分支組成:(1)一個用於單字元檢測與識別的字元分支;(2)一個預測文本實例外接框的文本實例檢測分支。這兩個分支是並行的,組成一個聯合文字檢測與識別網路,如圖 2 所示。這兩個分支可以被無縫地整合在一起,組成一個可以端到端訓練的模型。訓練這樣一個模型需要字元級標註和文本實例級標註。在測試的時候,CharNet 可以在一次前向傳播中直接輸出文本實例外接框,以及字元外接框和對應的字元類別。

大多數當前的文本數據集不包括字元級標註,因為獲取這樣的標註是比較耗時的。如前文所述,我們開發了一個迭代的學習方法去自動生成這樣的標註。我們的方法使得我們的模型可以先從有字元標註的合成數據上學習字元檢測的能力,然後漸漸遷移這個能力到真實數據上。這使得我們的模型可以自動生成真實數據的字元標註,並以弱監督的方式學習。

主幹網路。我們使用 ResNet-50 以及 Hourglass 作為我們的主幹網路。對於 ResNet-50,類似於 [9], 我們採用 4 倍下取樣的特徵圖作為我們的最終特徵圖。由於我們採用高解析度的特徵圖,因此我們的 CharNet 可以檢測非常小的文本。對於 Hourglass 結構,我們堆疊兩個 Hourglass 模組,如圖 2 所示。最終的特徵圖也被上取樣到原圖的 1/4 大小。我們使用 Hourglass 網路的兩個變種,Hourglass-88 和 Hourglass-57。Hourglass-88 從 [3] 中的 Hourglass-104 修改而來。我們移除了兩個下取樣階段並且把每個 Hourglass 模組最後階段的層數減半。通過進一步移除每個階段一半的層數,我們構造了 Hourglass-57。對於兩種變種,我們都沒有像 CornerNet [3] 一樣採用中間監督。

2.2 字元分支

當前基於 RNN 的識別方法主要在單詞級別進行識別。相比單個字元分類,這種方法的搜索空間很大,因此比較複雜並且通常需要大量的訓練數據以及更長的訓練時間。最近的工作表明,如果引入編碼了豐富字元資訊的字元級注意力機制,這些基於 RNN 的識別方法的性能可以得到顯著的提高。這些注意力機制使模型有能力去更準確的識別字元並且減小了搜索空間,帶來了性能提升。這表明,對於基於 RNN 的文字識別來說,準確的標示字元的位置是非常重要的。這啟發了我們去嘗試直接簡化識別為單字元識別。

為了這個目標,我們引入一個新的字元分支到我們的模型中。這個字元分支的功能是檢測和識別單個字元。這個字元分支使用字元作為基本單元,輸出字元的外接框以及字元的類別。具體來說,這個分支由一系列卷積層組成,密集地在主幹網路的最終特徵圖上滑動。他的輸入特徵圖的解析度是原圖的 1/4。這個分支包含三個子分支,分別用於文本實例分割,字元檢測以及字元識別。文本實例分割分支和字元檢測分支有 2 個 3×3 的卷積層以及 1 個 1×1 的卷積層。字元識別分支還有一個額外的 3×3 卷積層,總計 4 層。

文本實例分割子分支使用一個二值掩碼圖作為監督,輸出一個 2 通道的特徵圖,分別代表有文字和沒有文字的概率。字元檢測分支輸出一個 5 通道的特徵圖,在每個位置估計一個字元外接框。與 EAST [9] 相似,我們用 5 個參數去參數化這個外接框,分別代表當前位置到 4 個邊界的距離以及整個框的角度。對於字元識別子分支,我們生成一個 68 通道的特徵圖。每個通道代表一種特定字元類別出現的概率。我們考慮 68 種字元,包括 26 個英文字母,10 個數字以及 32 個特殊字元。所有輸出特徵圖的空間解析度都是相同的(1/4 原圖)。在測試的時候,我們保留置信度大於 0.95 的那些字元框作為我們的結果。每個生成的字元框還對應一個字元類別。我們從 68 通道的字元識別特徵圖上使用 Softmax 獲取這個類別。

訓練字元分支需要字元級別的標註。相比單詞級別的標註,字元級標註需要花費更多的人力去獲取所以要昂貴得多。為了避免這個額外代價,我們開發了一種迭代字元檢測機制。我們將在 2.4 節描述這個方法。

2.3 文本檢測分支

因為我們最終需要文本實例級別的輸出。所以我們設計文本檢測分支去檢測文本實例(單詞或者文本行)。這些檢測出來的文本實例可以提供豐富的上下文資訊去幫助我們合併這些檢測出來的字元成為完整的文本實例(然後作為他們的識別結果)。沒有文本實例而直接使用字元的資訊(比如說字元位置或者幾何特徵)去合併字元非常複雜,尤其是當多個文本實例位置比較接近或者文本是多方向或彎曲的時候。根據不同類型的文本實例,我們的文本實例檢測分支可以有多種形式(也可以直接使用當下的文本實例檢測方法)。在這裡,我們以多方向單詞和彎曲文本行作為例子。

多方向文本。我們使用稍做修改的 EAST 檢測器作為我們的文本實例檢測分支。它包含兩個子分支,一個用於文本實例分割,另一個用於文本實例的外接框檢測。對於文本實例分割,我們生成一個 2 通道特徵圖,分別指示是文本的概率和不是文本的概率。外接框被 5 個參數參數化,其中 4 個表示當前位置到四個邊界的距離,1 個用於表示文本方向。我們用兩個 3×3 卷積外加一個 1×1 卷積生成這些預測。當測試的時候,我們選擇置信度大於 0.95 的外接框作為最終檢測。

彎曲文本。對於彎曲文本,類似於Textfield [8], 我們使用一個額外的方向場去編碼方向資訊。方向場分支,與上面的文本實例與字元分支平行,被用於分離鄰接的文本實例。

最終結果生成。我們使用這些檢測到的文本實例級外接框去合併字元檢測的結果,作為最終文本實例檢測和識別結果。如果一個字元與一個文本實例的 IoU 大於 0,那麼這個字元就被分配到這個文本實例。最終 CharNet 的輸出是文本實例的外接框,以及它所包含字元的外接框和對應的字元類別。

2.4 迭代字元檢測

訓練我們的模型既需要字元級標註(以及對應的字元類別)也需要單詞級標註。但是,因為獲取字元級標註是比較昂貴的,所以目前的大多數數據集(比如說 ICDAR 2015 或者 Total-Text)都不包括字元級標註。因此,我們開發了一個迭代字元檢測方法,使得我們的模型可以使用合成數據(比如說 Synth800k [1])生成真實數據上的字元級標註。這個字元生成方法使得 CharNet 可以以弱監督的方式來訓練(只使用單詞級別的人工標註)。

一個更直接的方法是直接用合成數據訓練 CharNet。但是因為合成數據和真實數據有巨大的差異,這樣的方法很難在真實數據上取得滿意的結果。如表 1 所示,這樣的方法只能得到比較低的文字檢測和識別準確率。然而,相比文本識別器,我們觀察到文本檢測器更容易從合成數據上泛化到真實數據上。如 [7] 所示,只使用英文和中文訓練的文本檢測器也可以檢測其他語言的文字。這個現象啟發我們利用字元檢測器的泛化能力去提升整個系統的泛化能力。

從本質上講,我們的方法是從一個在合成數據上訓練的模型開始,然後漸漸地提升模型的泛化能力。其中的關鍵是遷移模型在合成數據上學到的文本檢測能力到真實數據上。我們使用一個迭代的過程。使得我們的模型能漸漸地產生「正確」的字元外接框。我們使用一個簡單的規則去判斷一組字元外接框是否正確:如果在一個文本實例中,我們的演算法檢測到的字元外接框的個數等於這個文本實例的人工標註的字元個數,那麼我們就認為這組字元外接框是正確的。注意雖然大多數數據集沒有單字元標註,但大多數端到端的文字識別數據集都包含人工標註的每個文本實例的字元串。下面是我們提出的迭代文字檢測演算法的詳細描述:

1. 我們首先在包含文本實例標註和單個字元標註的合成數據上訓練一個初始的模型。然後我們用這個模型在真實數據的訓練集圖片上去測試。這樣我們就可以得到由這個模型預測的訓練集上的字元外接框;

2. 我們利用前面描述的判斷正確字元框的規則篩選出正確的字元框。然後通過對應這些字元框與人工標註的識別字元串,我們可以得到這些字元框的字元類別。然後我們使用這些字元標註去訓練我們的模型。注意我們沒有使用前面我們模型預測的字元類別,因為我們發現這些預測很多都是錯誤的,會導致我們模型的性能變差;

3. 然後我們迭代上述過程。隨著迭代的進行,我們模型字元檢測的能力漸漸增強,反過來我們預測的「正確的」字元標註的個數也會漸漸增長,如圖 3 和表 2 所示。

3

實驗、結果與比較

3.1 迭代字元檢測演算法

我們在 ICDAR 2015 上評估我們的迭代字元檢測演算法。首先,如表 1 所示,如果直接使用只在合成數據訓練的模型,我們的演算法很難達到比較好的準確率。這表明合成數據與真實數據之前存在巨大的差異,導致了較差的泛化能力。我們也通過一些實驗評價我們提出的迭代字元檢測演算法提取字元標註的能力。如表 2 所示,隨著迭代的進行,我們的方法可以為越來越多的單詞提取字元級別的標註,隨之也帶來端到端識別性能的提升。最後我們可以為訓練集中 92.65% 的單詞提取字元標註。這些訓練數據已經足夠我們訓練一個端到端的文字識別模型。

3.2 文字檢測的結果

因為我們的方法是一個端到端的文字閱讀框架。所以我們的演算法理所當然的也可以進行單純地文字檢測。在這一節,我們評價我們演算法的文字檢測性能,以及聯合優化兩個任務對檢測帶來的性能提升。

如表 3 所示,在 ICDAR 2015 上,不使用聯合優化,我們的檢測基準線檢測演算法已經可以超過之前最好的兩個演算法。如果使用端到端聯合優化,我們的演算法可以遠遠的超過這兩個演算法。值得注意的是,在我們的框架下面,聯合優化可以對檢測演算法帶來更大的提升。這可以證明我們的演算法更利於識別演算法幫助檢測演算法。如表 5 和表 6 所示,我們演算法在 Total-text 和 MLT 2017 上也達到了最好的檢測性能。

3.3 端到端文字識別結果

在這一節,我們展示我們演算法的端到端文字識別的結果。我們在 ICDAR 2015 和 Total-text 上評價我們的演算法。表 4、表 5 所示,我們的演算法在這兩個數據集上都達到了當前最好的性能。

4

結論

我們提出單階段端到端文字閱讀框架 – CharNet。在 CharNet 中,我們引入了一個新的字元檢測與識別分支。這個字元分支可以被無縫地整合進文字檢測框架,從而形成了第一個可以同時解決文字檢測與識別兩個問題。我們的框架可以避免使用基於 RNN 的識別分支。我們展示通過我們提出的 CharNet,文字檢測與文字識別可以被更有效地訓練並且可以更好地協作,從而提升了整個系統的精度。進一步,我們也提出了一個迭代字元檢測演算法。它可以遷移網路從合成數據上學到的知識到真實數據上。另外,CharNet 是一個緊湊的模型,有更少的模型參數,並且可以處理彎曲的文本。在 ICDAR2015、MLT 2017 和 Total-text 上廣泛實驗表明,CharNet 一致地超過了當前的方法。

參考文獻

[1]A. Gupta, A. Vedaldi, and A. Zisserman. Synthetic data for text localisation innatural images. In Proceedings of the IEEE Conference on Computer Vision andPattern Recognition, pages 2315–2324, 2016. 5, 6

[2]T. He, Z. Tian, W. Huang, C. Shen, Y. Qiao, and C. Sun. An end-to-endtextspotter with explicit alignment and attention. In Proceedings of the IEEEConference on Computer Vision and Pattern Recognition, pages 5020–5029, 2018.1, 2, 3, 4, 6, 7, 8

[3]H. Li, P. Wang, and C. Shen. Towards end-to-end text spotting withconvolutional recurrent neural networks. In Proc. ICCV, pages 5238–5246, 2017.2, 3

[4]P. Lyu, M. Liao, C. Yao, W. Wu, and X. Bai. Mask textspotter: An end-to-endtrainable neural network for spotting text with arbitrary shapes. 2018. 1, 2,3, 7, 8

[5]J. Ma, W. Shao, H. Ye, L. Wang, H. Wang, Y. Zheng, and X. Xue.Arbitrary-oriented scene text detection via rotation proposals. IEEETransactions on Multimedia, 2018. 8

[6]Z. Tian, W. Huang, T. He, P. He, and Y. Qiao. Detecting text in natural imagewith connectionist text proposal network. In European conference on computervision (ECCV), pages 56–72. Springer, 2016. 2, 5

[7]W. Huang, Y. Qiao and X. Tang. Robust scene text detection with convolutionneural network induced mser tree. In European conference on computer vision(ECCV), 2014. 2

[8]Y. Xu, Y. Wang, W. Zhou, Y. Wang, Z. Yang, and X. Bai. Text field: Learning adeep direction field for irregular scene text detection. IEEE Transactions onImage Processing, 2019. 5, 7, 8

[9]X. Zhou, C. Yao, H. Wen, Y. Wang, S. Zhou, W. He, and J.Liang. East: anefficient and accurate scene text detector. In Proc. CVPR, pages 2642–2651, 2017. 1, 2, 4, 5, 8