Weilin Huang——【arXiv2016】Accurate Text Localization in Natural Image with Cascaded Convolutional Text Network
目錄
- 作者和相關鏈接
- 背景介紹
- 方法概括
- 方法細節
- 實驗結果
- 總結與收獲點
- 參考文獻
作者和相關鏈接

- 論文下載:論文傳送門
背景介紹
-
自底向上方法(bottom up)的一般流程
- Step 1: 用滑動窗口或者MSER/SWT等方法提取候選區域
- Step 2: 字符級分類器(SVM,CNN等)
- Step 3: 后處理,如文本線形成(字符聚類、字符分組),單詞切割等
-
自底向上方法(bottom up)的缺點
- Step1一般使用的是低級特征(像素級),不夠魯棒,對於光強不均勻,形變較大等的目標都無法提取出候選區域
- Step1產生的候選區域往往很多,對后續字符級分類器的壓力很大,且候選區域越多也會造成整體效率不高
- 后處理往往很復雜,需要很多人工的規則,參數,而且不通用,尤其當庫的變化比較大時,參數很可能需要修改
- 多步的pipeline容易造成誤差積累,且整體性能被每一步所限制
-
從傳統方法到引入CNN方法后的改進
- 字符級CNN的缺點:unreliable, inefficient,complicated,not robust
- 改進思路一:從字符級CNN到字符串級CNN(文本線級CNN、文本塊級CNN)
- 利用文本區域的上下文信息,更加魯棒;
- 不再需要復雜的后處理,更加可靠通用;
- 改進思路二:修改CNN結構,從經典的Conv+pool+FC修改成FCN(全卷積)
- 計算共享,更加高效
- 去掉FC,可以處理各種尺度的輸入
- CNN不再只是做分類,而且做回歸,對位置也做regression
方法概括
-
基本流程


Figure 1. Two-step coarse-to-fine text localization results by the proposed Cascaded Convolutional Text Network (CCTN). A coarse text network detects text regions (which may include multiple or single text lines) from an image, while a fine text network further refines the detected regions by accurately localizing each individual text line. The ORANGE bounding box indicates a detected region by the coarse text network. We have two options for each text region: (i) directly output the bounding box as a final detection (solid ORANGE); (ii) refine the detected region by the fine text network (dashed ORANGE), and generate an accurate location for each text line (RED solid central line). The refined regions may include multiple text lines or an ambiguous text line (e.g., very small-scale text).
-
- 本文的方法主要分兩大步,先用一個coarse-CNN檢測粗略的文字區域(文字塊),如圖Figure1中的黃色虛線部分;再用fine-CNN提取文字區域中的文本線,如圖Figuire1的紅線。圖中的黃色實現表示有些coase CNN得到的文字區域可以直接作為text line輸出。
-
關鍵點——對VGG16的修改成coarse/fine CNN

-
- 卷積核從3*3變成3種:3*7,3*3,7*3(多形狀),並且多個卷積還是並行的,而不是連續的!
- 引入了2個1*1的fully convolution 代替了原來的fully connected層:輸入圖像大小可以任意,因為都是卷積,沒有全連接
- 多個層進行融合(多尺度):pool5進行了2*2池化,所以最后要進行up sample之后才能和pool4進行融合
方法細節
-
本文方法分兩步,coarse CNN用來檢測候選文本區域,再fine CNN用來從候選的文本區域中找出准確的文本線位置。
-
coarse CNN和fine CNN用的是同樣的網絡結構,輸入圖像大小是500*500,二者不同的地方在於:
- 對於coarse CNN,最后的loss層只用到了text region的監督信息,也就是說它的groundTruth和最終得到的heat map如左圖。而fine CNN最后的loss和輸出是有兩個的,一個是和coarse一樣的text region supervision,另一個是text line的supervision。如右圖所示。text line的gt是整個text line的中心線處為1,逐漸向上下擴展,用高斯分布逐漸遞減,半徑為整個bounding box的高度的一半。因此,text line的gt實際上是包含了文本線的位置和文本塊的高度信息。


coarse CNN(上圖)和fine CNN(下圖)用到的GT
coarse CNN的輸出(b)和fine CNN的輸出(e和f)
-
- coarse CNN的輸入是整張圖直接resize成500的,而fine CNN的輸入是coase CNN得到的候選區域,但是候選區域需要進行在邊界padding 50,並把patch塊resize成500*500的。


Figure 3. (b) An resized 500×500 input image, and the actual receptive filed of new Pool-5, which is computed as the response area in the input image by propagating the error of a single
neuron in the new Pool-5.
- 對於coarse CNN得到的text region,如何判斷是否要refine(跑fine CNN)還是直接輸出為單個文本線?
- 對coarse CNN得到的heatmap進行二值化(閾值0.3)
- 計算圖中的area ratio和borderline ratio,如果前者大於0.7,且后者大於5,則直接輸出為單個文本線
- 否則要進行refine。先將圖像按1.2倍crop下來,並按邊界padding 50(補0),整個patch塊resize成500*500,輸入到fine CNN中去進行refine得到更細致的文本線進行輸出
- 對於fine CNN得到的兩張heatmap,如何結合得到精確的text line(bounding box)輸出?
- 每個heatmap都用MAR(minimum area rectangle)得到rectangle(text line的高度要乘2)
- 對兩張heatmap得到的rectangle進行組合(怎么組合作者沒提)得到精確的的文本線輸出

實驗結果
- 運行時間:1.3s
- coarse CNN和fine CNN對比

- ICDAR2011,ICDAR2013檢測結果


- 多語言和多方向檢測結果

- 結果示例

總結與收獲點
- 本文的亮點有兩點,第一是解決問題的思路從bottom up的pipeline改成了現在流行的top down,先檢測候選的文本塊區域,再在粗略的文本區域中找出更精細的文本線。這種方法魯棒性,可靠性,效率,方法的復雜度都更好。第二個亮點在於把傳統的CNN改造成可以用來檢測文字區域,改進的點在修改卷積核長寬比,引入全卷積代替全連接,多層融合這三點。
