論文地址:https://arxiv.org/abs/1905.05980
網絡結構
方法簡介
本文方法是一個兩階段的文本檢測,第一階段與Faster R-CNN類似,通過CNN + RPN + ROI 得到 text proposals;第二階段就是對 text proposals進行細化,使預測的框更加準確。
主幹網絡使用的是 SE-VGG16(添加了SE block的VGG16),實驗證明SE Block可以提升性能。
它的亮點主要是提出了自適應文本區域表示,可以根據文本框的形狀使用網絡去學習應該使用多少個點來表示文本框,之前的方法都是使用固定的點來表示文本框,但是水平文本、多向文本和彎曲文本的點的個數是不相同的,所以自己學習文本框的點數可以適應各種形狀的文本框。實現這個功能的是LSTM,對文本框邊界的上邊框和下邊框的對點進行迴歸,並且用 continue/stop標籤來表示對點的結束標誌。
加入了SE Block 的VGG16
SE Block結構
流程
訓練:
- 輸入圖像,使用SE-VGG16提取 feature maps;
- 生成anchor,大小 {32,64,128,512} ,縱橫比 {0.5,1,2};
- 使用RPN網絡和ROI生成 text proposals;
- 通過細化網絡驗證和微調 text proposals(文本/非文本分類,邊框迴歸,自適應文本區域表示的LSTM)。
預測:
- 輸入圖像,使用SE-VGG16提取feature maps;
- 使用RON網絡和ROI生成text proposals;
- 通過細化網絡驗證和微調 text proposals;
- 使用多邊形NMS得到最後的預測輸出。
方法細節
1. 自適應文本區域表示
文中使用有順序的(從左向右的)上邊框和下邊框的對點來表示文本框,如下圖(b)所示,因爲對點有方向的排列更容易使用LSTM學習。
2. Proposal Refinement
對text proposal進行細化微調,包含文本/非文本分類、邊框迴歸和基於自適應文本表示的LSTM等三個分支。
其中,文本/非文本分類和邊框迴歸和其他的兩階段文本檢測方法是類似的,通過兩個全連接神經網絡得到輸出。
對於最後一個分支,輸入是第一階段處理後的每一個text proposals的特徵,輸出是每個文本區域自適應邊框點的數量。考慮到輸出長度是不同的,所以採用了RNN。對於對點的表示方法,文中採用的表示的方法是使用對點的座標 (xi,yi,xi+1,yi+1) 來表示。
如果對點使用中心點 (xic,yic) 的座標,中心點到兩個點的距離 hi 和他們的旋轉角度 θi 來表示。目標角度在某些特殊情況下不好確定。例如,90∘ 和 −90∘ 在空間中是非常相似的,但是他們的角度是不同的。這個就很難正確的學習。除此之外,方向可以通過 sinθi 和 cosθi 來表示,這個可以很好的預測。但是需要很多參數。因此,本文方法使用點的座標 (xi,yi,xi+1,yi+1) 來作爲迴歸目標
LSTM每個時間點的輸入都是相同的,都是相應text proposal的 ROI pooling特徵。每個時間點的輸出是文本區域框的對點的座標。由於不同的文本區域使用自適應點數,因此需要停止標籤來表示預測網絡何時停止。因爲停止標籤預測是分類問題,而座標預測是迴歸問題,所以將他們放在同一分支是不合適的。因此,LSTM的每個時間點有兩個分支:一個點的座標的迴歸,一個停止標籤的預測。在每一個時間點,都預測文本區域的兩個對邊的點的座標和標籤 stop/continue。如果標籤是continue,在下一個時間點將會預測另外兩個點的座標和下一個標籤,否則,預測停止,文本區域使用之前所有預測的點座標來表示。這樣,輸入圖像中的文本區域就可以使用不同的多邊形(通過預測的對點組成的)來檢測和表示了。
損失函數
由於Text-RPN和Faster R-CNN中的RPN是相似的,所以Text-RPN的訓練損失也是以相同的方式計算的。因此,在這一部分,我們只關注微調網絡的損失函數。每一個proposal的損失函數定義爲文本/非文本分類損失,邊框迴歸損失和邊界點回歸損失和停止/繼續標籤分類損失之和。邊框迴歸損失和邊界點回歸損失都使用 平滑L1損失,文本/非文本分類損失和停止/繼續標籤分類損失都是一個二分類損失。在每一個proposal上的多任務損失函數定義爲:
⎩⎪⎨⎪⎧Lsum=Lcls(p,t)+λ1t∑i∈{x,y,w,h}Lreg(vi,vi∗)+λ2t∑i∈{x1,y1,x2,y2,...,xn,yn}Lreg(ui,ui∗)+λ3t∑i∈{l1,l2,...,xn/2Lcls(li,li∗)
λ1,λ2 和 λ3 是這些項的平衡參數,在本文方法中它們設置爲1。
對於文本/非文本損失項,t 是分類標籤的標記。是文本時 t=1,不是文本時 t=0。參數 p=(p0,p1) 是softmax計算後的文本和非文本的置信度。Lcls(p,t)=−logpt 是真值 t對數損失。
對於邊框迴歸損失項,v=(vx,vy,vw,vh) 是邊框迴歸的目標,包括中心點的座標和寬和高,v∗=(vx∗,vy∗,vw∗,vh∗) 是每個 text proposal的預測值。我們使用 Faster R-CNN 中給出的 v 和 v∗ 參數化,其中 v 和 v∗ 指定了一個目標proposal的尺度不變性和對數空間高/寬偏移性。
對於邊界點回歸項,u=(ux1,uy1,...,uxn,uyn) 是邊界點的真值座標,u=(ux1∗,uy1∗,...,uxn∗,uyn∗) 是文本的預測值。爲了使學習的點適合與不同尺度的文本,還應該處理學習目標使它們成比例不變。參數 (uxi∗,uyi∗) 根據以下公式處理:
uxi∗=(xi∗−xa)/wa,uyi∗=(yi∗−ya)/ha
其中 xi∗ 和 yi∗ 表示邊框點的座標,xa 和 ya 表示相應text proposal中心點的座標,wa 和 ha 表示這個proposal的寬和高。
用 (w,w∗) 表示 (vi,vi∗) 或者 (ui,ui∗) , Lreg(w,w∗) 可以定義爲Faster R-CNN中的L1平滑損失:
Lreg(w,w∗)=smoothL1(w−w∗)
smoothL1(x)={0.5x2∣x∣−0.5if |x| < 1otherwise
對於停止/繼續標籤分類損失項,它也是一個二分類,它的損失格式類似於文本/非文本分類損失。
實現細節
anchor:大小 {32,64,128,512} ,縱橫比 {0.5,1,2}
迭代步數: 10×104
學習率:從 10−3 開始,分別在 2×104,6×104 和 8×104 迭代步數時乘以 1/10
權重衰減:0.0005
多尺度訓練:短邊{400,600,720,1000,1200},長邊 2000
訓練集:CTW1500,TotalText,ICDAR2013,ICDAR2015和MSRA-TD500
效果圖