文章目錄
-
- 簡述
-
- 現有工作問題
- 資料集
- 網絡結構
-
- 特征提取層
- 特征合并層
- 結果輸出層
- 标簽生成
- 損失函數
-
- 文本分割Loss
- RBOX邊界偏移Loss
- RBOX偏移角度損失
- QUAD偏移Loss
- Locality-Aware NMS
- 實驗結果
- References
簡述
EAST是曠視科技CVPR 2017年的一篇場景文本檢測算法,其特點有:結構簡單,速度快,端到端等,Github上有很好的複現代碼,是一種實用性很強的文本檢測算法。
- paper:https://arxiv.org/abs/1704.03155
- code(tesorflow):https://github.com/argman/EAST
- code(pytorch):https://github.com/songdejia/EAST
EAST的名字取自“Efficient and Accurate Scene Text”,其可以用來檢測任意大小,任意方向(水準和傾斜)的文本。其主要實作思路為:FCN網絡 + Locality-Aware NMS。該算法抛棄了很多不必要的中間步驟,實作了端到端的訓練和優化:FCN直接進行預測和回歸,除了“Thresholding&NMS”外無其他後處理環節(如候選區域聚合和單詞分割等)。
現有工作問題
如上圖,本文總結了現有一些方法的工作流(a-d),大多數由多個階段組成,而且一些結構産生中間結果,并不是端到端的,是以這些現有方法大多數速度不快,并且也沒辦法達到很好的精度(Sub-optimal)。本文設計了一種兩階段場景文本檢測模型EAST(e),其主要貢獻有:
- 提出一種基于FCN的模型EAST,該模型隻需要兩階段(全卷積網絡和NMS),就可以完成場景文本檢測的任務,全程端到端結構;
- 該架構具有很好的靈活性,能夠生成水準矩形框(Axis-align Bounding Box, AABB),旋轉矩形框(Rotated Box, RBOX)和任意四邊形(Quadrangle, QUAD)幾種預測。
- 文章在ICDAR2015,COCO-Text,MSRA-TD500上測試,效果達到了State-of-the-art,在ICDAR2015上的F-score值達到0.7820,超出現有方法許多。
資料集
目前場景文本檢測有衆多資料集,不同語言,場景,拍攝裝置等,比較著名的有以下幾個資料集:
- ICDAR 2015
- COCO-Text
- MSRA-TD500
這幾個資料集都是比較常用的,使用1)旋轉矩形框2)任意四邊标注,但是也有一些資料集擁有更加靈活的标注,如曲線形狀文字等,可以用于更加精細的算法:
- Total-Text
- SCUT-CTW1500
網絡結構
EAST的網路結構如下:
這裡簡單把EAST的整個網絡結構分為三個層:特征提取層、特征合并層、結果輸出層。
特征提取層
EAST主要基于U-Net,其主幹網絡Encoder使用PVANet或者VGG,使用PVANet的主要原因是增加感受野(相對于VGG來說),使其有利于檢測長文本。關于U-Net,大家可自行搜尋查閱。
特征合并層
利用U-shape的思想逐漸合并不同尺度的特征圖,目的是解決文本行尺度變換劇烈的問題。具體做法請參考EAST的網絡結構圖或查閱U-Net的資料。
在特征合并部分,逐漸之前得到的不同大小的feature map,在每一個合并階段,從上一個階段來的特征圖最先進行unpooling,來增大特征圖的大小,然後與目前特征圖concate(就是通道數串聯)。然後,利用一個 1 ∗ 1 1*1 1∗1的卷積層減少通道數并減少計算量,接着是一個 3 ∗ 3 3*3 3∗3的卷積層将資訊融合,最終産生本合并階段的結果。在最後一個合并階段之後,利用一個 3 ∗ 3 3*3 3∗3卷積層産生最終的合并部分的特征圖,并将其輸入到輸出層。其計算公式如下:
結果輸出層
再來說一下輸出層的幾個特征圖(score map + geometry map),上圖最右邊藍色部分:
- 對于檢測形狀為RBOX,則輸出包含文本得分(score map)和文本形狀(AABB boundingbox 和rotate angle),也就是一起有6個輸出,這裡AABB分别表示相對于top, right, bottom, left邊的偏移。
- 對于檢測形狀為QUAD,則輸出包含文本得分(score map)和文本形狀(8個相對于corner vertices的偏移),也就是一起有9個輸出,其中QUAD有8個,分别為 ( Δ x i , Δ y i ) , i ⊂ [ 1 , 2 , 3 , 4 ] (\varDelta x_i, \varDelta y_i), i\subset[1,2,3,4] (Δxi,Δyi),i⊂[1,2,3,4]。
注:RBOX和QUAD二者選一,一般RBOX的效果會略好。
下表中闡明了每個通道的作用:(AABB部分沒有在圖中畫出來,其實AABB就是RBOX的 θ = 0 \theta=0 θ=0的情況)
标簽生成
接下來解釋具體每一個通道的标簽(GT)的生成方法,我們以RBOX為例,以下是RBOX的學習目标生成過程:
- 對于任意四邊形标注,向内縮小一些(文中用的0.3倍)并生成分割Mask(如圖b)。
- 對于每個在Mask中的點(注意隻考慮positive pixel!!),産生4個回歸坐标,分别為該點到AABB(axis-aligned bounding box)四條邊的距離偏移(d1, d2, d3, d4)。
- 對于每個在Mask中的點(還是隻考慮positive pixel!!),産生一個矩形框旋轉角度 θ \theta θ。
如果是任意四邊形目标,8個坐标分别是任意四邊形的四個頂點到該點的距離偏移。
注意:label的四點标注要求按順時針方向給出,參見ICDAR 2015的資料标注方式即可。
損失函數
文章對于不同的子任務使用不同的損失函數,對于RBOX來說,主要任務包括文字置信度分類(得到score map),邊框偏移回歸(geometry map)以及角度偏移回歸( θ \theta θ map)。
網絡的總損失函數為:
文本分割Loss
不同于常見目标檢測網絡應對樣本不平衡的方法,如均衡采樣,OHEM等。EAST算法采用了類平衡交叉熵來解決類别不平衡的問題。(文中說采用OHEM等會帶來部分stage不可導和需要調更多超參的問題,這會讓模型會更複雜)
對于文字置信度回歸(生成score map的loss),文章使用了類别權重的Cross Entropy來計算,如下:
其中使用β權重,權重由正負例比例決定,比例越小,權重越大。但是在具體實戰中,一般采用dice loss,因為它的收斂速度會比類平衡交叉熵快。
RBOX邊界偏移Loss
對于RBOX而言,邊界偏移Loss使用了IoU損失:(文本在自然場景中的尺寸變化極大,直接使用L1或者L2損失去回歸文本區域将導緻損失偏差更傾向于檢測大文本。是以論文在RBOX回歸時(AABB部分)采用IoU損失,在QUAD回歸時采用尺度歸一化的smoothed-L1損失,以此來保證幾何形狀的回歸損失是尺度不變的。)
RBOX偏移角度損失
RBOX還有一個角度,這裡使用餘弦loss:
以上公式中hat均表示預測,”*“均表示GT。是以:
文中 λ θ \lambda_\theta λθ被設定為了10。
QUAD偏移Loss
對于任意四邊形QUAD而言,邊界loss則使用了SmoothL1Loss作為損失函數:
其中使用 N Q ∗ N_Q{^*} NQ∗作為歸一化參數,表示該四邊形的最短邊的長度:
Locality-Aware NMS
局部感覺NMS,為了減少時間複雜度。
其基于假設:基于相鄰像素點的候選框是高度相關的。是以可以先對這些候選框進行逐漸合并,再做正常NMS。
使用以上的訓練結束以後,對于每一個點,如果他的score值大于一定門檻值,我們就可以認為這個點在某個文字的内部,然後取其偏移,角度等就可以計算出該框所在的位置,大小等。 這麼多框,自然是需要做一些去重操作,傳統的NMS對于每一個Box都會和其餘的所有box計算IoU,這樣做的框數量非常大,是以O(n2)的速度接受不了。但是基于以上的方法(EAST)預測出來的框其實是比較有特點的:鄰近的像素生成的框重合度都很高,但是不是同一個文本生成的檢測框,重合度都很小,是以本文提出先按行“合并”四邊形,最後再把剩下的四邊形用原始的NMS篩選,這樣可以大大降低NMS的時候計算IoU的數量,即Locality-Aware NMS:(局部感覺NMS)
實驗結果
文本在ICDAR2015資料集上做了一些實驗,對比其他方法,本文提升較大:
有問題歡迎交流!
done~
References
- https://arxiv.org/abs/1704.03155
- https://zhuanlan.zhihu.com/p/37504120
- http://blog.prince2015.club/2018/12/16/EAST/
- https://zhuanlan.zhihu.com/p/44364958
- https://blog.csdn.net/Lancher_Mo/article/details/77937499
- https://blog.csdn.net/attitude_yu/article/details/80724187