之前做車牌檢測使用文字檢測模型,如east、ctpn和textboxes,但是效果不是很好,需要針對車牌專門訓練。後面就採用ssd和yolo進行車牌的檢測,但是車牌有時是旋轉的,使用ssd和yolo模型無法對車牌的四個點進行精確定位,而文字檢測模型很多都能精確的迴歸文字四個點的位置,因此還是需要對文字檢測模型進行一定的瞭解。

首先介紹為什麼直接使用ssd和yolo進行文字檢測效果不理想,原因如下:

相比於常規物體,文字行長度、長寬比例變化範圍很大,而ssd和yolo都是anchor-based,它們有固定位置以及長寬比例,如果長寬比例和文字形狀差別很大,就很難透過迴歸找到一個緊湊包圍它的邊框。

文字行有方向性,anchor-based的檢測通常是水平和垂直方向的矩形。

有些藝術字體形狀變化非常大,很多是彎曲的。

由於豐富的背景影象干擾,手工設計特徵在自然場景文字識別任務中不夠魯棒。

具體可以看下圖:

文字檢測模型綜述

文字檢測模型綜述

針對這些問題,目前主要圍繞特徵提取、RPN、多目標協同訓練、loss改進、NMS、半監督學習等角度對常規物體檢測方法進行改造。極大的提高了自然場景影象中文字檢測準確率。

如:

ctpn方案中,用blstm模組提取字元所在影象上下文特徵,以提高文字塊識別精度。

east方案中,模型支援任意方向的四邊形檢測,輸出的結果要麼為四個點座標,要麼為迴歸的框以及對應的角度。

seglink方案中,該模型能預測單個小文字塊,然後將其link成單詞,並且能夠預測傾斜的文字。

textboxes方案中,分別調整了anchor box和卷積核的尺寸為長方形,以更適應文字細長型的特點。

textboxes++方案中,相比textboxes,它能預測任意方向的文字框,因為對anchor box和卷積核都做了相應的修改。

rrpn方案中,文字框標註採用bbox+方向角度的形式,模型中產生出可旋轉的文字區域候選框,並在邊框迴歸計算過程中找到待測文字行的傾斜角度。

dmpnet方案中,使用quadrilateral作為anchor box,從而能夠更好的檢測傾斜文字行。

pixellink方案中,並未使用常規的迴歸方式,而是使用例項分割的方法來預測文字行。

wordsup方案中,使用弱監督的訓練方式, 在文字行和單詞級標註的資料集上訓練出字元級的檢測模型。

接下來我們詳細描述上面提到的模型:

CTPN模型:

CTPN模型可以檢測水平或微斜的文字行,其中文字行被看成一個字元sequence,而不是一般物體檢測中單個獨立的目標。同一文字行上各個字元影象間可以互為上下文,在訓練階段讓檢測模型學習影象中蘊含的這種上下文統計規律,可以使得預測階段有效提升文字塊預測準確率。下面簡單描述其基本流程:

用vgg16的前五個conv stage得到feature map(W*H*C)

在conv5的feature map的每個位置上取3*3*C的視窗的特徵,這些特徵將用於預測該位置K個anchor對應的類別資訊和位置資訊

將每一行的所有視窗對應的3*3*C的特徵(W*3*3*C)輸入到BLSTM中,得到W*256的輸出

將BLSTM的W*256輸入到512維的fc層

fc層特徵輸入到三個分類+迴歸層中,其中第二個2k scores表示的是k個anchor的類別資訊(是否為字元)。第一個2k vertical coordinate(bounding box的高度和中心的y座標)和第三個k side-refinement(bounding box的水平平移量)用來回歸k個anchor的位置資訊。這裡只用三個引數表示迴歸的bounding box,因為這裡默認了每個anchor的width是16,且不再變化(vgg16的conv5的stride是16)。

用簡單的文字線構造演算法,把分類得到的文字的proposal合併乘文字線。

文字檢測模型綜述

下圖是我使用ctpn的檢測效果:

文字檢測模型綜述

文字檢測模型綜述

EAST模型

EAST(Efficient and Accuracy Scene Text detection pipeline)模型,這種模型支援旋轉矩形框、任意四邊形兩種文字區域標註形式。對於四邊形標註,模型執行時會對特徵圖中每個畫素預測其到四個頂點的座標差值。對於旋轉矩形框標註,模型執行時會對特徵圖中每個畫素預測其到矩形框四邊的距離以及矩形框的方向角。

下圖中的(e)部分即為east的過程,從圖中可以看出它的efficient體現在對一些過程的消除上。相比(a)(b)(c)(d),該模型省略了常見的區域建議、單詞分割、子塊合併等步驟,因此速度較快。另外east類似於上面介紹的ctpn模型,不過ctpn只支援水平方向的檢測,而east可以支援多方向文字的定位。

文字檢測模型綜述

具體做法如下:

首先使用PVANet作為backbone,這裡使用fpn的思想分別從stage1,stage2,stage3,stage4提取特徵。之後對抽取的特徵做上取樣,並concat到一起。最後的輸出層會輸出一個score map,四個迴歸的框以及一個角度資訊,或者輸出一個score map和八個座標資訊。

文字檢測模型綜述

下面是我使用EAST的檢測效果:

文字檢測模型綜述

文字檢測模型綜述

從結果可以看出該模型對英文短單詞檢測效果較好,但是長文字的效果欠佳。如果針對長文字進行針對性訓練,也許能夠取得更好的效果。

SegLink模型

seglink(segment+link)模型先將每個單詞切割成更易檢測的有方向的小文字塊(segment),然後用鄰近連線將各個小文字塊link成單詞。這種方法方便識別長度變化範圍很大、帶方向的單詞和文字行。

作者所使用的網路是ssd網路,它會輸出兩類資訊:

一個是文字的box資訊,該box不是整個文字行的box,而是文字行的一部分,稱為segment,它可能是一個字元或者幾個字元等。這個資訊是帶有角度的,如下圖的黃框表示。

另一個是不同segment的link資訊,它的輸出是整個文字行,因此它需要將這些box連線成文字行,而這個link也是在網路中自動學習的,由網路判定哪些segment屬於一個文字行,由下圖的綠線表示。

文字檢測模型綜述

下圖是採用的ssd網路結構:

文字檢測模型綜述

這裡簡要描述它和ssd的區別:

ssd輸出x,y,w,h四個引數,而seglink加入了角度資訊,輸出的是x,y,w,h,θ,這個角度代表矩形框的角度,與水平方向的的夾角順時針為正、逆時針為負

ssd每個feature map的每個位置上由多個不同的aspect ratio的default box,seglink每個位置上只有一個default box,這樣可以加速

ssd每層的feature map決定的default box的scale人工定義(10-90,平均分5次),seglink的scale由感受野大小來決定

seglink不但學習segment,也學習segment之間的link關係,來表示是否為同一個單詞

seglink訓練用的gt除了因為多方向所以用的旋轉後的gt,還要有一個link的gt

seglink的損失函式中加入了link的損失項

對於link的學習分為within-layer link(層內連線,周圍的八個segment)和cross-layers link(層間link,一個word的segments可能同時被多層檢測到)

文字檢測模型綜述

TextBoxes模型

該模型同上面類似,也是改進的ssd演算法。其主要改進如下:

文字通常是細長型,因此將default box的長寬比改為1,2,3,5,7,10初始值

受inception風格的濾波器啟發,設計了非常規的1*5濾波器,而沒有采用3*3的濾波器,使其能適應大縱橫比的單詞,也避免了正方形感受野帶來的噪聲訊號

ssd從多類檢測變為了單類檢測

為了進一步提高檢測精度,使用多個比例的輸入圖片作為輸入

文字檢測模型綜述

如上圖所示,前面的和ssd結構基本一致,最後增加了text-box層,該層的深度是72,因為每個區域有12個比例不同,位置不同的default boxes,每個框需要預測4個座標值,即預測框與預設框的偏差,還要預測透過softmax進行二分類得到2個機率值,因此總共是72維的向量。

通常預設框在水平方向上排列緊密而在垂直方向上排列稀疏,這樣會造成檢測失誤的情況,因此將水平方向上的這些預設框全部向下平移半個區域的單位,下圖中是將黑色與藍色向下平移得到綠色和紅色。從而解決了預設框排列不均勻的問題

文字檢測模型綜述

下面是我使用TextBoxes的檢測效果:

文字檢測模型綜述

文字檢測模型綜述

TextBoxes++模型

textboxes模型只能預測水平的文字,而textboxes++模型可以預測任意方向的文字,其做了如下方面的改進

文字檢測模型綜述

上圖中黃色實線框是ground truth框,綠色虛線框是最匹配的default box框,黑色虛線框是不匹配的default box框,綠色實線框是包含ground truth框的最小外接矩形框。我們需要學習的就是綠色虛線框到黃色實線框以及綠色實線框的偏移。

因為該模型是預測帶方向的文字框,因此預設的default box從1,2,3,5,7,10變為了1,2,3,5,1/2,1/3,1/5。另外1*5的卷積核也變成了3*5的卷積核以適應各個方向的文字框。

和textboxes相似的是在垂直方向加了default box,以應對只有水平方向default box密集的情況

文字檢測模型綜述

如上圖左邊中間的黑色虛線框所示,當兩個單詞很接近時它並不能同時處理這兩個單詞(通常一個ground truth可以匹配到多個anchor,但是一個anchor只能匹配一個ground truth)。如上圖右邊下面的黑色虛線框所示,它完全不能覆蓋下面的單詞。因此我們很有必要增加垂直的default boxes(圖中黃框所示)。

RRPN模型:

基於旋轉區域候選網路(rotation region proposal networks)的方案,將旋轉因素考慮進去。

文字檢測模型綜述

其中前端是vgg-16用來提取feature-map,中間是rrpn生成帶傾斜角的候選區域,最後是multi-task loss。在訓練階段,一個文字區域的ground truth用一個五元組(x,y,h,w,θ)來表示,(x,y)表示邊界框的幾何中心的座標。高度h表示短邊的長度,寬度w表示長邊的長度,而θ表示長邊的方向。

對傳統的錨點框進行了改進,以適應自然場景下的文字檢測。首先,新增了方向變數,加入6個方向角:-π/6、0、π/6、π/3、π/2、2π/3。其次,為符合文字框的形狀,將比例調整為:1:2、1:5、1:8。大小還是8,16,32保持不變。這樣對於特徵圖上每一個點將生成54個R型錨點(6種方向,3種大小,3種比例)。因此分類層有108(2*54)個輸出值,迴歸層有270(5*54)個輸出值。

文字檢測模型綜述

對正負錨點的標定規則如下:

如果錨點對應的box與gt的iou值最大,標記為正樣本。

如果錨點對應的box與gt的iou>0。7,標記為正樣本。

如果錨點對應的box與gt的夾角小於π/12,標記為正樣本。

iou小於0。3,標記為負樣本。

iou大於0。7,但是夾角大於π/12,標記為負樣本。

剩下的非正非負,不用於訓練。

損失函式分別採用交叉熵損失和smoothl1損失。

另外修改roi為rroi(rotation roi)池化層,將任意方向的區域建議先劃分為子區域,然後對這些子區域分別做max pooling,並將結果投影到具有固定空間尺寸的特徵圖上。

文字檢測模型綜述

DMPNet模型

DMPNet(deep matching prior network)模型以vgg16為base model,使用四邊形來更緊湊的標註文字區域邊界,因此該模型對傾斜文字塊檢測效果更好。

首先它使用quadrilateral sliding windows來對text進行粗定位

文字檢測模型綜述

其中(c)就是作者提出的quadrilateral作為anchor box,從(a)裡面可以看到水平anchor box和傾斜anchor box的差別很大。因此quadrilateral能夠更好的對text進行定位,減少背景噪聲的影響。

其次為了計算gt和anchor box的iou,作者認為原來的演算法只能計算矩形之間的iou,並且效率不高,因此提出了基於蒙特卡洛的方法來計算多邊形的面積。

文字檢測模型綜述

方法有下面兩步:

對於ground truth,首先在它的外接矩形框裡均勻取樣10000個點,然後統計在ground truth多邊形裡面的點,得到gt的面積。

如果sliding windows的外接矩形和gt的外接矩形不相交,那麼gt和sliding window的iou就是0,否則根據上一步驟的方法計算sliding window的面積,然後統計gt裡面的點在sliding window裡面的比例,求的交叉區域的面積,得到iou。

該方法在gpu上可以平行計算,因此這種方法的效率很高。

之後需要根據上一步驟可以得到哪些sliding window負責預測text之後,下一步就是根據這些sliding window的引數預測四邊形的座標。首先我們需要確定四邊形四個點的預測順序。

文字檢測模型綜述

我們首先選擇x座標最少,同時y座標也最小點作為點1,之後將這個點和剩下的點連成三條線段,取中間那條作為點3,位於使這條線大於0的點作為點2,否則為點4。 之後我們連線點1,3和點2,4。選擇斜率更大的那條線上x更小的點作為新的點1,剩下的依次確定。

最後在我們確定了點的順序後,要預測的參量其實就是四個點的座標。作者這裡換了一種預測方法:

文字檢測模型綜述

對於gt四邊形,得到它的最小外接矩形。然後用(x,y,w1,h1,w2,h2,w3,h3,w4,h4)表示這個gt,其中(x,y)表示外接矩形的中心點座標,(wi,hi)表示四邊形四個點相對(x,y)的偏移。

對於迴歸loss函式的選取,作者認為smooth l1 loss相比l2 loss對於離群值的敏感度更小。但是從訓練的角度來說,l2 loss能夠加速收斂的速度。因為l1 loss的梯度始終為1,而l2 loss的梯度和誤差同一量級,這樣可以加速收斂。

因此作者提出了smooth ln loss,綜合了l2 loss和smooth l1 loss的特點。

smoothLn(x) = (|d| + 1)ln(|d| + 1) − |d|

deviationLn(x) = sign(x) · ln(sign(x) · x + 1)

文字檢測模型綜述

從圖中可以看出,smooth ln loss對於離群值的敏感度低於smooth l2 loss,同時梯度的調節能力優於smooth l1 loss。

PixelLink模型

該模型和上面的模型差別很大,它並不是anchor-base的,而是用分割的思想來檢測文字。自然場景影象文字通常混在一起,透過semantic segmentation(語義分割)很難將他們識別開來,因此這裡採用instance segmentation(例項分割)方法來解決這個問題。

該模型的特徵提取部分是vgg16為基礎而構建的fcn網路。

文字檢測模型綜述

下圖是其執行流程:

文字檢測模型綜述

首先使用cnn模組執行兩個畫素級預測:一個文字二分類預測,一個連結二分類預測。

接著針對正連結連線鄰居正文字畫素,得到文字塊例項分割結果。

最後由分割結果直接就獲得文字塊邊框,這種方式可以生成傾斜邊框。

可以看出該方法不需要回歸邊框,因此訓練收斂速度更快,但是分割的方式通常需要複雜的後處理。

WordSup模型:

通常在數學公式圖文識別、不規則形變文字行識別等應用中,我們需要進行字元級檢測。但是字元級檢測需要很高的標註成功,已知的公開資料集又很少,導致現在很多文字檢測只能在文字行或者單詞級別標註的資料進行訓練。而該模型提出了一種弱監督的訓練框架, 可以在文字行和單詞級標註的資料集上訓練出字元級的檢測模型。

文字檢測模型綜述

下圖給出其訓練的網路結構:

文字檢測模型綜述

作者使用vgg16模型作為特徵提取器,考慮到不同場景的字元在大小上具有非常大的差異,在1M畫素的影象中有些字元可能只有10*10的大小,因此我們最終的特徵圖大小為原圖的1/4,而不是像常用的物體檢測1/16,1/32這種尺寸。但是由於更深的特徵圖具有更大的感受野,因此作者也使用fpn的形式將高層的特徵圖做上取樣來和低層的特徵圖做融合(eltsum)。最終的預測特徵圖的channel數為5k,分別代表是否是文字(只需一個channel),以及4個迴歸的座標。k代表anchor的數目,這裡取k=3,代表在224*244的輸入大小上文字對角線的長度為24pixels,16pixels和12pixels。只要我們預測的文字其對角線為anchor的0。7~1。4倍就被判定為正樣本。

在下圖中,wordsup弱監督訓練框架中,兩個訓練步驟交替進行:給定當前字元檢測模型,並結合單詞級標註資料,計算出字元中心點掩碼圖。給定字元中心點掩碼圖,有監督地訓練字元級檢測模型。

文字檢測模型綜述

在訓練好字元檢測器後,可以在資料流水線中加入合適的文字結構分析模組,以輸出符合應用場景要求的文字內容。這裡作者列舉了多種文字結構分析模組的實現方式。

文字檢測模型綜述

總結:

上文中除了pixellink是採用分割的思想外,剩下的所有模型都是魔改anchor-base的方式。另外華科的三篇文章seglink,textboxes,textboxes++都是在ssd的基礎上進行的修改。考慮到ssd的base model也是vgg16,因此所有的模型都採用vgg16作為base model,如果將vgg16換成resnet或者densenet這種結構,也許每篇文章都能有一定程度的漲點。在預測方向上,ctpn和textboxes只能預測水平的文字框,而剩下的所有模型都能預測帶有一定角度的文字框。下面以一個表格來結束整篇綜述:

文字檢測模型綜述

Ps: 這篇部落格是在

https://

zhuanlan。zhihu。com/p/38

655369?utm_source=qq&utm_medium=social

基礎上進行了修改和擴充套件,後續會推出一篇文字識別的綜述。

參考文獻:

https://

arxiv。org/pdf/1609。0360

5。pdf

https://

arxiv。org/pdf/1704。0315

5。pdf

https://

arxiv。org/pdf/1703。0652

0。pdf

https://

arxiv。org/pdf/1611。0677

9v1。pdf

https://

arxiv。org/pdf/1801。0276

5。pdf

https://

arxiv。org/pdf/1705。1044

7。pdf

https://

arxiv。org/pdf/1703。0142

5。pdf

https://

arxiv。org/pdf/1801。0131

5。pdf

https://

arxiv。org/pdf/1708。0672

0v1。pdf

https://

zhuanlan。zhihu。com/p/38

655369?utm_source=qq&utm_medium=social

https://

blog。csdn。net/zchang81/

article/details/78873347

https://

blog。csdn。net/qq_148451

19/article/details/78986449

https://

blog。csdn。net/sparkexpe

rt/article/details/77987654

https://

blog。csdn。net/xxiaozr/a

rticle/details/77451277

https://

blog。csdn。net/u01310234

9/article/details/79524233

https://www。

jianshu。com/p/b3c1a2f27

dec

https://

blog。csdn。net/w5688414/

article/details/77986955

https://

blog。csdn。net/hx921123/

article/details/56845256

https://

blog。csdn。net/w5688414/

article/details/77986955

https://

blog。csdn。net/ChuiGeDaQ

iQiu/article/details/79821576

https://

blog。csdn。net/yaoqi_ise

e/article/details/73432759