之前的一篇綜述中,我簡要介紹了自然場景文字檢測識別(STR)領域:

在綜述的末尾為大家推薦了兩個開源包,其中之一就是今天要介紹的Attention OCR。儘管近兩年先進的STR模型如雨後春筍般湧現,但現有的模型大多專注於英文的檢測識別。雖然理論上模型可以推廣至中文字元,但是一方面中文字元數量遠多於英文,模型效果未知;另一方面中文預訓練模型的缺乏使得演算法的直接應用和遷移學習較為困難。Attention OCR源於2019年12月由北京航空航天大學和中科院自動化研究所的研究者發表在arxiv上的“A Feasible Framework for Arbitrary-Shaped Scene Text Recognition”,它提出了一種中英文通用的STR模型,贏得了ICDAR2019 Robust Reading Challenge on Arbitrary-Shaped Text Competition的冠軍。之所以推薦這個模型,是因為它具有以下幾個優點:中英文通用、準確性高、程式碼開源和有預訓練模型。簡而言之,親測好用!(題圖取自[1])

Attention OCR的整體架構分為檢測和識別兩個獨立的部分。檢測部分模型使用了Cascade Mask RCNN,識別部分使用了Attention LSTM。下面我對這兩個部分分別做詳細的介紹。

一,檢測演算法

(1) Cascade Mask RCNN

傳統的Faster RCNN架構中,模型預設了不同形狀大小的錨框,每一個錨框在做位置迴歸以後形成一個目標框提案,它與真實目標有不同的交疊(IOU),我們將其稱為提案的品質。在模型訓練過程中,通常我們設定一個閾值,對於品質低於閾值的提案,我們認為其對應於背景(負例),僅計入目標/背景二分類的損失;而對於品質高於閾值的提案,我們認為其對應於目標(正例),需要同時計入二分類和目標框位置迴歸的損失。我們在訓練時設定的這一閾值也被稱為檢測模型的品質。

毫無疑問,檢測模型的品質直接影響了最終模型的準確性。當閾值設定較低,訓練時很多偏差較大的提案也被判為正例,導致模型推斷時對偏差較大的提案也賦予了較大的目標機率,最終輸出的目標框中含有較多的假正例,如下圖(a)。當閾值設定較高,一方面,模型訓練時只有極少的提案被判為正例,使得目標框迴歸任務的訓練樣本太少,容易產生過擬合;另一方面,訓練時識別模型的輸入都是高品質的提案,而推斷時目標框提案的品質沒有保證,品質不匹配會降低檢測模型的效能。因此,閾值設定形成了一個兩難境地。

自然場景文字檢測識別 - Attention OCR

低品質的檢測網路容易產生較多假正例,圖片取自[4]

為了解決這一問題,加州大學聖迭戈分校(UCSD)的研究者創新地提出了Cascade RCNN。他們研究發現,當初始錨框的品質與檢測模型的品質大致匹配時,模型做位置迴歸後輸出的目標框的品質最好,而且相比於輸入錨框品質有所提高。例如下圖,藍線、綠線和紅線分別對應品質為0。5、0。6、0。7的檢測模型,當輸入提案的品質較低(小於0。6)時,位置迴歸輸出的品質排序為藍線-綠線-紅線,即低品質的模型對低品質的輸入提案表現更好;而當輸入提案的品質較高(大於0。8)時,位置迴歸輸出的品質排序為紅線-綠線-藍線,即高品質的模型對高品質的輸入提案表現更好。並且模型輸出的品質高於輸入(灰線),即模型可以提高目標框的品質。因此,透過級聯多個品質逐漸提高的檢測模型單元,上一個的輸出作為下一個的輸入,不斷精細調節文字框的位置大小,提高其品質,可以解決上述的兩難問題。文章的實驗結果也證實了這一模型達到了SOTA的效能。

自然場景文字檢測識別 - Attention OCR

輸入提案與檢測模型品質吻合時,模型輸出效果最佳,圖片取自[4]

Cascade Mask RCNN中,模型為每一級額外增加了一個影象分割任務,其整體思想是一致的。

(2)Inception Net

Cascade Mask RCNN僅僅設計了一種網路的整體框架,具體在每一級使用什麼樣的檢測單元,依然需要根據具體情境來設定。在Attention OCR中,作者採用了Inception系列網路。Inception系列網路是由Google的研究者提出的一種卷積神經網路,其最大的優點在於減少了網路的引數數量和計算複雜度,從而在同樣的算力下可以設計更深更寬的網路架構。具體而言,其使用多層Inception單元疊加,每一個單元具有類似下圖的結構,由多個並行的卷積和池化操作構成,最後再將結果連結起來。Inception單元使用的卷積核通常較小,而且在執行計算量較大的3x3和5x5卷積前,會先透過一層1x1卷積減少通道的數量,這些做法顯著提升了模型的計算效率。

自然場景文字檢測識別 - Attention OCR

Inception典型結構單元,圖片取自[5]

具體而言,Attention OCR使用了Inception v3的思想,其結構單元如下圖所示。在Inception v3中,模型進一步縮小了卷積核尺寸,先用連續兩層3x3卷積代替一層5x5卷積,再用連續兩層1x3和3x1卷積代替3x3卷積,極大地減少了引數的數量。另一方面,文字目標具有縱橫比較大的特點,長條形的1x3和3x1卷積剛好適應了這一特性。除此之外,作者在第一級檢測單元前也預設了扁平和豎高的初始錨框。

自然場景文字檢測識別 - Attention OCR

Attention OCR中的Inception結構,圖片取自[1]

Attention OCR使用了Cascade Mask RCNN作為檢測框架,Inception Net作為Cascade每一級的單元。輸出了文字目標的影象分割結果以後,用包圍目標的最小矩形作為最終輸出結果。

二、識別演算法

Attention OCR使用的識別演算法是Attention LSTM。在STR中,識別演算法解決的核心問題是如何將長度不匹配的影象深層卷積特徵與文字序列對應起來。LSTM非常適合於解決序列的對齊問題,廣泛應用於Seq-to-Seq模型作為編碼和解碼器。而注意力機制(Attention)則幫助模型在解碼特定字元時,將注意力集中在影象中該字元對應的畫素點位置,可以顯著的提升模型準確性。關於LSTM和Attention在STR中應用的簡介可見之前的綜述:

自然場景文字檢測識別 - Attention OCR

識別模型架構Attention LSTM,圖片取自[1]

具體而言,Attention OCR中,檢測模型的結果,即文字區域的深層卷積特徵,首先透過仿射變換生成LSTM的初始狀態。在後續每一次傳播時,網路首先根據之前單元隱變數與影象卷積特徵的相似度,計算對於每一個卷積層畫素點的注意力權值,並加權平均得到注意力語境變數。如下圖所示,注意力權值圖可以反映當前單元對應的影象中字元位置,即LSTM當前單元將注意力集中在了對應的需要識別的字元上。接著,LSTM利用注意力語境變數,上一單元的變數和輸出計算當前單元的變數和輸出,由此不斷迴圈遞迴。輸出向量是256維的字元嵌入向量,最後透過嵌入矩陣和softmax層得到的每個字典字元的機率。轉換為文字時,只需要取機率最大的字元輸出。文章中作者使用的詞典有5435個字元,涵蓋了所有英文字元,阿拉伯數字和大多數常用漢字。

自然場景文字檢測識別 - Attention OCR

注意力權值視覺化,圖片取自[1]

在文章中作者提出,由於受限於GPU視訊記憶體,模型訓練時他們採用了檢測和識別模型分別訓練的方式。理論上而言,檢測和識別可以同時訓練和進行端到端的預測,進一步提高模型準確性和速度。

三、總結

綜上所述,Attention OCR採用了Cascade Mask RCNN的檢測演算法和Attention LSTM的識別演算法,可以檢測識別任意形狀的中英文文字。模型贏得了ICDAR2019 Robust Reading Challenge on Arbitrary-Shaped Text Competition的冠軍,並且在另外幾個比賽任務中也表現出色。模型的結果案例可見題圖和下圖。

自然場景文字檢測識別 - Attention OCR

模型可以檢測識別任意形狀的文字,圖片取自[1]

模型程式碼已開源在github上,並且作者公佈了其比賽中使用的檢測和識別模型,這裡附上鍊接:

https://

github。com/zhang0jhon/A

ttentionOCR

。我嘗試了直接使用這些預訓練模型做檢測識別,親測效果很不錯!

最後,由於我水平有限,如果大家有什麼問題和建議,歡迎在評論區指出~

看到這裡了,點贊關注一下吧!

[1] A Feasible Framework for Arbitrary-Shaped Scene Text Recognition。 arXiv:1912。04561v2

[2]

ICDAR2019 Robust Reading Challenge on Arbitrary-Shaped Text Competition

[3] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks。 arXiv:1506。01497v3

[4] Cascade R-CNN: Delving into High Quality Object Detection。 arXiv:1712。00726v1

[5] Going Deeper with Convolutions。 arXiv:1409。4842v1

[6] Rethinking the Inception Architecture for Computer Vision。 arXiv:1512。00567v3

[7]

https://

github。com/zhang0jhon/A

ttentionOCR