1. 程式人生 > >ASTER:An Attentional Scene Text Recognizer with Flexible Rectification

ASTER:An Attentional Scene Text Recognizer with Flexible Rectification

程式碼連結:https://github.com/bgshih/aster

 

方法概述

本文方法主要解決不規則排列文字文字識別問題,論文為之前一篇CVPR206的paper(Robust Scene Text Recognition with Automatic Rectification,方法簡稱為RARE)的改進版(journal版)。

1. 主要思路

  • 針對不規則文字,先矯正成正常線性排列的文字,再識別;
  • 整合矯正網路和識別網路成為一個端到端網路來訓練;
  • 矯正網路使用STN,識別網路用經典的sequence to sequence + attention

2. 方法框架和流程

方法ASTER全稱為Attentional Scene TExt Recognizer with Flexible Rectification,包括兩個模組,一個用來矯正(rectification network),另一個用來識別(recognition work),如下圖所示。

3. 文章亮點

  • 效果太好了,針對普通文字和不規則文字,尤其是不規則文字
  • 端到端訓練 + 不需要人工標註(無需矯正網路的控制點)

方法細節

1. 背景

問題定義

本文要解決的問題是irregular text的識別問題,包括:多方向文字(oriented text)、透視形變文字(perspective text)、曲線文字(curved text),如下圖所示:

TPS

TPS全稱Thin-Plate-Spline,可以對形變影象(仿射、透視、曲線排列等)進行校正,通過對control point進行定位和對映,來得到校正後的影象,方便後續進行識別。如下圖所示,詳細演算法可以閱讀參考文獻1。

2. Rectification Network

網路框架

矯正網路框架圖如下圖,基本上是用STN的框架,包含三個部分,Localization Network,Grid Generator,以及Sampler。

  • Localization Network用來檢測圖中的那些Control Points;
  • Grid Generator通過這些Control Point來計算要生成的新圖中每個點在原圖中的點位置的對映關係;
  • Sampler在原圖上取樣那些Grid Generator計算出的點位置,生成校正後的圖。

Localization Network
  • 定位網路(已經訓練完進行測試時)的輸入是待識別的未矯正前影象,輸出是K個控制點的位置。
  • 該定位網路訓練時沒有用K個控制點作為annotation進行訓練,而是直接接入後面的Grid Generator + Sample利用最後的識別結果,連成一個end-to-end的框架進行訓練。
  • 網路結構採用一個自己設計的普通的卷積網路(6層卷積 + 5個max-pooling + 2個全連線)來預測K個control point的位置(K= 20),點對應關係如下圖:

Grid Generator

該網格生成器和之前那篇會議paper(參考文獻3),以及STN(參考文獻2)其實是一樣的,只是作者將公式用更詳細的公式推導和圖表示了一下。這裡簡單介紹下主要思想,具體公式推導等不細講了。

  • 網格生成器的輸入是已有的Control point點集 + 矯正後的圖(還未生成,但給定圖大小可以取點)上的某個點座標,輸出是該點在矯正前(原圖)上的點座標位置

  • 網格生成器可以看成是一個矩陣變換操作(變換的幾個引數a0-a2, b0-b2可以通過Control point位置利用優化問題求解方法求出,因為Control Point在矯正前後的圖上的位置都是已知的,故可以計算出對應關係),實際做預測時也是計算該待測點與已知的control point的位置關係,通過一系列對應關係算出在原圖的位置。貼個圖感受一下這個對應關係如下,p為矯正後的點位置,C為矯正後的Control point的點位置,p'為矯正前的點位置,C’為Control point在矯正前的點位置:

Sampler

該Sampler就是給定點對映關係及原圖,生成一張新的矯正後的圖,用到了簡單的插值,以及當超出圖外時直接clip掉。另外,Sampler採用可微的取樣方法,方便梯度的bp。

  • 輸入是原圖 + 矯正後的圖上的點在原圖上的對應位置關係, 輸出是矯正後的圖
和STN以及RARE的對比
  1. 和STN的不同點

    本文在輸入網路前將原圖resize成小的圖,然後在該小圖上預測control point,而輸入到Grid Generator或Sample計算的時候又映射回原圖大小。這樣的目的是為了減小網路引數,降低計算量(但有沒有可能小圖對於control point的prediction會不準?對於識別來講,每個word的patch塊本身就比較小了,而且小圖映射回大圖的點位置這個誤差比例就會放大?)

  2. 和RARE的不同點

    網路最後fc層的啟用函式不是用tanh,而是直接對值進行clipping(具體怎麼clip論文沒說),這樣做的目的是為了解決取樣點可能落到圖外面的問題,以及加快了網路訓練的收斂速度,論文中對此沒有解釋本質原因,只是說明實驗證明如此

3. Recognition Network

網路框架

識別網路採用當前識別的一般思路:

sequence-to-sequence (encoder/decoder框架)+ attention + beam search

網路主要分為兩部分,ConvNet + 雙向LSTM的encoder模組,和LSTM + attention的decoder模組。

網路配置

4. 網路訓練

損失函式如下,需要計算left-to-right的decoder以及right-to-left的decoder損失。除Location Network的FC層權重初始化為0(防止矯正後的圖distort非常厲害),其餘所有網路層都採用隨機初始化。

實驗結果

實現細節
  1. 環境:tensorflow, TITAN Xp,12GB 記憶體
  2. 速度:訓練6.5iter/s,2天訓練,測試inference 20ms
  3. 優化:ADADELTA(比SGD更好一些),在Synth90k預訓練,學習率1.0,0.1(0.6M), 0.01(0.8M)
驗證矯正網路

結論: 矯正對一般水平樣本(IIIT5k,IC03,IC13)略有提高,對形變比較大的不規則樣本(SVT,SVTP,CUTE)提高3~4個點



Selected results on SVT-Perspective and CUTE80. For every two rows, the first row contains the input images (top), the predicted control points (visualized as green crosses), and the rectified images (bottom). The second row contains the recognition results.

驗證識別網路
  1. Attention的效果

    結論: attention對字元的位置有隱性的定位功能

  2. 雙向LSTM的作用

    結論:兩個方向的LSTM有一定互補作用

  3. 字元長度的影響

    結論: 字元小於11時,識別精度差不多,大於11後精度有所下降,因為長文字本身更難

驗證端到端結果

結論:這個效果有點碉堡了...有幾個庫甩第二名好多,就連其他CVPR2018的paper都望塵莫及...

驗證對檢測的影響

結論:對檢測結果可以微調,可以讓檢測結果更好,這裡提高原因有兩個,1是因為通過識別把噪聲過濾掉了, 2是位置更準確


總結與收穫

  1. 問題整理
    • 這篇文章和之前的RARE從方法介紹上看,幾乎沒什麼變化,作者說不同點一個是有進行resize,另一個是localization network的fc啟用函式從tanh換成一般的value clipping。這兩點變化都不大,但效果比RARE好很多,具體原因有待探討
    • 根據文獻4和文獻5,TPS訓練上需要很多規則和技巧,沒有人工標註的點很難訓練好,這一點這篇文章是怎麼解決的?
    • 怎樣判斷一張圖是否需要矯正?如果普通圖輸入到矯正網路,是否有可能會因為control point預測錯誤導致識別效果反而不好?
    • 好像沒有提到整個識別的時間?
  2. 當前做不規則文字的檢測和識別思路主要是兩類,一種是本文的先用一個網路矯正,再用一個網路識別,另一種思路是結合字元資訊來做。本文針對不規則的文字識別問題,把第一條思路幾乎已經做到極致了(至少效果上是...)

 

轉自:https://www.cnblogs.com/lillylin/p/9315180.html

多多學習。感謝博主!