怎样快速识别 英文地址中包含非英文字符_[论文笔记]端到端的场景文本识别算法--CRNN 论文笔记...
論文地址:https://arxiv.org/abs/1507.05717
開(kāi)源代碼:https://github.com/bgshih/crnn
1. 摘要
基于圖片的序列識(shí)別是計(jì)算機(jī)視覺(jué)領(lǐng)域一個(gè)長(zhǎng)期研究的課題,其中非常重要且有挑戰(zhàn)性的就是場(chǎng)景文本識(shí)別問(wèn)題。本文針對(duì)這個(gè)問(wèn)題,提出了一個(gè)新的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),即 CRNN,它將特征提取、序列模型化以及轉(zhuǎn)錄都集成到一個(gè)統(tǒng)一的框架中。對(duì)比之前的工作,它有以下四個(gè)特點(diǎn):
實(shí)驗(yàn)的數(shù)據(jù)集包括了 IIIT-5K,Street View Text 以及 ICDAR,在這些數(shù)據(jù)集上 CRNN 的性能都超過(guò)了之前的工作。
2. 簡(jiǎn)介
基于圖片的序列識(shí)別問(wèn)題有這幾個(gè)特點(diǎn):
目前也有一些工作將 DCNN 應(yīng)用于這個(gè)問(wèn)題,主要是兩個(gè)方面的做法:
RNN也是常用于處理序列的算法,它的一個(gè)優(yōu)點(diǎn)是對(duì)于一張序列物體圖片,在訓(xùn)練和測(cè)試中不需要每個(gè)元素的位置。但需要做一個(gè)關(guān)鍵的預(yù)處理,將輸入的物體圖片轉(zhuǎn)成圖片特征的序列。這個(gè)預(yù)處理操作一般是獨(dú)立于訓(xùn)練流程中,即這使得采用 RNN 的方法沒(méi)辦法做到端到端的訓(xùn)練和優(yōu)化。
本文的主要貢獻(xiàn)就是提出一個(gè)專門設(shè)計(jì)用于序列物體識(shí)別的新網(wǎng)絡(luò)模型--CRNN,它結(jié)合了 CNN 和 RNN 兩個(gè)算法。其優(yōu)點(diǎn)有這幾個(gè):
3. 方法
CRNN 的網(wǎng)絡(luò)結(jié)構(gòu)如下所示:
主要是分為三個(gè)組件,由下至上,分別是CNN網(wǎng)絡(luò)、RNN 網(wǎng)絡(luò)以及轉(zhuǎn)錄層。工作流程是這樣的:
整個(gè) CRNN 網(wǎng)絡(luò)雖然包括不同的網(wǎng)絡(luò)結(jié)構(gòu),比如 CNN 和 RNN,但是可以通過(guò)一個(gè)損失函數(shù)來(lái)聯(lián)合訓(xùn)練。
3.1 特征序列提取
第一部采用的是移除了全連接層的 CNN 網(wǎng)絡(luò),也就是主要是卷積層和最大池化層。由于之前采用 CNN 來(lái)處理場(chǎng)景文本識(shí)別問(wèn)題的工作,其實(shí)都無(wú)法解決目標(biāo)物體的長(zhǎng)度可變問(wèn)題,所以 CRNN 的做法是將深度特征轉(zhuǎn)換為序列表示,從而讓其不受序列類物體長(zhǎng)度變化的影響。
在輸入圖片之前,首先需要做的一個(gè)預(yù)處理步驟是將所有圖片的高度都縮放為相同的高度,因?yàn)槭菍?duì)一行文本的識(shí)別,所以高度需要統(tǒng)一,而寬度不限制。
接著就是提取圖片的特征,得到一個(gè)特征序列,需要注意的是,這個(gè)特征序列如下圖所示,是從左到右按列生成的,即每一列特征對(duì)應(yīng)原圖中的一個(gè)矩形框區(qū)域,也可以說(shuō)是感受野(receptive field)。
特征序列的寬度,在本文的設(shè)定中是固定為 1,即輸出是
,3.2 序列標(biāo)簽
在 CNN 網(wǎng)絡(luò)中對(duì)輸入圖片提取特征,并得到特征序列后,接下來(lái)就是 RNN 網(wǎng)絡(luò)部分。RNN 網(wǎng)絡(luò)部分將對(duì)特征序列里的每一幀
進(jìn)行預(yù)測(cè),輸出得到對(duì)應(yīng)的標(biāo)簽分布 。這里使用 RNN 網(wǎng)絡(luò)的優(yōu)點(diǎn)有這三個(gè):
傳統(tǒng)的 RNN 是可以利用到上一個(gè)狀態(tài)的信息來(lái)進(jìn)行預(yù)測(cè)的,但是存在一個(gè)梯度消失的問(wèn)題,這會(huì)限制 RNN 可以存儲(chǔ)的上下文長(zhǎng)度,并且也對(duì)訓(xùn)練增加了負(fù)擔(dān)。為了解決這個(gè)問(wèn)題,所以就有了 LSTM 算法,LSTM 如下圖(a)所示,一個(gè) LSTM 包含了一個(gè)記憶單元和三個(gè)乘法門,分別是輸入、輸出和遺忘門。LSTM 的特別設(shè)計(jì)是可以捕獲在基于圖片的序列中經(jīng)常出現(xiàn)的長(zhǎng)期依賴性。
不過(guò) LSTM 只是單向的,只能使用到過(guò)去的上下文信息,但在基于圖片的系列中,過(guò)去和未來(lái)的上下文都是很有幫助的,因此本文采用的是雙向的 LSTM,并且將多個(gè)雙向 LSTM 進(jìn)行堆積在一起,組成了一個(gè)深度雙向 LSTM,如下圖(b)所示。
在實(shí)際應(yīng)用中,這里還設(shè)計(jì)了一個(gè)網(wǎng)絡(luò)層,叫做"Map-to-Sequence"層,在 CNN 和 RNN 之間,主要是在反向傳播中,讓 RNN 的誤差微分序列從特征圖轉(zhuǎn)換為特征序列的形式,然后傳回到 CNN 中。
3.3 轉(zhuǎn)錄層
最后轉(zhuǎn)錄層是將 RNN 輸出的每幀預(yù)測(cè)轉(zhuǎn)換為一個(gè)標(biāo)簽序列,從數(shù)學(xué)是來(lái)說(shuō)就是找到概率最大的一個(gè)標(biāo)簽序列。一般來(lái)說(shuō)分為兩種情況,帶有字典和沒(méi)有字典的情況:
- 如果測(cè)試集帶有字典,那么輸出結(jié)果就是計(jì)算出所有字典的概率,選擇最大的作為最終預(yù)測(cè)的結(jié)果;
- 如果測(cè)試集沒(méi)有字典,也就是測(cè)試集沒(méi)有給出測(cè)試集包含哪些字符,那么就選擇概率最大的作為最終的預(yù)測(cè)結(jié)果。
3.3.1 標(biāo)簽序列的概率
CRNN 采用在論文《 Connectionist temporal classifification: labelling unseg mented sequence data with recurrent neural networks》中提出的 CTC( Connectionist Temporal Classifification) 層定義的條件概率。
這個(gè)條件概率是在每幀預(yù)測(cè)為 y, 標(biāo)簽序列為 l 的情況下定義的,它省略了每個(gè)標(biāo)簽在 l 中的位置信息,因此可以采用負(fù)對(duì)數(shù)似然函數(shù)作為目標(biāo)函數(shù)來(lái)訓(xùn)練網(wǎng)絡(luò),然后只需要圖片以及對(duì)應(yīng)的標(biāo)簽序列,而不需要知道每個(gè)字符的位置的標(biāo)注信息。
這里簡(jiǎn)單介紹這個(gè)條件概率的定義。輸入是一個(gè)標(biāo)簽序列:
,其中 T 是序列的長(zhǎng)度。這里每個(gè)標(biāo)簽 ,其中 表示任務(wù)中所有的標(biāo)簽(比如所有的英文字符)加上一個(gè)空白字符。另外定義一個(gè)序列轉(zhuǎn)換函數(shù) B ,它負(fù)責(zé)將一個(gè)序列 轉(zhuǎn)換為最終的標(biāo)簽序列 l。這個(gè)轉(zhuǎn)換操作,首先是移除
里重復(fù)的字符以及空白字符,比如將一個(gè)序列 “--hh-e-l-ll-oo--”(這里用 - 表示空白字符)轉(zhuǎn)換為 "hello",注意這里重復(fù)的字符之間如果有空白字符'-',那么是不合并的,即 'l-la' 轉(zhuǎn)換得到 'lla',而 'll-a'轉(zhuǎn)換得到的是 'la' 。然后條件概率的定義就是如下所示,即將序列
的字符都轉(zhuǎn)換為 的概率之和。其中
是在時(shí)間戳 t 的時(shí)候擁有標(biāo)簽 的概率。上述第一個(gè)等式直接計(jì)算看起來(lái)是不可行的,但是它可以按照 CTC 論文中提出的**“向前—向后”(forward-backward)**算法高效的計(jì)算。
更詳細(xì)的介紹可以查看這篇文章:
https://zhuanlan.zhihu.com/p/43534801
總結(jié)一下,CTC是一種Loss計(jì)算方法,用 CTC 代替 Softmax Loss,訓(xùn)練樣本無(wú)需對(duì)齊。CTC 的特點(diǎn):
- 引入blank字符,解決有些位置沒(méi)有字符的問(wèn)題
- 通過(guò)遞推,快速計(jì)算梯度
3.3.2 沒(méi)有字典的轉(zhuǎn)換
沒(méi)有字典的情況下,就是選擇概率最大的標(biāo)簽序列 l 作為輸出結(jié)果。也就是說(shuō):
簡(jiǎn)單說(shuō)在初始序列
的階段,選擇每個(gè)時(shí)間 t 里概率最大的標(biāo)簽 ,然后再通過(guò)映射函數(shù) B 轉(zhuǎn)換得到最終的標(biāo)簽序列 l。3.3.3 帶字典的轉(zhuǎn)換
如果是有帶有字典
的情況,那么預(yù)測(cè)的結(jié)果就是在字典 D 中根據(jù)公式(1) 計(jì)算得到的條件概率最大的標(biāo)簽序列。即:但這種做法的問(wèn)題就是如果字典非常的大,比如帶有 5 萬(wàn)個(gè)單詞的字典中,逐個(gè)計(jì)算條件概率是一件非常耗時(shí)的做法。
為了解決這個(gè)問(wèn)題,參考在沒(méi)有字典的情況下預(yù)測(cè)的結(jié)果,可以發(fā)現(xiàn)采用編輯距離度量的結(jié)果非常接近于真實(shí)標(biāo)簽結(jié)果。所以,這里可以通過(guò)使用最近鄰候選集來(lái)限制搜索的范圍,定義最近鄰候選集
,其中 是最大的編輯距離, 是在按照沒(méi)有字典情況下由 y 轉(zhuǎn)換得到的標(biāo)簽序列,所以最終的標(biāo)簽序列可以按如下所示得到:這里候選集 N 可以通過(guò)《 Some approaches to best match fifile searching》中提出的 BK 樹(shù)結(jié)構(gòu)高效得到,這是一種度量樹(shù),特別適合離散的度量空間,其搜索時(shí)間復(fù)雜度是
,這里 表示字典的大小。在本文中,BK樹(shù)通常是先離線構(gòu)建好,這樣就可以實(shí)現(xiàn)快速的在線搜索。
3.4 網(wǎng)絡(luò)訓(xùn)練
定義數(shù)據(jù)集
,其中 表示訓(xùn)練圖片,而 是真實(shí)的標(biāo)簽序列。目標(biāo)函數(shù)是最小化負(fù)對(duì)數(shù)似然函數(shù),如下所示:4. 實(shí)驗(yàn)
4.1 數(shù)據(jù)集
本文是先在一個(gè)包含 800 萬(wàn)訓(xùn)練圖片的數(shù)據(jù)集上進(jìn)行訓(xùn)練,然后在其他常用的數(shù)據(jù)集的測(cè)試集進(jìn)行測(cè)試,并對(duì)比其他算法的結(jié)果。
訓(xùn)練集采用的是 Jaderberg 公開(kāi)的一個(gè)合成數(shù)據(jù)集 Synth(論文:Synthetic data and artifificial neural networks for natural scene text recognition)。
采用的四個(gè)常用的基準(zhǔn)場(chǎng)景文本識(shí)別數(shù)據(jù)集分別是:
4.2 實(shí)現(xiàn)細(xì)節(jié)
CRNN 的網(wǎng)絡(luò)參數(shù)如下所示:
可以看到 CNN 部分是采用 VGG 網(wǎng)絡(luò)模型,但做出了一些修改:
對(duì)于第一個(gè)修改,這里需要說(shuō)明一下,首先因?yàn)檩斎雸D片是進(jìn)行調(diào)整到
, 即高度統(tǒng)一為 32,那么假設(shè)一張包含 10 個(gè)字符的圖片,大小是 ,經(jīng)過(guò)上述的 CNN 后得到的特征尺度就是 ,剛好就符合了在 CNN 部分說(shuō)的每一列特征對(duì)應(yīng)原圖上的一個(gè)矩形框區(qū)域。第二點(diǎn)是因?yàn)楸M管 CNN 部分只有 7 層,相對(duì)不是非常深,但是因?yàn)楹竺娼又?RNN,RNN 并不好訓(xùn)練,所以這里是加入了兩個(gè) batch normalization 層來(lái)加快訓(xùn)練的速度。
訓(xùn)練階段,所有圖片都統(tǒng)一調(diào)整為
大小,而測(cè)試時(shí)候的圖片,只是將高度統(tǒng)一調(diào)整為 32,寬度則是保持長(zhǎng)寬比的情況下進(jìn)行調(diào)整,但至少是 100。4.3 對(duì)比結(jié)果
對(duì)比實(shí)驗(yàn)結(jié)果如下所示,CRNN 基本是在所有數(shù)據(jù)集上都做到了性能最好的情況,只有 3 種情況下性能不是最好的,分別是在 IC03 數(shù)據(jù)集是全集以及不使用字典,還有 IC13 測(cè)試集但不提供字典的情況。
另外,文章還設(shè)置了這幾個(gè)對(duì)比的角度:
- E2E Train:是否端到端訓(xùn)練的形式;
- Conv Ftrs:采用 CNN 的特征還是手動(dòng)設(shè)計(jì)特征;
- CharGT-Free:是否提供了字符級(jí)別的標(biāo)注;
- Unconstrained:是否只限制在特定的字典,能否處理不在字典上的單詞
- Model Size:模型的大小
5. 總結(jié)
CRNN 是結(jié)合了 CNN +LSTM+CTC 的優(yōu)勢(shì):
- 首先用 CNN 提取圖像的卷積特征,不需要手動(dòng)設(shè)計(jì)特征;
- 接著用 LSTM 進(jìn)一步提取圖像卷積特征中的序列特征
- 最后引入 CTC 解決訓(xùn)練時(shí)候字符無(wú)法對(duì)齊的問(wèn)題。
可以在只需要基本的單詞級(jí)別的標(biāo)簽和輸入圖片就可以實(shí)現(xiàn)端到端的訓(xùn)練。
CRNN 是一個(gè)通用的框架,可以處理多種基于圖片的序列識(shí)別問(wèn)題,不僅是英文單詞、音樂(lè)分?jǐn)?shù),還有中文的識(shí)別問(wèn)題。
參考
總結(jié)
以上是生活随笔為你收集整理的怎样快速识别 英文地址中包含非英文字符_[论文笔记]端到端的场景文本识别算法--CRNN 论文笔记...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 乌鲁木齐接收转业士官条件
- 下一篇: oppo售后解锁工具_Realme X5