文章目錄
-
- 簡述
- 網絡結構
-
- Backbone
- Segmentation Head
-
- FPEM
- FFM
- Output and Pixel Aggregation(PA)
- 損失函數
-
- Aggregation Loss
- Discrimination Loss
- 實驗結果
- References
簡述
本文介紹的是一個“Face++ ”在今年8月份剛剛發在ICCV 2019上面的論文——PAN(像素聚合網絡),這是一篇文字檢測方面的論文,其達到了目前文字檢測的最好效果。
之前在CVPR 2019上發的PSENet是之前效果非常好的文本檢測算法,PAN的作者還是之前PSENet算法的原班作者,是以說我們可以把PAN看做是PSENet V2版本。
之前PSENet的檢測效果很好,但是整個網絡的後處理複雜,導緻其運作速度很慢,PAN改進了網絡使其在不損失精度的情況下,極大加快了網絡inference的速度。(trade-off)
下圖是目前常用的文本檢測算法在任意形狀文本檢測資料集上的效果:
PAN整個網絡主要有兩個步驟:
- 用分割網絡預測文字區域、kernel以及相似向量;
- 從預測的kernel中重建完整的文字執行個體;
是以為了保證網絡的高效率,我們就需要采取措施來降低這兩步的耗時:采用的更輕量級的backbone和更簡單的後處理。
網絡結構
這個PAN的整個網絡結構,網絡主要由Backbone + Segmentation Head(FPEM + FFM) + Output(Text Region、Kernel、Similarity Vector)組成。
本文使用将 ResNet-18 作為 PAN 的預設 Backbone,并提出了低計算量的Segmentation Head(FPFE + FFM) 以解決因為使用 ResNet-18 而導緻的特征提取能力較弱,特征感受野較小且表征能力不足的缺點。
此外,為了精準地重建完整的文字執行個體(text instance),提出了一個可學習的後處理方法——像素聚合法(PA),它能夠通過預測出的相似向量來引導文字像素聚合到正确的kernel上去。
下面将詳細介紹一下上面的各個部分。
Backbone
本文使用 ResNet-18 作為 PAN 的預設 backbone(PSENet用的是ResNet-54),其目的就是為了減少計算量。
論文backbone提取stride為 4 , 8 , 16 , 32 4,8,16,32 4,8,16,32的 c o n v 2 , c o n v 3 , c o n v 4 , c o n v 5 conv2,conv3,conv4,conv5 conv2,conv3,conv4,conv5的輸出作為高低層特征。每層的特征圖的通道數都使用 1 × 1 1 \times 1 1×1卷積降維至128得到輕量級的特征圖 F r F_r Fr 。
Segmentation Head
PAN 是一個基于分割的任意形狀文字檢測模型,其使用 ResNet-18 作為網絡的預設 backbone,雖減少了計算量,但是backbone層數的減少勢必會帶來模型學習能力的下降。為了提高效率,研究員在 ResNet-18 基礎上提出了一個低計算量但可高效增強特征的分割頭Segmentation Head。它由兩個關鍵子產品組成:特征金字塔增強子產品(Feature Pyramid Enhancement Module,FPEM)、特征融合子產品(Feature Fusion Module,FFM)。
FPEM
FPEM 呈級聯結構且計算量小,可以連接配接在 backbone 後面讓不同尺寸的特征更深、更具表征能力。在 FPEM 子產品後面,使用了特征融合子產品(FFM)來将不同深度的FPEM 所産生的特征融合,産生最終用于分割任務的特征圖 F f F_f Ff。
下圖就是FPEM,特征金字塔增強子產品,其是作者提出的用于增強backbone輸出特征圖的一個子產品。
如下圖,FPEM是一個 U形模組,由兩個階段組成,up-scale 增強、down-scale 增強。up-scale 增強作用于輸入的特征金字塔,它以步長 32,16,8,4 像素在特征圖上疊代增強。在 down-scale 階段,輸入的是由 up-scale 增強生成的特征金字塔,增強的步長從 4 到 32,同時,down-scale 增強輸出的的特征金字塔就是最終 FPEM 的輸出。
類似于 FPN,FPEM 能夠通過融合低級與進階資訊來增強不同 scale 的特征。FPEM子產品可以看成是一個輕量級的FPN,隻不過這個FPEM計算量不大(大約為FPN的1/5),并可以通過不停地級聯( n c n_c nc次)以達到不斷增強特征的作用。
注:Therefore, FPEM is capable of enlarging the receptive field (3×3 depthwise convolution) and deepening the network (1×1 convolution) with a small computation overhead.
FFM
Feature Fusion Module子產品用于融合不同尺度的特征,其結構如下:
We firstly combine the corresponding-scale feature maps by element-wise addition. Then, the feature maps after addition are upsampled and concatenated into a final feature map which only has 4×128 channels.
特征融合模組用于融合不同尺度的特征,這是因為低級、進階語義資訊對于語義分割來說都很重要。研究人員提出了如上圖的特征圖融合方法。他們首先通過逐元素相加結合了相應 scale 的特征圖,然後對特征圖進行上采樣,連接配接成最終隻有 4*128 通道的特征圖 F r F_r Fr。( F r F_r Fr用于後面的預測輸出)
Output and Pixel Aggregation(PA)
網絡輸出:
- text_region, w ∗ h ∗ 1 w*h*1 w∗h∗1
- Kernel, w ∗ h ∗ 1 w*h*1 w∗h∗1
-
Similarity vectors (無監督學習), w ∗ h ∗ 4 w*h*4 w∗h∗4 。
在無監督聚類中,通過找一個聚類中心使得周圍點到聚類中心的距離最小,這個距離的度量需要聚類中心點和待聚類點的一個值來計算,此處的similarity vectors輸出的就是那個值。(用以度量距離,這裡其實我也比較迷)
像素聚合(PA)
文字區域雖然保留了文字完整的形狀,但是在其中也經常會出現重疊在一起的文本(見圖 (g))。另外,雖然可以用kernel來很好地區分文字(見圖 (h)),但是這些kernel并不能涵蓋所有的文字區域。為了重建完整的文字執行個體,我們需要将文本區域中的像素融合到核中,是以提出了“像素聚合算法(Pixel Aggregation)”來将文字像素聚合到正确的kernel中去。
To rebuild the complete text instances, we need to merge the pixels in text regions to kernels. We propose a learnable algorithm, namely Pixel Aggregation, to guide the text pixels towards correct kernels.
注:在像素聚合算法的設計中,研究人員借用了聚類的思想來從kernel中重建完整的文字執行個體。如果将文字執行個體視為聚得的類群,那麼文本執行個體的核就是類群的中心,而文本像素是被聚類樣本。自然地,為了将文本像素聚合到對應的核,文本像素與和它相同文本的核之間的距離就要足夠小。
損失函數
網絡總的損失函數如上:其中 L t e x L_{tex} Ltex和 L k e r L_{ker} Lker分别是text region和kernel的分割Loss, L a g g L_{agg} Lagg是衡量文本執行個體中的像素和其對應的kernel的loss(是一個聚合loss,aggregation loss), L d i s L_{dis} Ldis是分辨不同文本執行個體的kernel的一個loss(discrimination loss)。 α \alpha α和 β \beta β是平衡各個loss的值,設為0.5和0.25。
其中,考慮到文字和非文字像素非常不平衡, L t e x L_{tex} Ltex和 L k e r L_{ker} Lker的計算方式和PSENet V1的方法一樣(如上圖),都是采用的dice loss。
論文的重點在于 L a g g L_{agg} Lagg和 L d i s L_{dis} Ldis,下面分别描述。
Aggregation Loss
L a g g L_{agg} Lagg用于衡量文本執行個體和其對應kernel的loss,其作用是保證同一文本執行個體的kernel和文本執行個體内其他像素點之間的距離< δ a g g \delta_{agg} δagg 。其公式如上。
其中, N N N是圖像中文本執行個體(text instance)的數量, T i T_i Ti表示第 i i i個文本執行個體, K i K_i Ki是該文本執行個體對應的kernel。 D ( p , k i ) D(p, k_i) D(p,ki)定義了文本執行個體 T i T_i Ti内的像素 p p p到 k e r n e l K i kernel\ K_i kernel Ki之間的距離,其公式如上。
其中, δ a g g \delta_{agg} δagg是一個常量,預設0.5, F ( p ) F(p) F(p)是網絡在像素 p p p處輸出的相似度向量, G ( . ) G(.) G(.)是 k e r n e l K i kernel\ K_i kernel Ki的相似度向量,計算公式如上。
G ( . ) G(.) G(.)的計算就是對于 k e r n e l K i kernel\ K_i kernel Ki 裡的每一個像素 ,網絡在像素 q q q處輸出的相似度向量和除以 k e r n e l K i kernel\ K_i kernel Ki的像素點數量, ∣ K i ∣ |K_i| ∣Ki∣這裡代表的就是裡像素點的數量。
其中, D ( p , k i ) D(p, k_i) D(p,ki)裡的||……||是一個L2範數,其是一個用于衡量像素點 p p p到 k e r n e l K i kernel\ K_i kernel Ki距離的值,值越小表示相似度越大,公式中距離小于 δ a g g \delta_{agg} δagg的像素點就沒必要參與loss計算了,關注那些距離遠的值即可。
Discrimination Loss
L d i s L_{dis} Ldis是用于不同文本執行個體的kernel的loss,其作用是保證任意兩個kernel之間的距離> δ d i s \delta_{dis} δdis 。其公式為:
即對于每一個文本執行個體kernel,分别計算和其他kernel的距離。
其中, δ d i s \delta_{dis} δdis是一個常量,預設3。當兩個kernel之間的距離||……|| > δ d i s \delta_{dis} δdis時,就表示這兩個kernel的距離已經足夠遠了。
另外,在訓練過程中, L t e x L_{tex} Ltex的計算使用的OHEM,正負像素之比是1:3,計算 L k e r L_{ker} Lker, L a g g L_{agg} Lagg 和 L d i s L_{dis} Ldis時均隻考慮ground truth内的文本像素。
到這裡訓練階段就完成了,在預測階段的後處理:
- 從kernel中通過連通域确定初始的文本執行個體集合 K。
- 對于每一個文本執行個體 K i K_i Ki,按4方向從text_region中融合文本像素。融合條件: 文本像素點 p p p和 K i K_i Ki 之間similarity vectors的歐式距離< d(測試過程中 預設為6,自習看的同學應該能發現這裡的這個6應該是有問題的。。。maybe)。
- 重複步驟2直到text_region沒有文本像素。
實驗結果
References
- https://arxiv.org/abs/1908.05900
- https://blog.csdn.net/ft_sunshine/article/details/90244514
- https://zhuanlan.zhihu.com/p/79111059
- https://zhuanlan.zhihu.com/p/81415166