1. 程式人生 > >文字定位 CTPN-黃偉林

文字定位 CTPN-黃偉林

論文翻譯彙總 https://github.com/SnailTyan/deep-learning-papers-translation

2016年 ECCV

業界現在物體識別領域用的最多的是proposal region方法,即通過篩選出候選區域,然後對候選區域進行二分類(object/ no object), 同時還要對bound box進行迴歸,這是一般的物體識別所用的方法。  CTPN這個方法是基於 fast-rCNN來進行的,具體來說就是同樣通過篩選proposal region來識別出文字區域, 不同的是,它修改了RPN方法中的anchor產生window的方式,CTPN方法中的proposal region是固定寬度的(論文中是16px), 這樣做的好處是可以發現任意寬度的文字序列。

ctpn方法的關鍵,將一個3 x 3的劃窗劃過整個feature map,每經過一個位置得到一個3 x 3 x C的特徵向量,而對於每個視窗來說,都會有k = 10個anchor,也就是每個anchor產生一個text proposal,依次將這些特徵輸入一個雙向LSTM中https://gitee.com/mickelfeng/text_detection

CTPN 論文介紹: 文字檢測和一般目標檢測的不同——文字線是一個sequence(字元、字元的一部分、多字元組成的一個sequence),而不是一般目標檢測中只有一個獨立的目標。 難點體現在要檢測出一個完整的文字線,同一文字線上不同字元可能差異大,距離遠,要作為一個整體檢測出來難度比單個目標更大。

CNN用來提取深度特徵,RNN用來做序列的特徵識別。RNN和CNN的無縫結合可以提高檢測精度。 深度特徵:影象深度層次特徵(DHF),通過對影象的層層抽象表達,可以有效挖掘隱藏在影象內部的本質資訊。

Side-refinement:文字線構造演算法(多個細長的proposal合併成一條文字線)

RNN型別:BLSTM(雙向LSTM),每個LSTM有128個隱含層神經元  

這篇文章的方法最大亮點在於把RNN引入檢測問題(以前一般做識別)。 文字檢測,先用CNN得到深度特徵,然後用固定寬度的anchor來檢測text proposal(文字線的一部分),並把同一行anchor對應的特徵串成序列,輸入到RNN中,最後用全連線層來分類或迴歸,並將正確的text proposal進行合併成文字線。 https://blog.csdn.net/zchang81/article/details/78873347

文字檢測的其中一個難點就在於文字行的長度變化是非常劇烈的。因此如果是採用基於faster rcnn等通用物體檢測框架的演算法都會面臨一個問題?怎麼生成好的text proposal?這個問題實際上是比較難解決的。 因此在這篇文章中作者提供了另外一個思路,檢測一個一個小的,固定寬度的文字段,然後再後處理部分再將這些小的文字段連線起來,得到文字行。

基本想法就是去預測文字的豎直方向上的位置,水平方向的位置不預測。因此作者提出了一個vertical anchor的方法。與faster rcnn中的anchor類似,但是不同的是,vertical anchor的寬度都是固定好的了,論文中的大小是16個畫素。而高度則從11畫素到273畫素變化,總共10個anchor.

對於水平的文字行,其中的每一個文字段之間都是有聯絡的,因此作者採用了CNN+RNN的一種網路結構,檢測結果更加魯棒。 http://slade-ruan.me/2017/10/22/text-detection-ctpn/

CTPN 程式碼 https://github.com/tianzhi0549/CTPN  (同caffe編譯失敗)

升級版CTPN https://github.com/qingswu/CTPN