文字檢測之 craft檢測演算法

2021-10-08 02:49:52 字數 3244 閱讀 9480

**名稱:

character region awareness for text detection

開源**:

**核心思想:

本**為2023年南韓學者提出的一種字元級的文字檢測演算法, 取得了不錯的檢測效果.

craft文字檢測的主要思想:

影象分割的思想, 採用u-net結構, 先下取樣再上取樣,

非畫素級分割, 而是將乙個character視為乙個檢測目標物件,而不是乙個word(所有的word都由character構成),即不把文字框當做目標。這點有點類似ctpn, 先檢測很小的bbox, 再利用bbox之間的關係進行concat. 這樣的好處是***只需要關注字元級別的內容而不需要關注整個文字例項, 從而使用小感受野也能**長文字***. ctpn檢測演算法也是對於長文字的檢測效果會比較好. 與之相對應的就是east檢測演算法, 受限於感受野, 所以長文字的兩端往往檢測不準確.

對於公開資料集大部分都是文字框級別的標註, 而非字元級別的標註, 本文提出了一種弱監督學習思路, 先利用合成樣本進行預訓練, 再將預訓練模型對真實資料集進行檢測, 得到**結果, 經過處理後得到高斯熱度圖作為真實資料集的字元級標籤.

整體網路結構

網路採用vgg-16的backbone進行下取樣, 總共進行了5次下取樣, 所以在**階段的輸入的預處理上, 會將輸入的長和寬padding到距離長和寬的值最近的32的倍數. 比如輸入為500x400, 則會將padding到512x416, 可以有效的避免分割中的畫素漂移現象. 利用unet的思想, 對下取樣的特徵圖再進行上取樣和特徵圖concat操作, 最終得到原圖大小1/2的2個通道特徵圖:region score mapaffinity score map,分別為單字元中心區域的概率和相鄰字元區域中心的概率.

訓練資料處理

訓練資料的標籤生成:

標準的畫素級影象分割: 以二值化的方式離散標記每個畫素的label.背景對應的mask標籤為0, 前景對應的mask標籤為1, 如果是多類目標, 就1,2,3,…

本文craft演算法標籤處理: 採用高斯熱度圖來生成region score和affinity score.採用高斯熱度圖的好處:它能很好地處理沒有嚴格包圍的邊界區域.

弱監督訓練過程

合成資料synthetic image . 這部分資料因為是合成的資料, 是有字元級的字元標註框的, 所以可以進行有監督的訓練.

真實資料集real image. 這部分資料是**於真實的公開資料集, 因為公開資料集一般只有文字框, 但沒有單個字元的標註框, 所以需要進行弱監督訓練.

上圖中, 藍色的pipeline是合成資料的訓練過程, 每張都有其相對應的高斯熱度圖標籤. 綠色的pipeline是真實資料的訓練過程. 紅色的pipeline是真實資料的標籤的生成過程.

對於真實資料集, 1. 先將其中的文字框從原圖中crop出來, 將其經過透視變換拉伸到比較正的文字框, 利用影象分割中的分水嶺演算法得到單個字元的位置框box, 生成對應的高斯熱度圖, 然後變換後重新貼回原圖對應的標籤圖的相應的位置上. 分水嶺演算法得到的字元分割肯定存在一定的誤差, 作者為了減少這種誤差, 引入了乙個評分指標的概念.

因為真實資料集基本都標註了其文字框對應的識別結果.所以其文字框對應的字元長度資訊是知道的. 比如對於文字框w, 假如其識別標籤為"label", 那麼l(w)=5.而分水嶺演算法分割出字元後也可以知道其字元長度資訊lc(w), 可以計算得到其標籤評分s, 假如分水嶺演算法分割得到的字元長度和真實字元長度一致, 那麼s=1, 長度相差越大, 評分越低, 說明分水嶺分割出來的結果越不可信.

上述公式表示: 在文字框區域, 其對應位置的畫素值為上述計算得到的評分值, 在其他的非文字框區域, 對應的畫素值為1.

損失函式

s∗r p and s∗a p 表示通過分水嶺演算法得到的估計的標籤, sr§ and

sa§ 表示經過網路後最終得到的**值, 擋訓練資料為真實資料時, sc p如公式2所示. 當訓練資料為合成資料時, sc p=1.

損失函式如上所示, 由affinity score map和region score map的l2範數兩部分構成.

後處理

利用影象分割來做文字檢測的話, 缺點就是後處理比較麻煩. 這點是其相較於proposal檢測方法的劣勢.

本文主要分為兩部分:

常規矩形bbox:

1、首先對0-1之間的概率圖affinity score map和region score map分別進行取二值化閾值計算, 然後將兩個二值化map求並集得到一張mask圖.

2、使用connected component labeling(ccl) 進行區域連線

3、最後使用opencv的minarearect去框出最小的四邊形區域

非常規四邊形poly:

1、先找到掃瞄方向的區域性最大值(blue line)

2、連線所有the local maxima上的中心點叫做中心線

3、然後將the local maxima lines旋轉至於中心線垂直

4、the local maxima lines上的端點是文字控制點的候選點,為了能更好的覆蓋文字,將文字最外端的兩個控制點分別向外移動the local maxima lines的半徑長度最為最終的控制點.

文字檢測演算法八 DeepText

目錄1.概述 2.fcn 3.rpn 4.bilinear sampling 5.text recognition 6.總結 提出了一種場景文字定位和識別方法。新穎性包括 在單個端到端傳遞的訓練文字檢測和識別,識別cnn的結構和其輸入層的幾何形狀保留文字的表徵,並使其解析度適應資料。所提出的方法在兩...

內部威脅檢測之異常檢測演算法

一般現有的內部威脅檢測演算法都會被轉化為異常檢測來做,我個人認為在內部威脅檢測領域除了異常檢測這一killing part之外,識別攻擊動機以及區分異常和攻擊也是重點 大型立flag現場 另一篇 中了,我就寫這個 首先這篇文章就對現有的異常檢測演算法做乙個綜述。內部威脅檢測主要是基於使用者的網路 檔...

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

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