文本檢測之RRPN
來自專欄小石頭的碼瘋窩12 人贊了文章
簡介
- 論文題目:Arbitrary-Oriented Scene Text Detection via Rotation Proposals
- 論文地址: https://arxiv.org/abs/1703.01086
- 代碼實現: https://github.com/mjq11302010044/RRPN
自然場景文本檢測存在的困難:光照不均,模糊,透視畸變,文本不定向等等.針對不定向的文本檢測,通過基於深度學習的分割演算法來實現文本檢測,但是這種方法需要複雜的後處理.針對上述存在的不足,本文提出了基於旋轉候選框實現任意方向的場景文本檢測,簡稱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正軸與矩形框長邊的夾角.注意:為了保證 在 的範圍區間內,文中通過 來代替 來保證在其區間範圍內.(這裡的原理就不用解釋了吧,數學中都學過)
由於在數據預處理階段,會通過旋轉訓練原圖像來進行數據增廣.一旦圖像旋轉,相應的已標註的文本行區域信息也會跟著變化,這裡就會涉及到一些數學知識.具體來說圖像繞某個點旋轉的具體步驟:1).將該旋轉點移動到原點處;2).執行繞原點的操作;3).再將旋轉點移回到原來的位置;也就是所有的旋轉操作需要執行兩次平移,一次旋轉操作.
具體的公式為: ,其中 表示平移矩陣, 表示旋轉矩陣,這裡論文中給出了如下的公式:
註:圖像旋轉後,文本行的旋轉矩形框的寬和高是不變的, 的坐標變換如上述公式,角度的變換公式如下
旋轉anchor
相比傳統的anchors,本文設計的旋轉anchor(簡稱R-anchor)進行了如下的改進:1).通過加入方向參數來控制proposal的方向,這裡結合方向收斂速度和計算效率選用了6個方向,分別是 ;2).修改了文本行的aspect ratio,調整文本行的比例為1:2,1:5,1:8,大小還是8,16和32,具體的anchor策略示意圖如下:
結合上述的aspect ratio和scale,特徵圖上每個點將生成54個R-anchor(6個方向,3個尺度,3個寬高比).對應的回歸層有 個輸出值,分類層有 個輸出值.對於大小為 的特徵圖,通過RRPN可以產生 個R-anchor
旋轉anchor與水平anchor用於檢測文本行的區別
為什麼說基於旋轉候選框的文本行檢測效果更好.讓我們來看看基於水平候選框和基於旋轉候選框的文本行檢測結果:
從上圖中可以看出,水平anchor在檢測傾斜文本行的時候並不能很好地包絡(即包絡了很對非文本區域);而旋轉anchor可以很好地包絡傾斜文本,當然對於曲線文本,水平anchor和旋轉anchor效果都不盡人意
旋轉矩形候選框的學習
RRPN層會生成很對很多的旋轉矩形框,那麼這些矩形框中有哪些是需要送入網路參與訓練呢?先來看看如何確定它們當中的哪些是可以用於作為訓練的正、負樣本?
- 如何確定訓練的正樣本和負樣本
對於訓練正樣本,需同時滿足:1).其與ground truth的IOU最高的或者大於0.7;2).其與ground truth的夾角小於 ;
對於訓練負樣本:需滿足其中之一的條件:1).其與ground truth的IOU小於0.3;2).其與ground truth的IOU大於0.7,但其與ground truth的夾角大於
對那些既不滿足正樣本也不滿足負樣本的候選區域,不參與訓練
- 損失函數
損失函數採用的是多任務損失函數,具體公式如下:
其中表示類別( 表示文本, 表示背景;對於背景其不參與回歸)
對於分類損失函數,其公式為:
對於邊框回歸,採用的是 ,其公式如下(具體細節請參看論文):
準確候選框的修正
- 傾斜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最小角度差的候選框(角度小於 )
RROI池化層
Fast-RCNN框架中的ROI池化層主要是用於處理軸對齊的候選區域;針對任意方向的文本,本文提出了旋轉ROI池化層.
假設RROI層的超參數為 和 ,對於高度為h和寬度為w的旋轉候選區域平均劃分成 個子塊,每個子區域和候選框的方向相同.具體的實現細節如下圖:
在ICDAR2015上的測試結果
總結及困惑
- 本文基於Faster-RCNN框架的RPN的改進的,提出了RRPN,使其適應任意方向的文本行檢測
- 與CTPN相比,RRPN採用的是旋轉anchor,用於檢測任意方向的文本行;而CTPN採用的是垂直anchor,用於檢測水平方向的文本
- 與TextBoxes++相比,同樣採用的是旋轉矩形框實現任意方向的文本行檢測,但是其表示方法不一樣;對於RRPN,其旋轉矩形框是用 表示,而TextBoxes++的旋轉矩形框用 表示
- 在實際訓練中,其召回率比較低,後期待我確定原因之後,再更新
文人文筆粗淺,以上是個人對這篇文章的理解,若有理解錯誤的地方,歡迎指正.由於最近比較忙,這篇文章可能沒有之前的詳細,後期有空會再進行更新.
推薦閱讀:
※skimage例子學習(四)exposure模塊介紹及gamma和log對數調整
※還敢吹「毫無PS痕迹」?小心被Adobe官方AI打臉
※VS2017+OPENCV3配置
※面向新手的CNN入門指南(一)
※[論文筆記] two-stream和two-stream fusion
TAG:OCR光學字元識別 | 深度學習DeepLearning | 計算機視覺 |