05. OCR學習路徑之文本檢測(下)EAST演算法簡介
- 2019 年 11 月 22 日
- 筆記
前言
本次分享主要是講EAST這篇文章,按照之前的計劃是分享兩種文本檢測思路,即one-stage和two-stage的。已經分享的有《03.OCR學習路徑之文本檢測(中)CTPN演算法簡介》里已經說過two-stage實現文本檢測這個經典演算法,上次課也講了《04.OCR學習路徑之文本檢測(4)FCN演算法簡介》,並且還up了4個影片課程在B站(B站鏈接:https://www.bilibili.com/video/av73805100),因此承接上一次FCN,我們這次課主要講文本檢測的第二類方法,one-stage的思路。
OS:上面一段話有廣告的嫌疑。
本文主要講one-stage的文本檢測思路,並篩選出效果比較好的具有代表性的文章是EAST: An Efficient and Accurate Scene Text Detector
程式碼部分已開源,感興趣的話可以自己去實現一下:https://github.com/argman/EAST
一、演算法簡介
有人說EAST是two-stage的方法,因為該方法運用到:全卷積網路(FCN)和非極大值抑制(NMS)這兩項計算,但是我認為這應該算是one-stage的範疇內的,因為NMS在CTPN或者faster-RCNN中也有用到的,那豈不是成了three-stage了?NMS只能算作是一種對輸出結果的後處理吧。
作者在文中說自己做了三個方面的貢獻:
1. 使用FCN(上次課有說過的)實現直接的預測 ;
2. 該方法可以檢測單詞級別行和文本行級別.檢測的形狀可以為任意形狀的四邊形,旋轉的(RBOX)或者水平的矩形框(QUAD)。並採用Locality-Aware NMS來對生成的幾何進行過濾;
3. 該方法在精度和速度方面都有一定的提升。
恩,現在我們看一下整個演算法的流程是怎樣的,以及如何實現了作者所說的三個貢獻:
如圖,

其中,(a)、(b)、(c)、(d)都是幾種常見stat-of-the-art的文本檢測過程,演算法思想遵循之前two-stage的方法,一般都需要先提出候選框,過濾後對剩下的候選框要進行回歸操作得出更精細的邊框資訊,然後再合併候選框等。對比後發現,EAST演算法大大簡化了流程,只用到了FCN實現像素級別預測,然後使用NMS(非極大值抑制)合併預測後的資訊即可實現多角度的文本檢測,因此可以應對更為複雜的場景,而且也不限制是否是水平的文本行方向。
1.1 採用FCN
由於上次課程我們講過 FCN,已知FCN的框架圖:

以預測效果最好的8*upsample的特徵融合方式來看,按箭頭指示方向從上至下的順序,它是先融合pool4和pool5,然後把輸出後的結果再反卷積增大兩倍尺寸後和pool3融合(選擇逐點相加的方式融合)實現高低層特徵跳躍結構融合的,比較容易理解。那EAST是如何使用FCN的實現利用多層資訊,論文已給出詳細的框架圖:

由此可見,該方法分三個階段:特徵提取,特徵融合,預測結果的輸出層。只不過,本文跟FCN融合特徵的思想還不完全一樣,而本文的融合方式是concatenation along the channel axis,是拼接在一起,不是相加,使得特徵更「厚」更「深」。其次,上取樣的方式不一樣,FCN是Deconv的方式,這裡是unpooling,總之就是每一次unpooling可以讓高層特徵資訊的size放大兩倍。
文中涉及到一個公式,比較繞人,作者想把簡單的事情使用公式化描述,但是好像更有迷惑性了(至少對於我而言是如此),暫且不管:

其實思想和FCN一樣,上面已說過,一個是unpooling,一個拼接concatenation。
再看最後一層的特徵圖這裡定義為f1,有點逆常規的命名思路,暫且跟隨作者的思想來看這個結構,f1-f4的feature map尺寸分別是原圖尺寸的1/32, 1/16, 1/8, 1/4。
最終用融合後的g4特徵資訊的輸出作預測,
1.1 輸出層的輸出
最終輸出以下5部分的資訊,分別是:
· score map:檢測框的置信度,1個參數;
· text boxes:對於檢測形狀為RBOX,檢測框的位置(x, y, w, h),4個參數;
· text rotation angle:對於檢測形狀為RBOX,檢測框的旋轉角度,1個參數;
· text quadrangle coordinates:對於檢測形狀為QUAD,則輸出任意四邊形檢測框的位置坐標,(x1, y1), (x2, y2), (x3, y3), (x4, y4),8個參數。
為此設計Loss,下一章詳細展開。
二、訓練loss
loss由兩部分組成:score map loss 和geometry loss,具體公式如下:
2.1分數圖損失(Loss for Score Map)
之前一些做檢測的文章採用的是經典的cross-entropy loss,即交叉熵損失函數。但是本論文稍作改變,變成class balanced cross entropy,
對比cross entropy loss的公式:
H(y,y^)=−∑i y_i loge(y^i)
論文中採用的是類平衡交叉熵,用於解決訓練數據類別不平衡的問題,公式如下:

其中Y∧是score map,Y*是ground truth。
β是balance factor,平衡正、負樣本的。

因此通過平衡取樣和hard negative mining(一種增加複雜負樣本的方法)技術解決訓練樣本中目標物體分布不平衡的問題,因為訓練過程中,有些干擾性較強的負樣本就稱為Hard negtive,增加此類樣本可以提高模型的精度,但是實際上這類樣本比較少,因此才需要在訓練的過程中使用hard negative mining方法來增加此類負樣本的佔比。
2.1幾何形狀損失(geometry loss)
針對RBOX loss,其損失函數公式為:


其中帶*標誌的是真實值,帶^標誌的是預測值。因此幾何形狀損失是:

2.3 矩形框損失(QUAD loss)
文本在自然場景中的尺寸變化極大。直接使用L1或者L2損失去回歸文本區域將導致損失偏差朝更大更長.因此論文中採用IoU損失在RBOX回歸的AABB部分,尺度歸一化的smoothed-L1損失在QUAD回歸,來保證幾何形狀的回歸損失是尺度不變的.
針對RBOX loss,其損失函數公式為:
其具體公式如下:

其中Q是順時針方向(從左上開始)4個點 (x,y) 坐標值。

簡化訓練過程,最終總的Loss具體公式如下:
至此,整個演算法網路的設計流程和訓練時的Loss設計基本已完成。
三、總結
該演算法EAST做文本檢測的優點:
1. FCN直接預測結果,消除中間過程冗餘,減少檢測時間
2. 在特徵合併層,利用不同尺度的feature map,並通過相應的規則進行自頂向下的合併方式,可以檢測不同尺度的文本行
3. 提供了文本的方向資訊,可以檢測各個方向的文本
4. 本文的方法在檢測長文本的時候效果表現比較差,這主要是由網路的感受野決定的(感受也不夠大)
缺點:
1. EAST等直接預測一個文本實例的方法容易受特徵的局限,進而導致最終長距離無法穩定預測
2. 在檢測曲線文本時,效果不太理想


