Shape Robust Text Detection with Progressive Scale Expansion Network

Shape Robust Text Detection with Progressive Scale Expansion Network

論文地址:https://arxiv.org/abs/1806.02559
代碼地址:https://github.com/whai362/PSENet

文章主要針對的問題

場景文字檢測面臨兩個問題:

  1. 大部分的state-of-art 的算法都是預測四邊形的檢測框來表示文本框,但是這種方式在任意形狀的文本行檢測問題上的效果較差。
  2. 距離較近的文本行容易檢測錯誤,檢測結果容易相互有重疊或者多個文本行因爲沒有分開而被檢測爲一個。

基於CNN的場景文字檢測算法主要可以分爲兩類:

  1. regression-based approaches(基於迴歸的方法)
    基於迴歸的方法使用CNN迴歸問本行的邊界框,這種方法一般應用在文本行可以用具有一定方向的矩形或四邊形的形式表示的情況下,比如水平文本行。在任意方向的場景文字檢測問題上,因爲文本行形狀多變,四邊形並不能有效地表示一串文本行,所依據與迴歸的方法在locate the texts with arbitrary shape 問題上效果不佳。
  2. segmentation-based approaches(基於分割的方法)
    基於分割的方法把文本行檢測看做像素點分類問題,即通過設計CNN網絡分割出文本和非文本像素點,但是沒直接的分割方法很難分開相近的文本行,於是在輸出檢測結果的時候會把多個粘連的文本行預測爲一個。
    已有的方法在檢測任意形狀的問本行時遇到的問題。

PSENet網絡結構

PSENet主要框架如圖:
PSENet
整體架構: 特徵提取階段採用的骨幹網絡爲ResNet,並將低層和高層的特徵進行相連(FPN網絡結構),將FPN的最後四層特徵 P2,P3,P4,P5P_2,P_3,P_4,P_5 融合爲一個特徵層FF,然後將FF再次映射到nn個分割結果:S1,S2,...,SnS_1,S_2,...,S_n。每一個SiS_i都表示在某一個尺度上的文本行像素分割結果。S1S_1表示一個文本行(字符串)的最小尺度的分割圖(原始的文本行mask圖向裏收縮一定比例後的mask),SnS_n表示文本行(字符串)原始的分割圖。得到這些分割圖後,採用PSEPSE(Progressive Scale Expansion Algorithm) 從S1S_1SnS_n逐步融合CNN生成的分割圖像,從而得到最終的檢測結果:
R=PSE{S1,S2,...,Sn}R = PSE \{S_1,S_2,...,S_n\}

具體細節: 四個特徵層 P2,P3,P4,P5P_2,P_3,P_4,P_5都爲256層(channels)特徵層,長寬尺寸逐漸(1/2倍)縮小。FF是這些特徵層的拼接,所以是1024層(channels)。因爲大小不同,所以拼接時將每一特徵層都放大到P2P_2大小,具體爲:
F=C(P2,P3,P4,P5)=P2Up×2(P3)Up×4(P4)Up×8(P5)F=C(P_2,P_3,P_4,P_5)=P_2||Up_{\times2}(P_3)||Up_{\times4}(P_4)||Up_{\times8}(P_5)
然後採用3×33\times 3的卷積層(包含BN層,激活函數採用ReLU)將FF壓縮至256維,再通過多個1×11\times 1的卷積(激活函數採用Sigmoid)預測 n個分割結果{S1,S2,...,Sn}\{S_1,S_2,...,S_n\}

Progressive Scale Expansion Algorithm

漸進式尺度展開算法:

  • S1S_1上求取分割連通域C={c1,c2,c3,c4,...}C = \{c_1,c_2,c_3,c_4,...\}
  • 對任意一個連通域中的任意一個文本像素點pp,若近鄰的像素點qqS2S_2中被預測爲文本像素點(positive)且還未被包含在任意一個連通域內,則將改點添加到pp對應的連通域。不斷迭代,直至所有的連通域中的所有的像素點在S2S_2中的鄰近像素點都沒有被預測爲文本像素點的點。
  • 根據上述步驟,不斷向所有的分割圖{S3,S4,...,Sn}\{S_3,S_4,...,S_n\}展開
    在這裏插入圖片描述
    在這裏插入圖片描述

訓練標籤生成

PSENet將不同尺度的分割結果進行融合爲最終的文本行檢測結果,因此在訓練時也需要有不同階段的分割結果的監督信息。在生成分割標籤時,採用將原始的多邊形標註結果不斷向裏收縮的的方式生成不同階段的分割圖。
在這裏插入圖片描述
如圖所示:將原始的多邊形pnp_n向裏收縮did_i個像素得到多邊形pip_i
更具體的實現細節:

  • di=Area(pn)×(1ri2)Permeter(pn)d_i =\frac{Area(p_n)\times (1-r_i^2)}{Permeter(p_n)} 其中Area(pn),Permeter(pn)Area(p_n),Permeter(p_n)分別表示面積和周長。
  • ri=1(1m)×(ni)n1r_i =1-\frac{(1-m)\times (n-i)}{n-1} 其中m(0,1]m\in(0,1]表示最小的尺度,nn是需要生成的分割圖的個數。這樣可以求出{r1,r2,...,rn}\{r_1,r_2,...,r_n\}個不同比例,其中r1=m,rn=1r_1=m,r_n=1。根據不同的比例就可以求出多個分割尺度下的分割圖。最後生成文字檢測分割圖標籤{G1,G2,...Gn}\{G_1,G_2,...G_n\}

網絡損失函數

網絡的整體損失函數可以表示爲:
L=λLc+(1λ)LsL = \lambda L_c+(1-\lambda)L_s
LcL_c表示沒有收縮的分割圖像GnG_n對應的損失complete text instancesLsL_s表示其餘的收縮的label對應的損失{G1,G2,...Gn1}\{G_1,G_2,...G_{n-1}\}
因爲文字區域一般佔圖像中的很小一部分,如果直接做像素級的分類,網絡趨向於將預測爲非文字類別,所以文中引用一種類別均衡方式dice coefficient來解決這一問題。
在這裏插入圖片描述
從公式中可以看出,當SiS_iGiG_i完全相同時D(Si,Gi)=1D(S_i,G_i)=1,完全不同時D(Si,Gi)=0D(S_i,G_i)=0
對於LcL_c引入了難樣本挖掘(OHEM)提升分割性能,假設由OHEM求到的訓練mask爲MM,所以:
Lc=1D(SnM,GnM)L_c = 1-D(S_n*M,G_n*M)
LsL_s的計算過程中則忽略SnS_n中分割結果爲非文本像素點:
在這裏插入圖片描述

爲什麼採用漸進尺度展開

在這裏插入圖片描述
從圖中可以看出,如果只採用兩級分割圖(一個較小的收縮的預測圖和一個完整的分割圖),那麼兩個相鄰但大小不同的文本行的檢測結果將有一定的誤差。而增加漸進的級數可以使檢測結果更加精確。

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