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版)。html

1. 主要思路

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

2. 方法框架和流程

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

3. 文章亮點

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

方法細節

1. 背景

問題定義

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

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

多多學習。感謝博主!

相關文章
相關標籤/搜索