XiangBai——【CVPR2018】Multi-Oriented Scene Text Detection via Corner Localization and Region Segmentation
目錄
- 作者和相關鏈接
- 方法概括
- 方法細節
- 實驗結果
- 總結與收獲點
- 參考文獻和鏈接
作者和相關鏈接
- 作者
方法概括
-
方法概述
- 該方法用一個端到端網絡完成文字檢測整個過程——除了基礎卷積網絡(backbone)外,包括兩個並行分支和一個后處理。第一個分支是通過一個DSSD網絡進行角點檢測來提取候選文字區域,第二個分支是利用類似於RFCN進行網格划分的方式來做position-sensitive的segmentation。后處理是利用segmentation的score map的綜合得分,過濾角點檢測得到的候選區域中的噪聲。
-
背景(文字檢測三大難點)
- 多方向
- 長寬比差異很大
- 文字的粒度很多(可能以字符,單詞,文本行等多種方式出現,存在歧義)
-
文章亮點
- 檢測不是用一般的object detection的框架來做,而是用corner point detection來做。(可以更好解決文字方向任意、文字長寬比很大的文本)
- 分割用的是“position sensitive segmentation”,仿照RFCN划分網格的思路,把位置信息融合進去(對於檢測單詞這種細粒度的更有利)
- 把檢測+分割兩大類的方法整合起來,進行綜合打分的pipeline(可以使得檢測精度更高)
方法細節
-
主要流程
- 用一個檢測網絡完成整個檢測過程,該網絡分為以下幾部分:
Figure 2. Overview of our method. Given an image, the network outputs corner points and segmentation maps by corner detection and position-sensitive segmentation. Then candidate boxes are generated by sampling and grouping corner points. Finally, those candidate boxes are scored by segmentation maps and suppressed by NMS.
-
- backbone:基礎網絡,用來特征提取(不同分支特征共享)
- corner detection:用來生成候選檢測框,是一個獨立的檢測模塊,類似於RPN的功能
- Position Sensitive Segmentation:整張圖逐像素的打分,和一般分割不同的是輸出4個score map,分別對應左上、左下、右上、右下不同位置的得分
- Scoring + NMS:綜合打分,利用(2)的框和(3)的score map再綜合打分,去掉非文字框,最后再接一個NMS
-
網絡結構
-
- Backbone取自DSSD = VGG16(pool5) + conv6(fc6) + conv7(fc7) + 4conv + 6 deconv (with 6 residual block)
- Corner Point Detection是類似於SSD,從多個deconv的feature map上單獨做detection得到候選框,然后多層的檢測結果串起來nms后為最后的結果
-
Corner Detection
- 思路說明
- Step1: 用DSSD框架(任何一個目標檢測的框架都可以)找到一個框的四個角點,然后整張圖的所有角點都放到一個集合中
- Step2: 把集合中的所有角點進行組合得到所有候選的框
- 網絡結構
- Fi表示backbone結構中的后面幾個deconv得到的feature map(每層都單獨做了detection)
- w,h是feature map大小,k是defalt box的個數,q表示角點類型,這里q = 4,即每個位置(左上、左下、右上、右下) 都能單獨得到2個score map和4個offset map
- 角點信息
- 實際上是一個正方形,正方形中心為gt框(指的是文字框)的頂點,正方形的邊長 = gt框的最短邊
- corner detection對每一種角點(四種)單獨輸出corner box,可以看做是一個四類的目標檢測問題
- 角點如何組合成文字框?
-
由於角點不但有頂點位置信息,也有邊長信息,所以滿足條件的兩個corner point組合起來可以確定一個文字框。
-
具體組合思路如下: 一個rotated rectangle可以由兩個頂點+垂直於兩個頂點組成的邊且已知長度的邊來確定。(1. 由於角點的頂點類型確定,所以短邊方向也是確定的,例如左上-左下連邊確定短邊在右邊。2. 垂直的邊的長度可以取兩個角點的正方形邊長的平均值)
- 可以組合的兩個corner point滿足條件如下:
- 角點分數閾值>0.5
- 角點的正方形邊長大小相似(邊長比<1.5)
- 框的頂點類型和位置先驗信息(例如,“左上”、“左下”的角點的x應該比“右上”、“右下”小)
-
-
Poosition Sensitive Segmentation
- 思路說明
- 把一個文字框划分成g*g個網格的小框(一個bin),每個bin做為一類,把一個text/non-text的二類問題變成g*g個二類問題。
- 網絡結構
- 損失:dice損失,比較簡單
-
Scoring
- 該步驟目的
- 利用segmentation得到的g*g張score map來進一步判斷corner detection得到的那些候選框是否是文字,過濾噪聲框
- 思路說明
- 把detection得到的框先划分成g*g個網格(bin),每個bin對應各自的segmentation score map,然后把對應的score map里對應bin位置的那些前景點的像素值取平均(底下P的分母是C,不是直接R的面積,或者bin的面積可以看出只取前景點,即score>0的點)作為每個bin的分數,最后把g*g個bin的分數取平均為初始文字框的分數
- 算法偽代碼
- 該步驟目的
-
- 為什么scoring這么復雜,不直接用區域的像素平均值?
- 采用position sensitive segmentation的思路決定了最后scoring的時候也必須划網格單獨取值再平均。至於之所以只取前像素點是為了平均時不受背景點影響,更加精確。
- 注意一點
- 該文章的分割分支與角點分支(也可以叫做回歸分支,候選目標檢測分支,作用類似於RPN,用來回歸候選框)的組合方式與其他的目標檢測方法(例如RPN,SSD)中分割與回歸分支的組合方式完全不同。對於RPN或SSD,其回歸分支與分割分支共同作用才能得到候選框,分割分支的score map上的每個像素點值決定了回歸分支中某幾個框是否是有效的(目標框還是背景框)。而這篇文章的分割分支和回歸分支除了共用特征外,以及最后把損失都加到損失層外,兩個分支是完全獨立的!也就是說,回歸分支可以換成任何一個可以生成候選框的目標檢測分支(RPN,SSD,甚至Faster R-CNN),分割分支可以換成任何一個可以生成目標置信概率圖的分支,而把這兩個分支加上最后的綜合打分就可以讓分割分支去幫助目標檢測分支進一步過濾噪聲(但對框的生成沒有影響)。這種框架是把目前的兩大類文字檢測方法(基於目標檢測的框架,和基於分割的框架)綜合起來,可以提高檢測精度。
- 為什么scoring這么復雜,不直接用區域的像素平均值?
-
問題搜集
- 為什么要用position-sensitive segmentation?從結果來講,和普通的segmentation而言,到底好在哪里?是否是更適合各種粒度的文字(字符,單詞,文本行)?
- 文章中用角點檢測來檢測文字和一般用目標檢測的方法來檢測文字,其優勢和劣勢在哪里?
- 優勢
-
角點檢測里每個角點都是獨立的,所以在多個特征層上的detection的角點可以全部放到一個集合里再去兩兩組合獲得文字框,而不采用每個特征層單獨做直接得到文字框后再多層融合。這樣好處在於,同一個框的不同角點可以是從不同的特征層上檢測到的,即使在某一層上某個角點漏了,但有其他層可以幫忙將其找回來。
-
角點檢測不用考慮方向性,所以可以用任何一般的目標檢測框架而無需修改(加方向參數等)直接用於檢測角點;
- 角點檢測不用考慮文字框的長寬比大小,對於類似RPN等基於anchor的其defaut box的長寬比和scale不好設置,尤其針對長文本,角點檢測則不用考慮這個問題。
-
- 可能潛在的問題
-
如果角點很多,那么這種兩兩組合的可能性很多,使得檢測框特別多,對后續nms等壓力較大
- 由於任意兩個角點都組合,所以可能導致很多無關的框、沒有意義的框都被當做候選框(比如從左上頂點和右下頂點組成的框)
-
- 我認為文章中疑問或者有問題的點
- Corner Point Prediction的offset輸出沒有必要是4維的,因為已知是正方形的情況下,只需x1,y1,s三維就好了(w = h = s)
-
部分存在歧義,沒有說清楚:
We determine the relative position of a rotated rectangle by the following rules: 1) the x-coordinates of top left and bottom-left corner points must less than the x coordinates of top-right and bottom-right corner points; 2)the y-coordinates of top-left and top-right corner points must less than the y-coordinates of bottom-left and bottom right corner points
實驗結果
-
- 深度框架:Pytorch
- 速度說明
- Nvidia Titan Pascal GPU
-
ICDAR2013:圖像大小resize成512*512,100ms/每張圖, F值=85.5%/88.0%(多尺度)
-
MSRA-TD500:圖像大小768*768,5.7FPS, F值=81.5%
-
MLT:768*768, F值=72.4%
-
ICDAR2015:768*1280,1FPS, F值= 84.3%
-
COCO-Text:768*768,IOU=0.5, F值=42.5%
- ICDAR2013
-
- ICDAR2015
-
- MSRA-TD500
-
- COCO-Text
-
- MLT
總結與收獲
- 用角點檢測來做目標檢測問題很有新意
- Position-sensitive segmentation和一般的segmentation也不太一樣,雖然不是完全理解用這個的原因(融合位置信息?)
- 做一次分割,再做一次目標檢測,兩個共同來打分,這個思路很有意思,不管是用什么做分割或檢測,不管分割和檢測是否共用網絡基礎結構,不管分割和檢測之間是否有沒有關系,這個框架都很可取
參考文獻和鏈接
- Mlt數據庫: Mlt-challenge. http://rrc.cvc.uab.es/?ch=8&com=evaluation&task=1>v=1
- Instance FCN:J. Dai, K. He, Y. Li, S. Ren, and J. Sun. Instance-sensitive fully convolutional networks. In European Conference on Computer Vision, pages 534–549. Springer, 2016.
- DSSD:C.-Y. Fu, W. Liu, A. Ranga, A. Tyagi, and A. C. Berg. Dssd: Deconvolutional single shot detector. arXiv preprint arXiv:1701.06659, 2017.
- Wordsup:H. Hu, C. Zhang, Y. Luo, Y. Wang, J. Han, and E. Ding. Wordsup: Exploiting word annotations for character based text detection. In The IEEE International Conference on Computer Vision (ICCV), Oct 2017
- 兩篇關於角點檢測paper:
- L. Tychsen-Smith and L. Petersson. Denet: Scalable realtime object detection with directed sparse sampling. In The IEEE International Conference on Computer Vision (ICCV), Oct 2017
- X. Wang, K. Chen, Z. Huang, C. Yao, and W. Liu. Point linking network for object detection. arXiv preprint arXiv:1706.03646, 2017.