【轉載】【論文筆記】文本檢測之EAST

【原文地址】https://zhuanlan.zhihu.com/p/37504120

簡介

論文題目:EAST: An Efficient and Accurate Scene Text Detector

論文地址:https://arxiv.org/pdf/1704.03155.pdf

代碼復現:https://github.com/argman/EAST

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

下圖給的是幾個不同框架的檢測pipeline:可以發現本文只包含兩個stage

 

論文關鍵idea

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

 

Pipeline

論文的思想非常簡單,結合了DenseBox和Unet網絡中的特性,具體流程如下:

  • 先用一個通用的網絡(論文中採用的是Pvanet,實際在使用的時候可以採用VGG16,Resnet等)作爲base net ,用於特徵提取
  • 基於上述主幹特徵提取網絡,抽取不同level的feature map(它們的尺寸分別是inuput-image的\tfrac{1}{32}\tfrac{1}{16}\tfrac{1}{8}\tfrac{1}{4} ),這樣可以得到不同尺度的特徵圖.目的是解決文本行尺度變換劇烈的問題,ealy stage可用於預測小的文本行,late-stage可用於預測大的文本行.
  • 特徵合併層,將抽取的特徵進行merge.這裏合併的規則採用了U-net的方法,合併規則:從特徵提取網絡的頂部特徵按照相應的規則向下進行合併,這裏描述可能不太好理解,具體參見下述的網絡結構圖
  • 網絡輸出層,包含文本得分和文本形狀.根據不同文本形狀(可分爲RBOX和QUAD),輸出也各不相同,具體參看網絡結構圖

實現細節

合併層中feature map的合併規則

具體的合併步驟如下:

  1. 特徵提取網絡層中抽取的最後層feature map被最先送入uppooling層(這裏是將圖像放大原先的2倍),
  2. 然後與前一層的feature map進行concatenate,
  3. 接着依次送入卷積核大小爲1\times{1}3\times{3},卷積核的個數隨着層遞減,依次爲128,64,32
  4. 重複1-3的步驟2次
  5. 將輸出經過一個卷積核大小爲3\times{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|i屬於1,2,3,4},pi是按順時針順序排列的四邊形的頂點。對於縮小的Q,我們首先計算ri:

r_{i}=min(D(p_{i},p_{(i mod 4)+1},D(p_{i},p_{(i-1) mod 4)+1}) 
D(pi,pj)是兩個頂點pi和pj之間的L2距離。

我們首先收縮兩個長點的邊,再收縮兩個短點的邊。對於每對對邊,我們通過比較平均長度值來確定長邊。對於每個邊<p_{i},p_{(i mod 4 +1)}> ,我們分別通過沿邊賂內移動兩個端點收縮它,分別爲0.3r_{i}0.3r_{(i mod 4)+1},這裏論文中縮放的係數是0.3,具體可以根據你的實際任務設置。

注:論文中上述公式可能存在問題,這裏僅是個人理解,這裏對應的結果圖如下:其中綠色框爲ground truth,紅色框爲shrink後的座標

QUAD分數圖如下,這裏其實就是上圖紅色四邊形框的掩膜:

 

幾何形狀圖生成

很多數據集(如ICDAR2015)是用QUAD的方式標註的,首先生成以最小面積覆蓋區域的旋轉矩形框。每個像素有一個正的分數值,我們計算它與文本框四邊的距離,把它們放入四通道的RBOX 真值中。對於QUAD真值,8通道幾何形狀圖每個像素的正分數值是它與四邊形4個頂點的座標偏移。

下圖給出的是生成完的結果,綠色框表示生成的RBOX:

訓練loss

loss由兩部分組成:score map loss 和geometry loss,具體公式如下: L_{loss}=L_{s}+\lambda_{g}L_{g}Lloss​=Ls​+λg​Lg​

  • 分數圖損失(score map loss)

論文中採用的是類平衡交叉熵,用於解決類別不平衡訓練,避免通過 平衡採樣和硬負挖掘 解決目標物體的不不平衡分佈,簡化訓練過程,具體公式如下:

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

  • 幾何形狀損失(geometry loss)

文本在自然場景中的尺寸變化極大。直接使用L1或者L2損失去迴歸文本區域將導致損失偏差朝更大更長.因此論文中採用IoU損失在RBOX迴歸的AABB部分,尺度歸一化的smoothed-L1損失在QUAD迴歸,來保證幾何形狀的迴歸損失是尺度不變的.

針對RBOX loss,其損失函數公式爲: L_{g}=L_{AABB}+\lambda_{\theta}L_{\theta}=-logIoU(\hat{R},R^*)+\lambda_{\theta}(1-\cos(\hat{\theta}-\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,並通過相應的規則進行自頂向下的合併方式,可以檢測不同尺度的文本行
  • 提供了文本的方向信息,可以檢測各個方向的文本
  • 本文的方法在檢測長文本的時候效果表現比較差,這主要是由網絡的感受野決定的(感受也不夠大)
  • 在檢測曲線文本時,效果不太理想

本人文筆粗淺,若有理解錯誤的地方,望大家指正.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章