EAST文字檢測與Keras實現

2021-09-13 20:23:29 字數 3274 閱讀 7990

2.east模型介紹

2.1 east模型結構

east的網路結構總共包含三個部分:feature extractor stem(特徵提取分支), feature-merging branch(特徵合併分支) 以及 output layer(輸出層)。

圖1 east模型結構

在特徵提取分支部分,主要由四層卷積層組成,可以是一些預訓練好的卷積層,作者採用的是vgg16中pooling-2到pooling-5每一層得到的feature map。記每一層卷積層卷積後得到feature map為,如圖1所示,從上到下唉,每一層feature map對應的尺度剛好為輸入影象的。

在特徵合併分支部分,其實作者借鑑了u-net的思想,只是u-net採用的是反卷積的操作,而這裡採用的是反池化的操作,具體的計算大致如下,對於乙個,首先經過一層反池化操作,得到與上一層卷積feature map同樣大小的特徵,然後將其與進行拼接,拼接後再依次進入一層和的卷積層,以減少拼接後通道數的增加,得到對應的,在特徵合併分支的最後一層,是一層的卷積層,卷積後得到的feature map最終直接進入輸出層。具體的計算公式如下:

其中,被稱為合併基,是合併後得到feature map,表示連線操作。之所以要引入特徵合併分支,是因為在場景文字識別中,文字的大小非常極端,較大的文字需要神經網路高層的特徵資訊,而比較小的文字則需要神經網路淺層的特徵資訊,因此,只有將網路不同層次的特徵進行融合才能滿足這樣的需求。

在輸出層部分,主要有兩部分,一部分是用單個通道的卷積得到score map(分數圖),記為,另一部分是多個通道的卷積得到geometry map(幾何形狀圖),記為,在這一部分,幾何形狀可以是rbox(旋轉盒子)或者quad(四邊形)。對於rbox,主要有5個通道,其中四個通道表示每乙個畫素點與文字線上、右、下、左邊界距離(axis-aligned bounding box,aabb),記為,另乙個通道表示該四邊形的旋轉角度。對於quad,則採用四邊形四個頂點的座標表示,每個點的座標為,因此,總共有8個通道。關於rbox和quad的表示可以見表1:

表1 rbox、quad通道數和數學表示

2.2 真實標籤生成

對於score map,不失一般性的,這裡考慮quad的情況,在rbox也似類似的標籤生成方式。east對真實標籤的四邊形區域會進行放縮,放縮的方式如下:

其中,表示和的歐式距離。

接著,對於四邊形每一對對邊,將兩條邊的長度與他們的均值進行對比,以確定出哪對對邊是長邊,然後對兩條長邊優先進行放縮,放縮的方式是對每個頂點沿著邊向內部分別移動0.3,如圖2(a)所示。

對於geometry map,由前面我們知道有兩種型別,分別是quad和rbox,對於score map為正例的畫素點,其quad對應的標籤直接是他們與四個頂點的偏移座標,即頂點的差值,而對於rbox,則首先會選擇乙個最小的矩形框住真實的四邊形,然後計算每個正例畫素點與該矩形四條邊界的距離。具體的如圖2(c)-(e)所示。

圖2 真實標籤生成

2.3 損失函式

由於輸出層有兩個分支,因此對應著兩個損失函式,可以表達如下: 

其中,和分別表示score map和geometry map的損失函式,表示權重,在**中作者設定為1。

對於,為了解決類別不平衡的問題,作者引入了平衡交叉熵損失函式,其表達形式如下:

其中,是**出來的分數,是真實的標籤,是每一張影象中負例的佔比,其計算公式如下:

對於,當geometry map採用的是rbox時,對於rbox中的aabb,作者採用的是損失函式,其表達形式如下:

其中,表示**到的矩形,表示真實的矩形,表示兩個矩形的重疊面積,其對應的寬和高計算方式如下:

其中,分別代表乙個畫素點到矩形上、右、下、左邊界的距離,表示兩個矩形的總區域,其計算公式如下:

由於rbox還有乙個通道是表示旋轉角度,因此,對於角度的損失函式計算如下:

其中,表示**到的角度,是真實的角度,最後,rbox的損失函式如下:

其中,表示權重,作者在實驗時取的是10。

對於,當geometry map採用的是quad時,此時損失函式的計算方式與rbox不一樣,作者採用的是smoothed-l1損失函式。記乙個四邊形q對應的座標集合為,則quad對應的損失函式如下:

其中,,表示每個四邊形的最小邊長,而是與等價的四邊形集合,唯一的不同就是是經過排序,因為原始資料中,的標註是無序的。

2.4 區域性感知nms

當**結束後,需要對文字線進行構造,為了提高構造的速度,作者提出了一種區域性感知nms演算法,其基本思想是假設相鄰的畫素點之間是高度相關的,然後按行逐漸合併幾何形狀,當相鄰兩個幾何形狀滿足合併條件(這裡的合併條件作者沒有具體講清楚)時,對他們的座標按照分數進行加權,其計算公式如下:

其中,分別表示兩個滿足合併的幾何形狀,分別表示他們的分數,分別對應第i個座標,分別對應合併後的座標和分數,當合併完成後,會將合併後的幾何形狀作為乙個整體繼續合併下去,直到不滿足合併條件,將此時合併後的幾何形狀作為乙個文字線儲存到當中,重複該過程,直到所有的幾何形狀都遍歷一遍為止。具體的演算法過程如下圖:

圖4 east效果圖

因此,huoyijie對其進行了改進,他的改進思想是既然對文字線內的所有畫素點的座標進行**比較難,那就只對文字線的邊界點進行**,然後只對邊界點的座標進行加權平均,這樣就可以加快模型的收斂速度和精度,如下圖所示,是他改進方法之後的效果,其中黃色和綠色點就是邊界點。

圖5 採用邊界點對east進行改進後的效果

這種想法確實是挺妙的,不得不佩服大佬,不過這種方法雖然提高了對文字檢測的精度,但是在構建文字線時確有問題,當對邊界點的**不準確時,比如漏了左側邊界或者右側邊界時,就會導致整個文字線都構造失敗,因此,反而使得模型的**效果更差。

因此,筆者對**中的文字線構造方法進行修改,筆者的思想是既然採用邊界**可以使得對文字的打點更加準確,那可以直接根據這些畫素點的分布,用乙個矩形框把它們直接框起來,那這樣計算漏掉了某一測或全部的邊界點,文字線也可以構建成功,但是這種方法也有乙個不好的地方就是對於傾斜的文字,只能用矩形框住,而沒法用隨意的四邊形框住。筆者在作者原來**的基礎上進行小部分修改後,主要修改的**如下:

4.優缺點總結

最後,還是談一下對east模型的一些看法吧,首先是優點:

結構簡單,pipeline短,模型訓練和**的速度快

可以適用於單詞或文字行級別的文字檢測,並且文字框的形狀可以是任意四邊形,對豎直、傾斜文字的檢測效果要比ctpn好

模型採用全卷積神經網路,參數量更加輕量級,並且速度也更快  

接著是缺點部分,east模型的缺點主要有:

對長文字的檢測不夠準確

模型的感受野有限,當遇到一些比較大的文字時,可能就沒法識別出來 

不過總而言之,還是很欽佩曠世科技,最近曠世科技又提出了乙個新模型,叫spcnet,可以支援對彎曲文字的檢測, 後面有時間再好好拜讀一下。

EAST文字檢測學習整理

復現 傳統的文字檢測方法和一些基於深度學習的文字檢測方法,大多是multi stage,在訓練時需要對多個stage調優,這勢必會影響最終的模型效果,而且非常耗時 針對上述存在的問題,本文提出了端到端的文字檢測方法,消除中間多個stage 如候選區域聚合,文字分詞,後處理等 直接 文字行 提出了基於...

文字檢測演算法 EAST閱讀筆記

多種文字檢測演算法效能對比及演算法介紹 之前的文字檢測演算法在處理較難的場景時往往會出錯,即使是使用了深度學習演算法的也表現的不好,因為這些演算法由多個步驟組成,不僅耗時,表現還不好。本文提出了乙個簡單的能夠快速準確定位場景文字的演算法,改演算法直接 任意形狀或矩形word或者行文字。在 icdar...

EAST文字檢測 天池競賽 經驗分享 踩坑合集

east的模型在檢測自然場景下的英文文字有著較好的效能,要實現中文場景下的中文文字檢測,需要重新訓練模型,本篇文章就是在此基礎上,經歷了無數次的奔潰,雖然沒有達到預期,也算跑出來乙個結果。天池競賽官網鏈結 east github opencv east文字檢測這個位址是網上的朋友用python直接呼...