文字檢測算法

前言

pixel-anchor是雲從科技前幾天放出來的論文,文章提出了east和Textboxes++的合體模型,通過結合anchor-based和pixel-based的檢測方法的特性,達到了SOTA。不過就整個框架而言,創新點雖然不多,但是預感會帶起一波檢測與分割結合的文字檢測方法。

文章脈絡

  • anchor-based和pixel-based方法的優缺點
  • 網絡結構
  • 結果分析
  • 模型分析

anchor-based和pixel-based的檢測方法

anchor-based的方法可以分爲兩個派系,一類是faster-rcnn,另外一類是SSD系列。
其中,基於faster-rcnn的方法具體代表有如下方法:

  • RRPN:提出帶角度的anchor,設計的anchor需要足夠多的角度以及尺度覆蓋場景中的文本,但是爲了覆蓋所有的文本尺度變化以及角度,需要人工設計較多的尺度;
  • R2CNN:提出不同感受野的roipooling:7x7,3x11, 11x3用來檢測多角度的文本
  • CTPN:更改RPN anchor爲水平方向的序列anchor,利用後處理將anchor連接成行
  • InceptText:基於FCIS,加入Deformble conv和deformable PSROIpooing回去較強的感受野,同時加入inception module獲取豐富感受野,檢測文字
  • FTSN:InceptText的平民版本
  • etc

而基於SSD的方法具體代表如下:

  • TextBoxes and TextBoxes++:基於SSD,更改多尺度層中國的anchor尺度,並加入對傾斜框支持
  • SegLink:基於SSD,將文本分爲segments和Links,多尺度預測segments和link,利用後處理方法連接成文本
  • etc

這類方法主要依賴anchor的選取,因爲文本的尺度變化劇烈,使得此類方法anchor的數量較多,進而效率較低。同時由於anchor的匹配機制,每次針對roi區域生成一系列的anchor,篩選合適的anchor最爲勝負樣本的標籤,在預測階段由於proposals很多,使得recall通常較高;但是,對於較長而且密集的文本行而言,此時的anchor寬高比可能高於10,甚至更高,不但網絡需要更大的感受野,同時需要配合較大寬高比的anchor,此時基於anchor的檢測方法需要精心設計,使得anchor儘可能的覆蓋所有的文本尺度。

對比Pixel-based的方法,如:

  • pixellink:基於FCN分割網絡,加入對pixel score Map的預測和當前像素與周圍像素link的預測,後處理獲得文本實例
  • sotd:純分割網絡,加入border,用來分割密集文本。後處理通過minAreaRect獲得檢測框
  • PSENet:FPN,預測不同大小的kernel,通過擴張算法得到各自的文本實例
  • EAST:resnet50-based Unet,加入geo_map和score_map的預測,最後通過每個像素預測框Nms得到最後的預測框
  • DDR:EAST的孿生版本
  • FOTS:基於EAST改進,加入OHEM, ROIRotate以及識別分支
  • etc

通常爲分割+迴歸,或者單獨的分割接後處理的形式。這類方法基礎網絡多爲Unet或者FPN,因此對小目標分割具有一定的優勢,但是其迴歸的方式多依賴網絡的感受野:如east,DDR, FOTS。雖然通過一些樣本挖掘的方法可以獲得一定的提升,但是感受野不足導致此類模型在迴歸較長文本或者較大文本時,容易出現檢測不全或者丟失的情況。

上述是三種方法的迴歸方式可以用下圖表示:

pixel-based方法和anchor-based方法的迴歸方式


其中pixel-based的迴歸方法,迴歸時每個像素點預測到四條邊或者四個角點的絕對距離,這類方法,當文本較長或者較大時,如果網絡感受野不夠充足,會導致預測的值不能到到達文本的邊界,出現文本框斷裂的情況;而Link regression的方法,典型代表爲PSENet,pixellink等方法,此類方法對感受野依賴較小,因爲關注的是像素與其周圍像素的從屬關係。如pixellink,除了對當前像素預測其屬於文本還是非文本,同時會預測其與周圍8個像素的連接關係,如果存在連接,則輸入同一個文本實例。但是此類方法依賴的一點爲分割結果圖的準確性。如果分割不夠精準,容易出現像素逐漸的引入周圍的噪聲,出現錯誤的預測結果。同時,對於文本區域較爲稀疏的情況,此類方法難以實用,因爲文本間隙的背景信息,在訓練過程中爲噪聲信息,當背景信息足夠多,或者上下文信息迫使網絡將其預測爲背景,就會出現文本無法被檢測出來的情況。典型的文字爲大而鏤空的文字。這也是多數文字檢測算法無法將其完整檢測的原因。

 

針對上述的檢測方法的弱點,作者提出了anchor-based和pixel-based結合的方法,結合兩種方法的優勢,不僅在icdar2015上達到了SOTA,同時對長行的中文檢測場景有較好的適應性。

網絡結構

網絡結構可以分爲兩部分,其中pixel-based的方法爲對EAST的改進,anchor-based的方法爲對SSD的改進。前者主要爲了檢測中等的文本,後者主要爲了檢測長行和較小的文本。

針對EAST的改進

網絡結構如下圖所示:

 

EAST分支的網絡結構示意圖

針對EAST的改進,文章延續FOTS對EAST的改進,加入以下插件:

  • ASPP
  • OHEM:針對分類和迴歸

ASPP來自deeplab中,其主要作用是在不降低feature map分辨率的情況下,提升網絡的感受野,即可以提升模型獲取上下文信息的能力。它會帶來什麼效果呢?
首先,是分割效果更爲精準。分割一個物體,網絡往往藉助的是該物體周圍的信息,比如,分割前景,我們需要找到背景信息;當感受野變大時,對於較長的文本或者較大的文本,可以很好的找到其邊界,進而分割出較高質量的文本區域;其次,感受野的提升,會是的迴歸的距離變長。即geo_map中的值表示,當前像素到四條邊的距離。而網絡建立起當前像素與邊界之間的距離關係。當上下文信息充足時,可以準確的建立起距離關係,進而邊界預測足夠精準。因此文章加入ASPP的作用主要是以上兩點,分割精準+邊界定位精準。

OHEM常用來進行困難樣本挖掘。對於文字區域的分割,存在樣本的不平衡,文字區域往往佔比比較小,背景佔比比較大。同時,對於一張圖中的多個文本,小的文本區域的損失往往被大文本區域損失覆蓋;而且還有一種情況,背景中存在難以區分的樣本,這些背景容易導致模型將類似的文本區域分爲背景。因此加入OHEM,可以對這部分背景信息進行挖掘,同時在訓練過程中正負樣本進行均衡,避免了類別不均衡的問題。

以上就是該文章對EAST部分的改進。其實OHEM來自FOTS對EAST的改進,ASPP在此之前已經嘗試過,確實會帶來邊界預測的提升。

對於這部分EAST,除了預測以往的文本區域的score_map和geo_map, 同時預測一張attention map用於對anchor-based分支的信息的輔助。

針對Textboxes++的改進

網絡結構如下圖所示:

SSD分支網絡結構示意圖

文章在EAST的基礎上,加入了anchor-based檢測分支,主要針對文字尺度以及寬高比較大的變化,文章對SSD進行了定製。如上面右圖所示。文章主要利用來自ResNet50中的1/4和1/16的feature map:

對於1/4的map,由於其處於底層,因此具有一定的分辨率,對於檢測較小的文字具有一定優勢。同時由於此處的特徵語義信息較弱,文章將east分支得到的attention map用在此處,主要爲了對該層加入一定的語義信息。具體操作爲,對來自east的attention map輸出進行exp激活,然後與1/4 feature map進行對應位置的加權。這麼做的好處是,對1/4feature map上的信息,屬於文本的像素進行加強,對於不屬於文本的像素進行抑制,突出文本信息。文章說,這麼做可以很大程度的減少錯誤檢測。這裏需要解釋下爲什麼anchor-based的方法檢測小目標會出現較高的fp.原因在於,在較高分辨率的feature map上生成proposals時,由於像素點比較多,目標較小,因此整張圖中網格都處於負樣本區域,極少數網格落在正樣本區域。這樣在預測是,負樣本較正樣本多,而且負樣本的方差較大,因此容易導致分類的錯誤,因此容易出現fp.

對於1/16的map,文章進一步的進行特徵提取,一是爲了獲得更大的感受野,二是爲了獲得多尺度的信息。分別爲1/32. 1/64, 1/64, 1/64。但是爲了避免出現很小的feature map,文章在後面的feature map保持在1/64。但爲了繼續提升感受野,文章在後面兩個尺度的的生成時,加入了空洞卷積,在分辨率不減小的情況下,獲得較大感受野。對於每一層的feature map,文章在其後加入APL層,層中內容如上圖右圖中的左半部分所示,分別爲不同的卷積核搭配不同的寬高比,實現對不同尺度,不同角度的文本的cover.如3x3爲方框,3x5主要爲了檢測水平傾斜的文字,5x3爲了檢測垂直傾斜的文字。1xn,nx1主要爲了檢測水平和豎排長行的文字。可以看到有誇張的1:35,35:1的寬高比,這在中文場景是很常見的。

在經過以上APL層之後,將得到的proposal進行拼接,預測最終搞得四邊形區域。

此外,文章爲了檢測密集文本,加入了anchor density,如下圖所示:

 

Anchor density

對於每個anchor,進行一定的位置的偏移,是的對於密集的文本來說,可以獲得理想的proposals.

關於後處理

在預測階段,文章採用fusion NMS的方法:用anchor-based的方法對小文本和長文本進行檢測,pixel—based的方法用來檢測中等的文字。其實也算揚長避短。EAST的優勢在於檢測小文本和中等文本,對於長文本無力。而對於SSD,可以利用誇張的寬高比檢測這些難以檢測的文字。對於1/4 map上的anchors和其他mao上的長anchors都會被保留,因爲1/4上的anchors足夠cover小文本,而對於長文本,或者大角度的文本,不具有檢測能力。不會因爲anchor的匹配機制篩掉捱得很近的框。而對於EAST預測分支,過濾掉小於10像素,以及寬高比不在[1:15, 15:1]的範圍的文字。最後將這些box集合到一起,通過nms篩選得到最後的框。

實驗

數據增強

文章中提出的loss分別爲pixel-loss和anchor-loss,通過設置一定的比例進行調整對模型的貢獻。在訓練過程中,文章從原圖中隨機crop 640x640大小的的圖片區域輸入至網絡中進行訓練。然後模型首先在SynthText上進行與訓練,然後在此基礎上對各組實驗進行微調。

結果

文章針對小文本、長文本、大角度文本分別作了實驗,證明該算法的有效性。下面是效果圖:

中文以及icdar2015的數據樣例

可以看到,圖中的長文本、小文本檢測較爲良好,這都歸功於ASPP和大的寬高比的anchors和卷積。

以下是在ICDAR2015上的實驗結果:

ICDAR2015算法性能

文章老早就在git上宣傳,現在看來效果還是很不錯的,單尺度達到了SOTA。 這裏可以對比一下TextBoxes++,EAST以及pixel-anchor。

EAST針對分割和迴歸加入OHEM後f1-score可以從80.72提升至85.31,這是FOTS做的事情。也就是說,在此基礎上,加入ASPP,同樣會帶給EAST性能的提升。也就是文章在加入attention分支,以及anchor-based分支之後,性能從85.31+提升至87.68。這裏面主要貢獻來自:

  • SSD分支對較大文本以及較長文本的檢測,換句話說這部分較大的感受野對基礎網絡EAST的矯正有一定的幫助,同時attention map與1/4的結合,也會提升EAST對文本的召回。
  • 對於EAST無法檢測出來的文本,通過SSD分支可以進行彌補,因此召回提升很多
  • 對於精度方面,可以看出存在一定的誤檢,這主要來自於SSD對小目標的誤檢(我猜的)

在多語言ICDAR2017 MLT上,同樣的結果:

ICDAR2017 MLT上性能

分析

文章結合了anchor-based和pixel-based的方法的優點,揚長避短,一定程度上解決了長行,小文本以及傾斜文本的檢測。但是anchor-based的分支依賴較強的手工設定anchor,同時anchor-based的缺點未必可以利用pixel-based的方法彌補回來。再者,論文中相當於是針對Textboxes++添加了EAST分支,多任務網絡勢必帶來效果的提升,但是論文沒有針對每一個模塊帶來的提升做詳細分析,比如ASPP的提升,SSD的提升等。不管怎麼說,效果好就是好方法,而且也是少見的拿出來解決長行的檢測方法。

總結

如今的檢測方法逐漸的從anchor-based的方法轉向了語義分割,接着出現了實例分割的相關算法,現在又在結合兩者。在多角度文本檢測時,分割的效果比anchor-based的方法適用性更強。因此,如果能夠把anchor-based的方法徹底解放,無需手工設計anchor,然後基於分割的方法進一步的簡化,兩者的結合應該會灰常的厲害吧。期待中。(PS:參考文獻這裏就不放了,應該會很長吧)

作者:Ez_Life
鏈接:https://www.jianshu.com/p/8db0ec29aaab
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯繫作者獲得授權並註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章