文本檢測之RRPN

文本檢測之RRPN

來自專欄小石頭的碼瘋窩12 人贊了文章

簡介

  • 論文題目:Arbitrary-Oriented Scene Text Detection via Rotation Proposals
  • 論文地址: arxiv.org/abs/1703.0108
  • 代碼實現: github.com/mjq113020100

自然場景文本檢測存在的困難:光照不均,模糊,透視畸變,文本不定向等等.針對不定向的文本檢測,通過基於深度學習的分割演算法來實現文本檢測,但是這種方法需要複雜的後處理.針對上述存在的不足,本文提出了基於旋轉候選框實現任意方向的場景文本檢測,簡稱RRPN,其思想沿用的是目標檢測中的RPN,在其基礎上增加了旋轉信息.

論文關鍵idea

  • 與先前基於分割的框架不同,本文提出了基於候選框的不定向文本檢測,使得候選框可以更好地適應文本區域,可以更好地修正長文本區域
  • 本文將新提出的RROI池化層和旋轉候選框的學習加入到基於候選框區域的結構當中,與傳統的基於分割的文本檢測框架相比,確保了文本檢測的計算效率
  • 本文提出了任意方向選擇候選框的新的修正方法(refinement),以提高任意文本檢測的性能。
  • 本文的方法在三個數據集(MSRA-TD500, ICDAR2013,ICDAR2015)進行了測試,發現它比以前的方法準確而且更有效

Pipeline

RRPN沿用了Faster-rcnn中的RPN的思想(即使用其來生成候選區域),並在此基礎上進行了改進,提出了基於旋轉候選網路區域(RRPN).整個網路結構和Faster-rcnn非常相似,RRPN也是分成並行兩路:一路用於預測類別,另一路用於回歸旋轉矩形框.具體步驟如下:

  • 前端使用VGG16作為特徵提取主幹網路
  • 中間採用RRPN主要是用於生成帶傾斜角的候選區域,該層輸出包括候選框的類別和旋轉矩形框的回歸
  • 通過RRoI層(它扮演的是最大池化層的作用)將RRPN生成的候選框映射到特徵圖上,得到最終的文本行檢測結果

具體的網路結構圖如下:

具體實現細節

旋轉矩形框的表示

在訓練階段,文本行區域的ground truth使用旋轉矩形框表示: (x,y,h,w,	heta) ,其中 (x,y) 表示幾何矩形中心點坐標, h 表示矩形框的短邊, w 表示矩形框的長邊, 	heta 表示x正軸與矩形框長邊的夾角.注意:為了保證 	heta[-frac{pi}{4},frac{3pi}{4}) 的範圍區間內,文中通過 	heta+kpi 來代替 	heta 來保證在其區間範圍內.(這裡的原理就不用解釋了吧,數學中都學過)

由於在數據預處理階段,會通過旋轉訓練原圖像來進行數據增廣.一旦圖像旋轉,相應的已標註的文本行區域信息也會跟著變化,這裡就會涉及到一些數學知識.具體來說圖像繞某個點旋轉的具體步驟:1).將該旋轉點移動到原點處;2).執行繞原點的操作;3).再將旋轉點移回到原來的位置;也就是所有的旋轉操作需要執行兩次平移,一次旋轉操作.

具體的公式為: v=T(x,y)	imes{R}	imes{T(-x,-y)} ,其中 T(.) 表示平移矩陣, R 表示旋轉矩陣,這裡論文中給出了如下的公式:

註:圖像旋轉後,文本行的旋轉矩形框的寬和高是不變的, (x,y) 的坐標變換如上述公式,角度的變換公式如下 	heta=	heta+alpha+kpi

旋轉anchor

相比傳統的anchors,本文設計的旋轉anchor(簡稱R-anchor)進行了如下的改進:1).通過加入方向參數來控制proposal的方向,這裡結合方向收斂速度和計算效率選用了6個方向,分別是 (-frac{pi}{6},0,frac{pi}{6},frac{pi}{3},frac{pi}{2},frac{2pi}{3}) ;2).修改了文本行的aspect ratio,調整文本行的比例為1:2,1:5,1:8,大小還是8,16和32,具體的anchor策略示意圖如下:

結合上述的aspect ratio和scale,特徵圖上每個點將生成54個R-anchor(6個方向,3個尺度,3個寬高比).對應的回歸層有 54	imes5=270 個輸出值,分類層有 54	imes2=108 個輸出值.對於大小為 H	imes{W} 的特徵圖,通過RRPN可以產生 H	imes{W}	imes{54} 個R-anchor

旋轉anchor與水平anchor用於檢測文本行的區別

為什麼說基於旋轉候選框的文本行檢測效果更好.讓我們來看看基於水平候選框和基於旋轉候選框的文本行檢測結果:

從上圖中可以看出,水平anchor在檢測傾斜文本行的時候並不能很好地包絡(即包絡了很對非文本區域);而旋轉anchor可以很好地包絡傾斜文本,當然對於曲線文本,水平anchor和旋轉anchor效果都不盡人意

旋轉矩形候選框的學習

RRPN層會生成很對很多的旋轉矩形框,那麼這些矩形框中有哪些是需要送入網路參與訓練呢?先來看看如何確定它們當中的哪些是可以用於作為訓練的正、負樣本?

  • 如何確定訓練的正樣本和負樣本

對於訓練正樣本,需同時滿足:1).其與ground truth的IOU最高的或者大於0.7;2).其與ground truth的夾角小於 frac{pi}{12}

對於訓練負樣本:需滿足其中之一的條件:1).其與ground truth的IOU小於0.3;2).其與ground truth的IOU大於0.7,但其與ground truth的夾角大於 frac{pi}{12}

對那些既不滿足正樣本也不滿足負樣本的候選區域,不參與訓練

  • 損失函數

損失函數採用的是多任務損失函數,具體公式如下:

其中表示類別( l=1 表示文本, l=0 表示背景;對於背景其不參與回歸)

對於分類損失函數,其公式為: L_{cls}(p,l)=-log{p_l}

對於邊框回歸,採用的是 smooth_{L_1} ,其公式如下(具體細節請參看論文):

準確候選框的修正

  • 傾斜IOU的計算

由於本文使用的是傾斜的候選框,所以基於水平候選框的IOU計算方法不再適應,因此本提出了傾斜IOU的計算方法,其主要思路就是將兩個矩形框相交的點和矩形框內的點,然後將這些點集進行順時針排序,使用三角形剖分法計算IOU.具體的演算法步驟如下:

  • 傾斜NMS

傳統的NMS只考慮了IOU因子(即大於0.7),但對於任意方向候選框僅考慮IOU是不夠的.舉個簡單的例子:對於比例1:8,角度小於,其IOU為0.31,它遠小於0.7,但是它有可能是正樣本.

文本提出的傾斜NMS包含了兩個階段:1).保留IOU大於0.7的最大候選框;2).如果所有候選框的IoU範圍在[0.3,0.7]內,保留與ground truth最小角度差的候選框(角度小於 frac{pi}{12} )

RROI池化層

Fast-RCNN框架中的ROI池化層主要是用於處理軸對齊的候選區域;針對任意方向的文本,本文提出了旋轉ROI池化層.

假設RROI層的超參數為 H_rW_r ,對於高度為h和寬度為w的旋轉候選區域平均劃分成 frac{h}{H_r}	imes{frac{w}{W_r}} 個子塊,每個子區域和候選框的方向相同.具體的實現細節如下圖:

在ICDAR2015上的測試結果

總結及困惑

  • 本文基於Faster-RCNN框架的RPN的改進的,提出了RRPN,使其適應任意方向的文本行檢測
  • 與CTPN相比,RRPN採用的是旋轉anchor,用於檢測任意方向的文本行;而CTPN採用的是垂直anchor,用於檢測水平方向的文本
  • 與TextBoxes++相比,同樣採用的是旋轉矩形框實現任意方向的文本行檢測,但是其表示方法不一樣;對於RRPN,其旋轉矩形框是用 (x,y,h,w,	heta) 表示,而TextBoxes++的旋轉矩形框用 (x_1,y_1,x_2,y_2,h) 表示
  • 在實際訓練中,其召回率比較低,後期待我確定原因之後,再更新

文人文筆粗淺,以上是個人對這篇文章的理解,若有理解錯誤的地方,歡迎指正.由於最近比較忙,這篇文章可能沒有之前的詳細,後期有空會再進行更新.


推薦閱讀:

skimage例子學習(四)exposure模塊介紹及gamma和log對數調整
還敢吹「毫無PS痕迹」?小心被Adobe官方AI打臉
VS2017+OPENCV3配置
面向新手的CNN入門指南(一)
[論文筆記] two-stream和two-stream fusion

TAG:OCR光學字元識別 | 深度學習DeepLearning | 計算機視覺 |