天天看點

文本檢測算法:CRAFT(CVPR2019)1. 關鍵點2. 算法2.1 網絡結構3. 實驗3.4 讨論4. 結論

多種文本檢測算法性能對比及算法介紹

(https://blog.csdn.net/qq_39707285/article/details/108754444)

Character Region Awareness for Text Detection

  • 1. 關鍵點
  • 2. 算法
  • 2.1 網絡結構
    • 2.2 訓練
      • 2.2.1 生成GT
      • 2.2.2 弱監督學習
    • 2.3 推理階段
  • 3. 實驗
    • 3.1 資料集
    • 3.2 訓練政策
    • 3.3 測試結果
  • 3.4 讨論
  • 4. 結論

1. 關鍵點

先前的文本檢測算法通常使用剛性單詞級别的訓練集去訓練模型,導緻這類算法在檢測任意形狀文本區域方面存在局限性。

本文設計了一種新的文本檢測算法,通過檢測每個字元和字元之間的聯系來有效地檢測文本區域。由于目前的文本檢測資料集大多都是基于單詞級别的,很少有基于字元級别的标注,為解決這個問題,本文使用合成資料生成字元級别的标注,并且訓練過渡模型估計真實圖像的字元級标注。

在6個基準資料集上進行了測試,都取得了SOTA(state-of-the-art),根據測試結果發現,該算法在處理複雜的場景文本(如任意方向的、彎曲的或變形的文本)時,能夠保證高度的靈活性。

2. 算法

該算法的主要目标是在自然圖像中精确地定位每個字元。通過訓練一個深層神經網絡來預測字元區域和字元之間的關系, 由于沒有可用的公共字元級資料集,是以模型是以弱監督的方式訓練的。

2.1 網絡結構

文本檢測算法:CRAFT(CVPR2019)1. 關鍵點2. 算法2.1 網絡結構3. 實驗3.4 讨論4. 結論

采用基于VGG-16的全卷積網絡結構,使用BN,為了聚集低層特征,在解碼的部分使用跳層連接配接(類似于U-Net),最終輸出兩個分數圖,region score和affinity score,具體結構如圖2所示。

2.2 訓練

2.2.1 生成GT

對于每張訓練的圖檔,都需要生成字元級别的region score和affinity score标簽,region score标簽表示給定的像素是字元的中心點的機率,affinity score标簽表示相鄰字元之間空間的中心機率。

與其他分割算法不同的時,标簽不是二值化的,而是用高斯熱圖編碼的字元中心的機率。 這種熱圖在其他應用中也有使用,例如用在姿态估計中,因為它在處理不是剛性有界的GT區域時具有很高的靈活性。

文本檢測算法:CRAFT(CVPR2019)1. 關鍵點2. 算法2.1 網絡結構3. 實驗3.4 讨論4. 結論

圖3介紹了合成圖像的标簽生成過程, 直接計算邊界框内每個像素的高斯分布值是非常耗時的,由于圖像上的字元包圍框通常通過透視投影被扭曲,是以使用以下步驟來生成region score和affinity score的标簽:

  1. 準備二維各向同性高斯圖
  2. 計算高斯映射區域和每個字元box之間的透視變換
  3. 扭曲高斯圖到box區域

這種生成GT的方式,即使使用小的接收域,也使模型能夠檢測大的或長的文本執行個體。

2.2.2 弱監督學習

文本檢測算法:CRAFT(CVPR2019)1. 關鍵點2. 算法2.1 網絡結構3. 實驗3.4 讨論4. 結論

和合成的資料集不同的是,大多數資料集都是基于單詞級别标注的,是以設計了一個弱監督學習的中間模型,把單詞級别的box變成字元級别的box,稱之為僞标簽,具體如圖4所示。為了反映中間模型預測的可靠性,每個單詞box上的置信度值按檢測到的字元數除以真實字元數的值計算,作為訓練時的學習權重。

文本檢測算法:CRAFT(CVPR2019)1. 關鍵點2. 算法2.1 網絡結構3. 實驗3.4 讨論4. 結論

圖6是完整的字元級别标注的生成過程:

  1. 從原始圖檔中裁剪出标注框
  2. 用最新訓練的模型預測區域得分
  3. 用分水嶺算法分割字元區域
  4. 使用裁剪步驟的逆變換将字元box的坐标轉換回原始圖像坐标

最後region score和affinity score的僞标簽使用圖3的方式生成。

對于單詞級别标注的訓練資料中的樣本 w w w,用 R ( w ) R(w) R(w)表示BB(bounding box),用 l ( w ) l(w) l(w)表示該單詞的長度,通過字元分割程式,可以得到字元BB和其對應的長度 l c ( w ) l^c(w) lc(w),則樣本 w w w的置信度 s c o n f w s_{conf}{w} sconf​w計算方式為:

文本檢測算法:CRAFT(CVPR2019)1. 關鍵點2. 算法2.1 網絡結構3. 實驗3.4 讨論4. 結論

則該圖檔的像素級别的置信度map S c S_c Sc​的計算方式為:

文本檢測算法:CRAFT(CVPR2019)1. 關鍵點2. 算法2.1 網絡結構3. 實驗3.4 讨論4. 結論

p p p指的是 R ( w ) R(w) R(w)中的像素,定義目标 L L L為:

文本檢測算法:CRAFT(CVPR2019)1. 關鍵點2. 算法2.1 網絡結構3. 實驗3.4 讨論4. 結論

S r ∗ ( p ) S^*_r(p) Sr∗​(p)表示僞region score map, S a ∗ ( p ) S^*_a(p) Sa∗​(p)表示僞affinity score map, S r ( p ) S_r(p) Sr​(p)表示region score, S a ( p ) S_a(p) Sa​(p)表示affinity score,當使用合成資料訓練時, S c ( p ) S_c(p) Sc​(p)可以直接設定成1。

随着不斷的訓練,CRAFT預測字元越準确,對應的置信度分數 s c o n f ( w ) s_{conf}(w) sconf​(w)也就越大,

文本檢測算法:CRAFT(CVPR2019)1. 關鍵點2. 算法2.1 網絡結構3. 實驗3.4 讨論4. 結論

圖5展示了随着訓練過程的進行,字元區域分數map的變化, 在訓練初,對于自然圖像中不熟悉的文本,區域分數相對較低。模型不斷的學習新文本,例如不規則的字型。

當置信度分數 s c o n f ( w ) s_{conf}(w) sconf​(w)小于0.5時,字元BB将會被忽略掉,因為使用這樣的資料可能會對訓練的模型産生不利的影響。這裡,假定每個單獨的字元的寬度固定, 通過簡單地将單詞區域 R ( W ) R(W) R(W)除以字元數 l ( W ) l(W) l(W)來計算字元級預測。

2.3 推理階段

在推理階段,最終輸出可以以各種形狀傳遞,例如輸出單詞box、字元box或者多邊形。對于ICDAR資料集,驗證的方法是根據單詞級别的IoU,是以接下來介紹下如何根據 S r S_r Sr​和 S a S_a Sa​轉換成單詞級别的BB,用 QuadBox表示單詞級别的BB。

具體步驟如下:

  1. 定義圖像的二值map M M M,初始化為0。當 S r ( p ) > T r S_r(p)>T_r Sr​(p)>Tr​或者 S a ( p ) > T a S_a(p)>T_a Sa​(p)>Ta​時, M ( p ) M(p) M(p)值為1, T r T_r Tr​和 T a T_a Ta​分别表示region和affinity門檻值;
  2. 在 M M M上執行連接配接元件标記(CCL);
  3. 得到包圍每個标簽對應的連接配接元件區域的最小外接矩形 QuadBox;類似于OpenCv中的connectedComponents和minAreaRect函數;

值得注意的時,CRAFT不需要額外的後處理步驟(如NMS)。

文本檢測算法:CRAFT(CVPR2019)1. 關鍵點2. 算法2.1 網絡結構3. 實驗3.4 讨論4. 結論

此外,還可以在整個字元區域周圍生成一個多邊形,以有效地處理彎曲文本, 多邊形生成的過程如圖7所示。 第一步,沿着掃描方向找到字元區域的局部極大值線,如圖所示,箭頭為藍色。局部極大值線的長度相等地設定為它們之間的最大長度,以防止最終多邊形結果變得不均勻。 連接配接局部極大值所有中心點的線稱為中心線,如圖黃色所示。 然後,旋轉局部極大值線以垂直于中心線,以反映字元的傾斜角,如紅色箭頭所表示的。局部極大值線的端點是文本多邊形控制點的候選點。 為了完全覆寫文本區域,将兩條最外側傾斜的局部極大值線沿局部極大值中心線向外移動,形成最終控制點(綠色點)。

3. 實驗

3.1 資料集

  1. ICDAR2013

    229張訓練集,233張測試集,文本全是英文的的,單詞級别的标注,旋轉矩形标注。

  2. ICDAR2015

    包含1000張圖檔,其中訓練集500張,測試集500張,這些圖檔從谷歌街景中搜集。目标是多個方向,标注為word級别的,四個點的坐标。

  3. ICDAR2017

    7200張訓練資料,1800張驗證資料,9000張用于測試,包含9中語言,和IC15類似,标注方式也是旋轉的矩形。

  4. MSRA-TD500

    包含500張自然場景圖檔,300張用于訓練,200用于測試,圖檔包含戶内和戶外場景,使用袖珍照相機拍攝,圖檔中包含中英文,文本區域用旋轉的矩形标注。

  5. TotalText

    與CTW1500不同的是,标注是word級别的,該資料集包含水準方向、多方向和曲形文本,共1225張訓練集和300張測試集圖檔。

  6. CTW-1500

    是曲形文本檢測集,包含1000張訓練集和500張測試集,文本使用14個邊界點标注,行标注。

3.2 訓練政策

訓練步驟主要分為兩步:

  1. 首先使用合成資料集訓練50K次疊代
  2. 在其他資料集上進行fine-tune,忽略“DO NOT CARE”的标注框,通過設定 s c o n f ( w ) = 0 s_{conf}(w)=0 sconf​(w)=0來實作,優化器選用 ADAM,僞GT生成所需的模型儲存在記憶體中,不儲存,訓練過程中,合成資料和真實資料比例為1:5,采用online hard negative mining,使用資料增廣(如裁剪、旋轉、顔色變換)。

弱監督訓練中需要兩種類型資料,一是四邊形box,一是單詞描述,用來統計單詞的長度。IC13/IC15/IC17滿足這些條件,但MSRA-TD500/TotalText/CTW-1500不滿足這些條件,MSRA-TD500沒有單詞描述,TotalText/CTW-1500僅提供多邊形标注。 是以,隻在ICDAR資料集上訓練CRAFT,并在其他資料集上進行測試,而不進行微調。

用ICDAR資料集訓練兩種不同的模型。 第一個模型是在IC15上訓練的,隻評估IC15。第二個模型同時在IC13和IC17上進行訓練,用于評估其他五個資料集。 沒有額外的圖像用于訓練,微調的疊代次數設定為25k。

3.3 測試結果

文本檢測算法:CRAFT(CVPR2019)1. 關鍵點2. 算法2.1 網絡結構3. 實驗3.4 讨論4. 結論
文本檢測算法:CRAFT(CVPR2019)1. 關鍵點2. 算法2.1 網絡結構3. 實驗3.4 讨論4. 結論
文本檢測算法:CRAFT(CVPR2019)1. 關鍵點2. 算法2.1 網絡結構3. 實驗3.4 讨論4. 結論

3.4 讨論

  1. 穩健的尺度方差

    由于文本的大小是多變的,大多算法都使用多尺度去解決文本差異問題,而CRAFT和其他算法不同,CRAFT在所有資料集上使用單尺度的測試。CRAFT能有這種優勢,是因為CRAFT是定位單個字元而不是整個文本區域,相對較小的接收場能夠覆寫大圖像中的單個字元,這使得CRAFT在檢測尺度變異文本方面具有魯棒性。

  2. 多語言問題

    IC17資料集包含孟加拉語和阿拉伯語字元,這些字元不包含在合成文本資料集中。 此外,兩種語言都很難單獨分割成字元,因為每個字元都是草書的。 是以,CRAFT不能像區分拉丁語、韓語、漢語和日語那樣區分孟加拉語和阿拉伯語。 在東亞字元的情況下,可以很容易地以恒定的寬度分離,這有助于通過弱監督将模型訓練為高性能。

  3. 與端到端方法比較
    文本檢測算法:CRAFT(CVPR2019)1. 關鍵點2. 算法2.1 網絡結構3. 實驗3.4 讨論4. 結論
  4. 泛化能力

    CRAFT在3個不同的資料集上實作了最先進的性能,而不需要額外的微調。這說明CRAFT能夠捕捉文本的一般特征,而不是過度适應特定的資料集。

4. 結論

提出了一種新的文本檢測算法,叫做 CRAFT,即使是沒有字元級别的标注資料集的情況下,也能夠準确定位單獨的字元。使用若監督的方法把單詞級别的标軸資料集轉換為字元級别的标注集。 CRAFT在大多數公共資料集上達到最優的性能,不進行微調就能夠表現最有用,足以顯示出其泛化能力。

繼續閱讀