PSENet
Shape Robust Text Detection with Progressive Scale Expansion Network
論文地址:https://arxiv.org/abs/1806.02559
代碼地址:https://github.com/whai362/PSENet
文章主要針對的問題
場景文字檢測面臨兩個問題:
- 大部分的state-of-art 的算法都是預測四邊形的檢測框來表示文本框,但是這種方式在任意形狀的文本行檢測問題上的效果較差。
- 距離較近的文本行容易檢測錯誤,檢測結果容易相互有重疊或者多個文本行因爲沒有分開而被檢測爲一個。
基於CNN的場景文字檢測算法主要可以分爲兩類:
- regression-based approaches(基於迴歸的方法)
基於迴歸的方法使用CNN迴歸問本行的邊界框,這種方法一般應用在文本行可以用具有一定方向的矩形或四邊形的形式表示的情況下,比如水平文本行。在任意方向的場景文字檢測問題上,因爲文本行形狀多變,四邊形並不能有效地表示一串文本行,所依據與迴歸的方法在locate the texts with arbitrary shape 問題上效果不佳。 - segmentation-based approaches(基於分割的方法)
基於分割的方法把文本行檢測看做像素點分類問題,即通過設計CNN網絡分割出文本和非文本像素點,但是沒直接的分割方法很難分開相近的文本行,於是在輸出檢測結果的時候會把多個粘連的文本行預測爲一個。
PSENet網絡結構
PSENet主要框架如圖:
整體架構: 特徵提取階段採用的骨幹網絡爲ResNet,並將低層和高層的特徵進行相連(FPN網絡結構),將FPN的最後四層特徵 融合爲一個特徵層,然後將再次映射到個分割結果:。每一個都表示在某一個尺度上的文本行像素分割結果。表示一個文本行(字符串)的最小尺度的分割圖(原始的文本行mask圖向裏收縮一定比例後的mask),表示文本行(字符串)原始的分割圖。得到這些分割圖後,採用(Progressive Scale Expansion Algorithm) 從到逐步融合CNN生成的分割圖像,從而得到最終的檢測結果:
具體細節: 四個特徵層 都爲256層(channels)特徵層,長寬尺寸逐漸(1/2倍)縮小。是這些特徵層的拼接,所以是1024層(channels)。因爲大小不同,所以拼接時將每一特徵層都放大到大小,具體爲:
然後採用的卷積層(包含BN層,激活函數採用ReLU)將壓縮至256維,再通過多個的卷積(激活函數採用Sigmoid)預測 n個分割結果
Progressive Scale Expansion Algorithm
漸進式尺度展開算法:
- 在上求取分割連通域
- 對任意一個連通域中的任意一個文本像素點,若近鄰的像素點在中被預測爲文本像素點(positive)且還未被包含在任意一個連通域內,則將改點添加到對應的連通域。不斷迭代,直至所有的連通域中的所有的像素點在中的鄰近像素點都沒有被預測爲文本像素點的點。
- 根據上述步驟,不斷向所有的分割圖展開
訓練標籤生成
PSENet將不同尺度的分割結果進行融合爲最終的文本行檢測結果,因此在訓練時也需要有不同階段的分割結果的監督信息。在生成分割標籤時,採用將原始的多邊形標註結果不斷向裏收縮的的方式生成不同階段的分割圖。
如圖所示:將原始的多邊形向裏收縮個像素得到多邊形
更具體的實現細節:
- 其中分別表示面積和周長。
- 其中表示最小的尺度,是需要生成的分割圖的個數。這樣可以求出個不同比例,其中。根據不同的比例就可以求出多個分割尺度下的分割圖。最後生成文字檢測分割圖標籤
網絡損失函數
網絡的整體損失函數可以表示爲:
表示沒有收縮的分割圖像對應的損失complete text instances, 表示其餘的收縮的label對應的損失
因爲文字區域一般佔圖像中的很小一部分,如果直接做像素級的分類,網絡趨向於將預測爲非文字類別,所以文中引用一種類別均衡方式dice coefficient來解決這一問題。
從公式中可以看出,當和完全相同時,完全不同時。
對於引入了難樣本挖掘(OHEM)提升分割性能,假設由OHEM求到的訓練mask爲,所以:
在 的計算過程中則忽略中分割結果爲非文本像素點:
爲什麼採用漸進尺度展開
從圖中可以看出,如果只採用兩級分割圖(一個較小的收縮的預測圖和一個完整的分割圖),那麼兩個相鄰但大小不同的文本行的檢測結果將有一定的誤差。而增加漸進的級數可以使檢測結果更加精確。