日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

怎样快速识别 英文地址中包含非英文字符_[论文笔记]端到端的场景文本识别算法--CRNN 论文笔记...

發(fā)布時(shí)間:2024/10/8 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎样快速识别 英文地址中包含非英文字符_[论文笔记]端到端的场景文本识别算法--CRNN 论文笔记... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
本文大約 4000 字,閱讀大約需要 10 分鐘

論文地址: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):

  • CRNN 是一個(gè)端到端可訓(xùn)練的網(wǎng)絡(luò),而之前的大部分算法都是分開(kāi)訓(xùn)練和調(diào)試的;
  • 可以處理任意長(zhǎng)度的序列,不需要進(jìn)行字符分割或者水平尺度歸一化;
  • 它不受任何預(yù)定義詞匯的限制,在無(wú)詞匯和基于詞匯的場(chǎng)景文字識(shí)別任務(wù)中都取得了出色的表現(xiàn);
  • CRNN 是一個(gè)有效且較小的模型,非常適用現(xiàn)實(shí)生活里的應(yīng)用場(chǎng)景。
  • 實(shí)驗(yàn)的數(shù)據(jù)集包括了 IIIT-5K,Street View Text 以及 ICDAR,在這些數(shù)據(jù)集上 CRNN 的性能都超過(guò)了之前的工作。

    2. 簡(jiǎn)介

    基于圖片的序列識(shí)別問(wèn)題有這幾個(gè)特點(diǎn):

  • 對(duì)比普通的目標(biāo)檢測(cè)問(wèn)題,序列識(shí)別一般需要識(shí)別出一堆的物體標(biāo)簽,而不是僅僅單個(gè)物體的;
  • 目標(biāo)序列的長(zhǎng)度是不固定的,可變的,而DCNN(Deep Convolutional Neural Network)只能處理固定長(zhǎng)度的輸入和輸出,所以沒(méi)辦法解決這個(gè)問(wèn)題;
  • 目前也有一些工作將 DCNN 應(yīng)用于這個(gè)問(wèn)題,主要是兩個(gè)方面的做法:

  • 第一種是先訓(xùn)練一個(gè)檢測(cè)器來(lái)檢測(cè)每個(gè)字符,然后用 DCNN 來(lái)識(shí)別。但需要一個(gè)性能很好的檢測(cè)器并且分割每個(gè)字符出來(lái);
  • 第二種是將這個(gè)問(wèn)題轉(zhuǎn)換為圖片分類問(wèn)題,給每個(gè)英文單詞分配一個(gè)類標(biāo)簽 (總共有 90k 個(gè)單詞)。結(jié)果就是訓(xùn)練得到一個(gè)類別數(shù)量很大的模型,而且很難應(yīng)用到其他類型的序列識(shí)別問(wèn)題,比如中文、音樂(lè)分?jǐn)?shù)等,這些問(wèn)題的序列數(shù)量更加的多。
  • 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è):

  • 可以直接學(xué)習(xí)序列標(biāo)簽(如單詞),并不需要更詳細(xì)的標(biāo)注(如字符);
  • 具有和 DCNN 一樣的屬性,即可以直接從圖片數(shù)據(jù)中學(xué)習(xí)信息表示(informative representations),不需要手動(dòng)設(shè)計(jì)特征,或者如二值化/分割、組件定位等預(yù)處理步驟;
  • 具有和 RNN 一樣的屬性,可以直接生成標(biāo)簽序列;
  • 不受物體長(zhǎng)度的限制,訓(xùn)練和測(cè)試階段只要求對(duì)高度的歸一化;
  • 在場(chǎng)景文本問(wèn)題中比之前的工作取得更好的性能表現(xiàn);
  • 參數(shù)量比標(biāo)準(zhǔn)的 DCNN 模型更少,可以節(jié)省存儲(chǔ)空間。
  • 3. 方法

    CRNN 的網(wǎng)絡(luò)結(jié)構(gòu)如下所示:

    主要是分為三個(gè)組件,由下至上,分別是CNN網(wǎng)絡(luò)、RNN 網(wǎng)絡(luò)以及轉(zhuǎn)錄層。工作流程是這樣的:

  • 輸入圖片先經(jīng)過(guò)卷積層,提取得到一個(gè)特征序列;
  • 接著 RNN 對(duì)特征序列的每一幀進(jìn)行預(yù)測(cè);
  • 最后是轉(zhuǎn)錄層,對(duì) RNN 的每幀預(yù)測(cè)結(jié)果進(jìn)行翻譯,得到最終的一個(gè)標(biāo)簽的序列,也就是將 RNN 預(yù)測(cè)的每個(gè)字符組合得到一個(gè)完整的單詞。
  • 整個(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è):

  • 首先,RNN 有很強(qiáng)的捕獲一個(gè)序列中上下文信息的能力。對(duì)于基于圖片的序列識(shí)別問(wèn)題,采用上下文信息是比單獨(dú)處理每個(gè)字符更穩(wěn)定和更有效的方法,特別是處理一些有歧義的字符,比如 “il”;
  • 其次,RNN 可以將誤差微分反向傳播到輸入端,也就是可以共同訓(xùn)練 CNN 和 RNN 網(wǎng)絡(luò);
  • 最后,RNN 可以從頭到尾對(duì)任意長(zhǎng)度的序列進(jìn)行操作。
  • 傳統(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ù)集分別是:

  • ICDAR 2003
  • ICDAR2013
  • IIIT5K
  • SVT(Street View Text)
  • 4.2 實(shí)現(xiàn)細(xì)節(jié)

    CRNN 的網(wǎng)絡(luò)參數(shù)如下所示:

    可以看到 CNN 部分是采用 VGG 網(wǎng)絡(luò)模型,但做出了一些修改:

  • 對(duì)第三個(gè)和第四個(gè)最大池化層,采用的是 大小的窗口,而不是 ;
  • 為了加快網(wǎng)絡(luò)訓(xùn)練,在第五層和第六層后都加入了 BN 層;
  • 對(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)題。

    參考

  • CRNN算法詳解
  • 一文讀懂CRNN+CTC文字識(shí)別
  • 總結(jié)

    以上是生活随笔為你收集整理的怎样快速识别 英文地址中包含非英文字符_[论文笔记]端到端的场景文本识别算法--CRNN 论文笔记...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。