EAST文字檢測學習整理

2021-09-07 13:11:39 字數 3028 閱讀 8591

**復現:

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

提出了基於two-stage的文字檢測方法:全卷積網路(fcn)和非極大值抑制(nms),消除中間過程冗餘,減少檢測時間.該方法即可以檢測單詞級別,又可以檢測文字行級別.檢測的形狀可以為任意形狀的四邊形:即可以是旋轉矩形(下圖中綠色的框),也可以是普通四邊形(下圖中藍色的框)).採用了locality-aware nms來對生成的幾何進行過濾該方法在精度和速度方面都有一定的提公升.
pipeline

**的思想非常簡單,結合了densebox和unet網路中的特性,具體流程如下:

先用乙個通用的網路(**中採用的是pvanet,實際在使用的時候可以採用vgg16,resnet等)作為base net ,用於特徵提取基於上述主幹特徵提取網路,抽取不同level的feature map(它們的尺寸分別是inuput-image的 \frac,\frac,\frac,\frac ),這樣可以得到不同尺度的特徵圖.目的是解決文字行尺度變換劇烈的問題,ealy stage可用於**小的文字行,late-stage可用於**大的文字行.特徵合併層,將抽取的特徵進行merge.這裡合併的規則採用了u-net的方法,合併規則:從特徵提取網路的頂部特徵按照相應的規則向下進行合併,這裡描述可能不太好理解,具體參見下述的網路結構圖網路輸出層,包含文字得分和文字形狀.根據不同文字形狀(可分為rbox和quad),輸出也各不相同,具體參看網路結構圖
實現細節

合併層中feature map的合併規則

具體的合併步驟如下:

特徵提取網路層中抽取的最後層feature map被最先送入uppooling層(這裡是將影象放大原先的2倍),然後與前一層的feature map進行concatenate,接著依次送入卷積核大小為parseerror: katex parse error: expected 'eof', got ',' at position 11: 1\times,̲3\times,卷積核的個數隨著層遞減,依次為128,64,32重複1-3的步驟2次將輸出經過乙個卷積核大小為3\times3×3,核數為32個
具體的公式如下:

輸出層的輸出

對於檢測形狀為rbox,則輸出包含文字得分和文字形狀(aabb boundingbox 和rotate angle),也就是一起有6個輸出,這裡aabb分別表示相對於top,right,bottom,left的偏移對於檢測形狀為quad,則輸出包含文字得分和文字形狀(8個相對於corner vertices的偏移),也就是一起有9個輸出,其中quad有8個,分別為 (x_i,y_i),i\subset[1,2,3,4]
訓練標籤生成

quad的分數圖生成

得分圖上quad的正面積為原圖的縮小版,縮小的規則如下:

對乙個四邊形q=,pi是按順時針順序排列的四邊形的頂點。對於縮小的q,我們首先計算ri:

r_=min(d(p_,p_,d(p_,p_)

d(pi,pj)是兩個頂點pi和pj之間的l2距離。

我們首先收縮兩個長點的邊,再收縮兩個短點的邊。對於每對對邊,我們通過比較平均長度值來確定長邊。對於每個邊,我們分別通過沿邊賂內移動兩個端點收縮它,分別為parseerror: katex parse error: expected 『eof』, got 『,』 at position 9: 0.3r_,̲0.3r_=l_+\lambda_l_lloss​=ls​+λg​lg​

分數圖損失(score map loss)
**中採用的是類平衡交叉熵,用於解決類別不平衡訓練,避免通過 平衡取樣和硬負挖掘 解決目標物體的不不平衡分布,簡化訓練過程,具體公式如下:

但是在具體實戰中,一般採用dice loss,它的收斂速度會比類平衡交叉熵快

幾何形狀損失(geometry loss)
文字在自然場景中的尺寸變化極大。直接使用l1或者l2損失去回歸文字區域將導致損失偏差朝更大更長.因此**中採用iou損失在rbox回歸的aabb部分,尺度歸一化的smoothed-l1損失在quad回歸,來保證幾何形狀的回歸損失是尺度不變的.

針對rbox loss,其損失函式公式為: l_=l_+\lambda_l_=-logiou(\hat,r^*)+\lambda_(1-\cos(\hat-\theta))

針對quad loss,其具體公式如下:

區域性感知nms(locality-aware nms)
與通用目標檢測相似,閾值化後的結果需要經過非極大值抑制(nms)來得到最終的結果.由於本文中面臨的是成千上萬個幾何體,如果用普通的nms,其計算複雜度是o(n^2)o(n2),n是幾何體的個數,這是不可接受的.

針對上述時間複雜度問題,本文提出了基於行合併幾何體的方法,當然這是基於鄰近幾個幾何體是高度相關的假設.注意:這裡合併的四邊形座標是通過兩個給定四邊形的得分進行加權平均的,也就是說這裡是**"平均"而不是"選擇"幾何體**.

訓練其它引數
整個訓練採用基於adam的端到端的訓練.為了加速學習,統一從影象集中取樣512*512構建minibatch大小為24,然後staged learning rate decay,但是在具體實驗過程中可以使用linear learning rate decay.

在icdar2015資料集上的評測結果

使用east訓練自己資料集

這裡由於時間問題,就詳細介紹了,我的顯示卡型號是tesla p40,檢測一張需要的時間在60ms左右,這裡給出幾張效果圖:

在特徵合併層,利用不同尺度的feature map,並通過相應的規則進行自頂向下的合併方式,可以檢測不同尺度的文字行提供了文字的方向資訊,可以檢測各個方向的文字本文的方法在檢測長文字的時候效果表現比較差,這主要是由網路的感受野決定的(感受也不夠大)在檢測曲線文字時,效果不太理想

EAST文字檢測與Keras實現

2.east模型介紹 2.1 east模型結構 east的網路結構總共包含三個部分 feature extractor stem 特徵提取分支 feature merging branch 特徵合併分支 以及 output layer 輸出層 圖1 east模型結構 在特徵提取分支部分,主要由四層卷...

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

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

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

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