文字檢測模型之CTPN

2021-10-12 07:18:56 字數 2616 閱讀 2516

思路將文字定位框拆分成乙個個等寬(**中為16)的小文字框,然後只需在y方向上做回歸。這裡仍然使用了rpn(可看faster rcnn),唯一不同的是這裡得到的候選區域(region proposal )是乙個等寬不等高的。這種小文字框也規避了網路感受野不足的問題。

使用了cnn+rnn的組合,這裡加入rnn使得寬度方向上或者說水平方向上形成一種聯絡(長短時記憶),所以即使文字間距較大,也能將文字連起來。(對長文字尤其是字元間距過大的文字效果友好)

通過網路及一系列處理後得到等寬的小文字框,然後將小文字框根據一定規則合併成大文字框

由於設定成等寬小文字框,如果不對x方向進行回歸,那麼合併後的文字框邊緣可能是不太精細的,所以**中又提出了邊界精修(side-refinement),文中提到這裡的x回歸只用兩側的錨框來做,來修正邊緣。回歸方式與回歸y一毛一樣。

優缺點優點:

對水平文字效果很好,比較魯棒,通過改變後處理的錨框合併方式也可處理10度以內的傾斜文字

對長文字尤其是字距過大的長文字效果好。

缺陷:對於角度較大的的文字,效果一字謂之曰:「炸」,尤其對於密集型傾斜文字。

有時侯會出現水平方向粘連問題,將兩個你想分開的文字連在一起。

實現過程

**中basenet用的是vgg16,整體的流程如圖:

首先假設resize成了長1200,寬608,即1200608,經過vgg16卷積後,由於有4個stride為2 的pooling,那麼在conv5後輸出的map大小為(1200/16)(608/16)= 7538,然後接乙個33的卷積,map大小依舊不變仍為7538,然後在進入rnn後在輸出結果上用三個11的卷積分別輸出2k個y方向的回歸結果,2k個文字非文字的分類結果,k個的x方向上的回歸結果,其中k為乙個**點上設定的anchor的個數,由於是在7538個點上回歸,那麼一共就有7538k個anchor,**中k為10,那麼就有7538*10=28500個anchor,得到這些anchor後,就需要對這些anchor打上標籤(文字與非文字即1和0)。

如何標定正負樣本

標定正樣本:

方式一:與gt(事先將標註好的框處理成定寬的小文字框,假設乙個6412的框可以得到4個1612的小文字框,這些小文字框就是gt)的交疊面積大於0.7的標記為正樣本

方式二:與每個gt交疊最大的乙個anchor標記為正樣本(為啥還要用方式二,因為只用方式一,生成的anchor與gt的交疊面積萬一很少有達到0.7的,導致正樣本稀少,難以訓練)

標定負樣本:

與gt交疊面積小於0.3 的標記為負樣本。

loss函式

共分成三個,第乙個監督文字與非文字分類,第二個回歸y方向上的座標,第三個回歸x方向上的座標用來修正邊緣,其中帶星為gt引數,λ 1 = 1 , λ 2 = 2 λ_1=1,λ_2=2λ1​=1,λ2​=2

文字線構造演算法

主要思想:每兩個相近的proposal組成乙個pair,合併不同的pair直到無法再合併為止(沒有公共元素)

判斷兩個proposal,bi和bj組成pair的條件:

bj->bi, 且bi->bj。(bj->bi表示bj是bi的最好鄰居)

bj->bi條件1:bj是bi的鄰居中距離bi最近的,且該距離小於50個畫素

bj->bi條件2:bj和bi的vertical overlap大於0.7

一些小細節

k個anchor的設定如下:寬度都是16畫素,高度從11~273畫素變化(每次乘以1.4)

這裡只回歸y方向上的座標,說是座標其實是一組比較引數,計算方式:

其中有星號的代表gt計算的引數,帶a的代表anchor的引數

3. side-refinement用來回歸修正邊緣的精確度,計算方式:

**和**

**:**:tf版本,tf版本的ctpn

我根據這個tf版本改的pytorch版本,對pytorch感興趣的可以看看,效果不錯:我的pytorch_ctpn

部分結果如下:

上圖中,第一幅圖沒加side refinement,第二幅圖加了side refinement,加了之後文字框會收的更緊一些。

目前有個新思路,之後會有個ctpn的改進版本。

OCR文字檢測模型 CTPN

乙個簡單的文字識別流程如下 step 1.通過手機 攝像機 掃瞄器等裝置採集含有待識別字元的影象,作為輸入 step 2.對影象進行尺寸縮放 明暗調整 去噪等預處理操作 step 3.將影象中的單個字元 或者是連續幾個字元所在的區域檢測出來 step 4.根據文字檢測結果從影象中將文字所在區域分割出...

文字檢測 CTPN

參考 faster rcnn 非常詳盡 零基礎入門深度學習 5 迴圈神經網路 零基礎入門深度學習 6 長短時記憶網路 lstm 文章基本資訊 題目 detecting text in natural image with connectionist text proposal network,簡稱c...

ubuntu配置ctpn 文字檢測

我是在ubuntu14.04系統下進行的操作。這個工程是基於tensorflow的,所以,首先要確保安裝了tensorflow。tensorflow的安裝很簡單,直接使用pip安裝即可。pip install tensorflow檢驗安裝是否成功 import tensorflow as tf不報錯...