1. 程式人生 > >【論文筆記】Deep Structured Output Learning for Unconstrained Text Recognition

【論文筆記】Deep Structured Output Learning for Unconstrained Text Recognition

寫在前面:

我看的paper大多為Computer Vision、Deep Learning相關的paper,現在基本也處於入門階段,一些理解可能不太正確。說到底,小女子才疏學淺,如果有錯誤及理解不透徹的地方,歡迎各位大神批評指正!E-mail:[email protected]

論文結構:

Abstract

1.Introduction

2.Related Work

3.CNN Text Recognition Model

      3.1 Character Sequence Model Review

      3.2 Bag-of-N-gram Model Review

4.Joint Model

5.Evaluation

      5.1 Datasets

      5.2 Implementation Details

      5.3 Experiments

6.Conclusion

《Deep Structured Output Learning for Unconstrained Text Recognition》

1.內容概述

       這篇論文介紹了一種自然場景圖片中無約束(unconstrained)words(ps:這個詞不知道該如何翻譯,文字?單詞?詞彙?感覺都比較奇怪,所以用原詞,大家應該也能理解,就是一串字元)的識別方法。所謂“unconstrained”,就是指在沒有固定的詞典(lexion,ps:這個詞在自然場景文字識別相關的paper中經常出現,也經常說free-lexion),並且不知道worlds的長度。

       文章提出了一個卷積神經網路(Convolutional Neural Nework,CNN)與條件隨機場(Conditional Random Field,CRF)相結合的模型,這個模型以整張word圖片作為輸入。CRF中的一項由CNN提供來預測每個位置的字元,高階項由另一個CNN提供來檢測N元文法(N-gram)的存在。這個模型(CRF,字元predictor,N元文法predictor)可以通過整體反向傳播結構化輸出損失來優化,本質上要求系統進行多工學習,而訓練僅要求生成綜合資料。

       相對於僅僅對字元進行預測(指不進行文法檢測),文中提出的模型在標準文字識別benchmark中更加準確。除此之外,這個模型在lexicon-constrained(有固定字典,知道長度)的情景中獲得了state-of-the-art的準確率(雖然這個方法是針對於free-lexcion及unconstrainted提出的,但是也對lexion-constrained的情況進行了實驗)。

2.方法

(1)CNN文字識別模型(CNN Text Recognition Model)

        a.字元序列模型( Character Sequence Model

       一個長度為N的word  w的模式化為一個字元序列:w=(c1,c2,...,cN),ci表示這個word中的第i個字元,為10個數字和26個字母集合中的一個。一個word中的ci可以由一個分類器來預測。由於word的長度N是變化的,文中將N的最大值Nmax固定為訓練集中最長的word長度(Nmax=23),同時引入了一個空字元類。由此,一個word可以表示為一個字串:

       對於一個給定的輸入影象x,返回預測的word w*,使最大化(Ps:這個P應該理解為一個可能性、概率或者準確度、整體置信度,指使預測的結果與輸入圖片儘可能貼近)假設字元間是獨立的,則有:

      (1)

其中(Ps:個人理解表示表示第i個字元的預測置信度)由作用一組於共享CNN特徵的第i個位置的分類器給定word w*取每個位置最優可能的字元得到(Ps:這兩段的內容其實就是將字元序列模型的輸入和輸出結構使用數學公式進行量化表達。)

       圖1 展示了由CNN實現的字元序列模型(文中稱這個模型為CHAR model)。word image歸一化為統一大小(忽略長寬比),然後作為這個模型的輸入被輸入到Nmax個獨立的全連線層,每個字元類包含非字元。這些全連線層使用softmax正規化,可以表示為輸入影象x的概率。這個CNN使用多項邏輯迴歸損失(multinomial logistic regression loss)、反向傳播(back-propagation)和隨機梯度下降(stochastic gradient descent, SGD)來進行訓練。

圖1.字元序列模型。通過預測每個位置上的字元輸出來識別一張word image,一次拼寫出字元。

每個位置的分類器獨自學習,但是共享一組聯合優化的特徵。

        b.N元文法組合模型( Bag-of-N-gram Model

        這一張主要討論了文中使用的第二個識別模型,它主要檢測一個word的語義合成性(compositonality)word可以看做是一組無需字元的N元文法組合,即bag-of-N-grams。

       下面介紹一些基礎知識:

        i.若並且sw為兩個字串,則表示sw的子串。

        ii.一個word w的N元文法是指w長度為N的子串,即,並且s的長度

        iii.表示w長度小於等於N的子串的集合即w長度小於等於N的所有N元文法的集合。例如:

iv.表示語言中所有類似文法的集合。

儘管N很小,可以近乎唯一地對每一個進行編碼。例如,N=4時,在一個有90k個word的字典中僅有7個對映衝突。編碼可以表示為N元文法事件的 || 維二值向量。這個向量十分分散,平均當時,

       使用CNN可以預測從一個輸入影象x中獲得的word w的。這個CNN的結構與上面的結構相似(如圖2所示),但是最後的全連線層有個神經元來表示編碼向量。來自全連線層的的score可以表示為通過對每個神經元應用邏輯函式,一個N元文法的可能性。因此,CNN學習輸入影象中每個N元文法的出現,所以是一個N元文法檢測器。

圖2.N元文法編碼模型。被識別的文字被表示為它的N元文法的組合(bag-of-N-grams)。

可以將其視為10k個使用共享聯合學習特徵集合的獨立訓練的二值分類器,訓練用以檢測某個特定N元文法的出現。

        通過使用邏輯函式,訓練問題轉化為 || 個二值分類問題各自反向傳播與每個N元文法類相關的邏輯迴歸損失。為了整體訓練整個變化範圍的N元文法(一些出現很頻繁,一些出現次數極少),反轉訓練word語料庫中每個N元語法類出現的頻率來scale它們的梯度。

在這個模型中,在所有可能的N元文法建模空間中選取 ||個N元文法自己進行內在語言的統計。這可以看做是用一個語言模型來對編碼表示空間進行壓縮,但是不會限制非限制識別的預測能力。大多數時候總是對應於自然語言中唯一的worlds,非言語words總是包含極少數的模型集合中的N元文法,會產生大量非唯一的編碼。

(2)組合模型(Joint Model)

       最大化一個字元序列的後驗概率(posterior probability)(式(1))等價於最大化log-score,其中表示序列中第i個字元的後驗概率的對數。與這個函式相關的圖表是點的集合,每一個為一元條目,不包含任何邊。因此最大化這個函式即單獨最大化每一個條目。

在此,對這個模型進行擴充套件,使之與N元文法也測器想結合,編碼一張word image x中出現的N元文法。N元文法計分函式給每個長度小於N的字串s分配一個score,N是N元文法建模的最大值。注意,與前面定義的不同的是,與位置無關。但是,它重複應用於一個word中的每個位置i。

    式(2)

圖3所示,從CNN字元預測器(CNN character predictor)獲得,由CNN N元文法預測器獲得。注意:N元文法計分函式僅對CNN建模的N元文法子集進行定義,若,則socre=0。

圖3.word camel的路徑score S(camel,x)的構造說明。用於score的一元及邊條目由穿過字元位置圖的路徑選擇,如右上角所示。

這些條目的值,,其中,由字元序列CNN(CHAR CNN)和N元文法編碼CNN(NGRAM CNN)的輸出給定。

        與函式(2)相關的圖與序列N相關。因此,當N適度大小,採用定向搜尋來最大化(2),然後找到預測world w*.

  結構化輸出損失(Structured Output Loss)。一元運算和邊的評分函式應該分別與字元序列模型和N元文法編碼模型的輸出相結合。一種簡單的方式是在移除softmax規範化和邏輯損失後,對CNN的輸出進行加權:

     式(3)

其中為字元序列CNN中第i個字元ci的輸出,是N元文法編碼CNN的N元文法s的輸出。如果需要,可以約束字元權重和邊權重在不同字元、字元位置、相同順序不同文法或所有N元文法間共享。

        式(3)中權重α、β集合,或者式(3)中限制權重的變體,可以在結構化輸出學習框架中學習,使得真是word(ground-truth word)的得分大於等於最高錯誤預測word的得分加上一個邊緣,即:,其中。使之在嚴凸損失(convex loss)中作為一個輕約束:

    式(4)

並且,在調整的經驗風險物件中求M個樣本對結果的平均值:

      式(5)

然而,在式(3)的大多數情況中,權重可以與CNN函式f和g相結合,作用於score:

        式(6)

函式f和g由CNN定義,因此可以優化它們的引數來降低式(5)的損失,。這裡可以簡單使用標準的反向傳播和SGD來實現。S相關的差異化損失L給出:

    式(7)

其中。字元序列模型及N元文法編碼模型輸出相關的差異化評分函式公式(6)給出:

  式(8)

這允許錯誤被反向傳播到整個網路。

使用結構化輸出損失可以使整個模型的引數在式(6)提出的的結構中聯合最優化。圖4展示了所使用的訓練結構。由於式(6)中的高階得分,使得窮盡遍歷所有可能的路徑空間來找到w*代價巨大,即使使用動態規劃,因此使用定向搜尋來找到近似得分最高的路徑。

圖4.聯合模型的訓練結構,將字元序列模型(CHAR)和N元文法編碼模型(NGRAM)與結構化輸出損失相結合。

路徑選擇層(Path Selecet Layer)通過對輸入的ground-truth word求和來生成score 

定向搜尋層(Beam Search Layer)通過定向搜尋來從輸入中選擇最大的score

hinge loss實現了一個ranking loss,限制最高得分路徑為ground-truth路徑,可以反向傳播到整個網路來聯合學習所有引數

3.實驗及結果

(1)資料集:ICDAR 2003、ICDAR 2013、Street View Text、IIIT 5K-word、Synth90k

(2)實現細節

用CHAR來表示字元序列模型,用NGRAM來表示N元文法編碼模型,組合模型表示為JOINT。

         CHAR和NGRAM具有相同的base CNN結構。這個base CNN有5個卷積層和2個全連線層 。word image歸一化為32*100的灰度影象(忽略長寬比),然後作為這個模型的輸入。除了最後一層,其他每一層都使用了啟用函式(Rectified linear units)。卷積層一次有64、128、256、512、512個square filter,滑窗的邊的大小依次為5、5、3、3、3。卷積滑動的步長為1,並且通過填充輸入特徵圖來保護空間維度。2*2 的max-pooling層跟在第1、2、3層卷積層之後。全連線層有4096個單元。在這個base CNN的頂端,這個CHAR model有23個獨立的帶有37個單元的全連線層,允許識別最長為Nmax=23個字元的word。NGRAM模型在10k個頻繁出現的(在Synth9k word語料庫中至少出現10次,包含36個一元文法,522個二院文法,3965個三元文法,以及5477個四元文法)、N小於等於4的N元文法中執行選擇操作。要求base CNN最後的全連線層具有10k個單元。在訓練時定向搜尋寬度為5,在測試時為10。如果使用一個lexicon來約束輸出,而不是使用定向搜尋,與lexion word相關的路徑使用式(6)來評分,具有最高評分的word作為最終的結果。

       這三個模型都使用SDG和dropout regularisation來進行訓練。JOINT由訓練好的CHAR和NGRA網路權值來初始化,並且卷積層權在訓練時不變(文中用了frozen這個詞,不知這樣理解對不對)。

(3)實驗及結果

        a.CHAR及JOINT識別準確率

     b.本文中的方法與相關論文中的方法的對比