自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

微信OCR(2):深度序列學(xué)習(xí)助力文字識別

人工智能 深度學(xué)習(xí)
本文主要對于深度序列學(xué)習(xí)在OCR中的應(yīng)用進(jìn)行了綜述總結(jié)。

此篇文章屬于微信OCR技術(shù)介紹系列,著重介紹如何采用深度序列學(xué)習(xí)(deep sequence learning)方法實(shí)現(xiàn)端到端的文本串識別并應(yīng)用于微信產(chǎn)品。本篇主要為方法綜述,下一篇著重介紹深度序列學(xué)習(xí)技術(shù)在微信產(chǎn)品中的落地。這里,文本串識別的輸入默認(rèn)已經(jīng)是包含文本(行或者單詞)的最小外接矩形框,其目的是識別其中的文字內(nèi)容,如圖1所示。前面的文本框檢測和定位工作,詳見我們之前的文章【1】介紹。

圖1:文本串識別示例

圖1:文本串識別示例

分階段vs端到端

文本串識別作為目標(biāo)識別的一個子領(lǐng)域,其本質(zhì)是一個多類分類問題:旨在尋找從文本串圖像到文本串內(nèi)容的一種映射,這和人臉識別、車輛識別等都是類似的。然而,文本串作為序列目標(biāo),又有其獨(dú)特性:

1. 局部性:即文本串中的局部都會直接體現(xiàn)在其整體label中。舉個栗子:“我想吃飯” 和“我不想吃飯”,一字之差,體現(xiàn)在圖像特征中,只是局部特征變化,然而文本串的含義截然相反。而在一般的目標(biāo)識別問題中(細(xì)粒度目標(biāo)識別除外),這種局部干擾恰恰是要被抑制的。比如,張三帶了墨鏡還是張三。

2. 組合性:文本串內(nèi)容千差萬別,以常用英文單詞為例,約有9w多個。漢字的組合就更加龐大了。然而不管是萬字長文,還是簡短對話,它們的組成都是有限種類的字符:26個英文字母,10個數(shù)字,幾千個漢字,諸如此類。

基于以上兩點(diǎn),一種直觀的串識別方法是:首先切分到單字,識別單字的類別,然后將識別結(jié)果串聯(lián)起來。這種化整為零的方法是OCR在深度學(xué)習(xí)出現(xiàn)之前的幾十年里通用的方法,其流程如圖2所示。

 

圖2:根據(jù)各種圖像特征進(jìn)行單字切分

然而,這個方法有兩個明顯的弊端:1. 切分錯誤會影響識別性能;2. 單字識別未能考慮上下文信息。為了彌補(bǔ)這兩點(diǎn)缺陷,傳統(tǒng)方法往往需要對圖像進(jìn)行“過切分”,即找到所有可能是切點(diǎn)的位置,然后再將所有切片和可能的切片組合統(tǒng)統(tǒng)送給單字識別模塊,通過在各個識別結(jié)果中間進(jìn)行“動態(tài)規(guī)劃”,尋找一條***路徑,從而確定切分和識別的結(jié)果。在尋優(yōu)過程中,往往還需要結(jié)合文字的外觀統(tǒng)計特征以及語言模型(若干字的同現(xiàn)概率)??梢?,這里切分、識別和后處理存在深度耦合,導(dǎo)致實(shí)際系統(tǒng)中的串識別模塊往往堆砌了非常復(fù)雜和可讀性差的算法。而且,即便如此,傳統(tǒng)方法依然有不可突破的性能瓶頸,比如一些復(fù)雜的藝術(shù)體和手寫體文字,嚴(yán)重粘連的情況等等??偠灾?,傳統(tǒng)方法的問題在于:處理流程繁瑣冗長導(dǎo)致錯誤不斷傳遞,以及過分倚重人工規(guī)則并輕視大規(guī)模數(shù)據(jù)訓(xùn)練。


 

 

圖3:基于過切分和動態(tài)規(guī)劃得到文本串內(nèi)容

從2012 年的ImageNet競賽開始,深度學(xué)習(xí)首先在圖像識別領(lǐng)域發(fā)揮出巨大威力。隨著研究的深入,深度學(xué)習(xí)逐漸被應(yīng)用到音頻、視頻以及自然語言理解領(lǐng)域。這些領(lǐng)域的特點(diǎn)是針對時序數(shù)據(jù)的建模。如何利用深度學(xué)習(xí)來進(jìn)行端到端的學(xué)習(xí),并摒棄基于人工規(guī)則的中間步驟,以提升Sequence Learning的效果已經(jīng)成為當(dāng)前研究的熱點(diǎn)。基本思路是CNN與RNN結(jié)合:CNN被用于提取有表征能力的圖像特征,而RNN天然適合處理序列問題,學(xué)習(xí)上下文關(guān)系。這種CNN+RNN的混合網(wǎng)絡(luò)從本質(zhì)上革新了文本串識別領(lǐng)域的研究。

CRNN:CNN+RNN+CTC

圖4:CRNN實(shí)現(xiàn)端到端的文本串識別

CRNN目前在串識別領(lǐng)域非常成功的模型。在我們之前的文章中也對其進(jìn)行過介紹【2】。模型前面的CNN部分,將圖像進(jìn)行空間上的保序壓縮,相當(dāng)于沿水平方向形成若干切片,每個切片對應(yīng)一個特征向量。由于卷積的感受野會相互重疊,這類特征本身就包含了一定的上下文關(guān)系。接下來的RNN部分,采用雙層雙向的LSTM,進(jìn)一步學(xué)習(xí)上下文特征,據(jù)此得到切片對應(yīng)的字符類別。***的CTC層設(shè)計了一種結(jié)構(gòu)化損失,通過引入空白類和映射法則模擬了動態(tài)規(guī)劃的過程。CRNN在圖像特征和識別內(nèi)容序列之間是嚴(yán)格保序的,極其擅長識別字分割比較困難的文字序列,甚至包括潦草的手寫電話號碼。此外,這一序列學(xué)習(xí)模型還使得訓(xùn)練數(shù)據(jù)的標(biāo)注難度大為降低,便于收集更大規(guī)模的訓(xùn)練數(shù)據(jù)。

EDA:Encoder+Decoder+attention model

文本串識別另一種常用的網(wǎng)絡(luò)模型為編碼-解碼模型(Encoder-Decoder),并加入了注意力模型(Attention model)來幫助特征對齊,故簡稱EDA。其方法流程如圖所示:

圖4:EDA實(shí)現(xiàn)端到端的文本串識別

Encoder-Decoder模型從提出伊始就是為了解決seq2seq問題。即根據(jù)一個輸入序列x,來生成另一個輸出序列y。這里的編碼,就是將輸入序列轉(zhuǎn)化成一個固定長度的向量;解碼,就是將之前生成的固定向量再轉(zhuǎn)化成輸出序列。Encoder-Decoder模型雖然非常經(jīng)典,但是局限性也很大:編碼和解碼之間的唯一聯(lián)系就是一個固定長度的語義向量C。也就是說,編碼器要將整個序列的信息壓縮進(jìn)一個固定長度的向量中去。這種強(qiáng)壓縮導(dǎo)致語義向量無法完全表示整個序列的信息,且先輸入的內(nèi)容攜帶的信息會被后輸入的信息稀釋。輸入序列越長,這個現(xiàn)象就越嚴(yán)重。

Attention模型旨在解決這個問題:在產(chǎn)生當(dāng)前輸出同時,還會產(chǎn)生一個“注意力范圍”表示接下來輸出的時候要重點(diǎn)關(guān)注輸入序列中的哪些部分,然后根據(jù)關(guān)注的區(qū)域來產(chǎn)生下一個輸出,如此往復(fù)。這樣,解碼不再依賴一個中間向量,而是由注意力模型對所有編碼特征進(jìn)行加權(quán)調(diào)整后得到的特征向量。Attention模型實(shí)現(xiàn)了一個軟對齊(soft align)的功能,同時也使得輸入向量和輸出向量不再是嚴(yán)格保序的。后面會提到這對于文本串識別的影響。

值得一提的是,今年5月,Google發(fā)布了Attention OCR方法,用于端到端的自然場景文本識別。該方法在EDA的基礎(chǔ)上,將輸入擴(kuò)展到全圖(如圖5所示)。因此,該方法理論上可以實(shí)現(xiàn)任意包含文字的圖片到文字內(nèi)容的映射,不僅不需要文字切分,連文本檢測步驟也不需要了(聽起來是不是很酷)。該算法在French Street Name Signs(FSNS)數(shù)據(jù)集(一個法國街道路標(biāo)數(shù)據(jù)集,包含約100w街道名稱)中達(dá)到了 84.2% 的準(zhǔn)確率。

圖5:谷歌的Attention OCR實(shí)現(xiàn)端到端的文字檢測識別

從流程圖中可以看到,該網(wǎng)絡(luò)輸入為同一標(biāo)志牌的四張不同角度拍攝的圖像,經(jīng)過Inception-V3網(wǎng)絡(luò)(CNN的一種)對圖像編碼后形成特征圖,然后根據(jù)注意力模型給出的權(quán)重對不同位置的特征加權(quán)作為解碼模型的輸入。為了突出位置信息,這里采用了location aware attention,即位置相關(guān)的注意力模型。從文章給出的注意力模型可視化結(jié)果可以看出,該模型的確可以在一定程度上預(yù)測文字出現(xiàn)的位置。

該方法可以同時對語言和圖像序列建模,可以適應(yīng)大小、位置分布不均勻的文字排版,不需要標(biāo)注文本框的位置,真正實(shí)現(xiàn)了端到端的文字檢測識別。

實(shí)踐中,我們利用公開的FSNS數(shù)據(jù)集復(fù)現(xiàn)該論文的結(jié)果。但也發(fā)現(xiàn)該方法的一些局限性:1.由于注意力模型的軟對齊機(jī)制,可能出現(xiàn)識別結(jié)果字符內(nèi)容亂序;2.因RNN記憶功能限制,不適用于文字內(nèi)容較多的圖片;3.由于輸入圖像中包含較多背景干擾,僅當(dāng)文字內(nèi)容和樣式比較單一的情況下效果可靠。

本文主要對于深度序列學(xué)習(xí)在OCR中的應(yīng)用進(jìn)行了綜述總結(jié),接下來將主要介紹這類技術(shù)在微信產(chǎn)品中的落地情況。

原文鏈接:http://t.cn/R0w2hAP

作者:麻文華

【本文是51CTO專欄作者“騰訊云技術(shù)社區(qū)”的原創(chuàng)稿件,轉(zhuǎn)載請通過51CTO聯(lián)系原作者獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2020-09-29 10:09:43

Python文字識別編程語言

2024-12-03 09:59:00

2013-08-08 10:13:25

微信

2017-02-06 13:32:12

微信小程序思想

2017-05-08 14:42:36

2023-09-07 10:37:43

OCR項(xiàng)目字符串

2021-09-04 07:29:33

OCR工具文字識別

2021-06-21 05:28:54

谷歌 Chrome 瀏覽器

2014-11-28 16:32:12

靈云

2021-01-14 15:28:29

Android微信更新

2018-04-02 10:45:11

深度學(xué)習(xí)PaddlePaddl手寫數(shù)字識別

2021-06-02 10:21:45

深度學(xué)習(xí)編程人工智能

2023-12-25 19:21:55

ocr人工智能

2021-04-09 20:49:44

PythonOCR圖像

2015-07-09 13:58:28

tesseract教程OCR教程

2022-01-23 08:26:57

微信暫停語音朗讀文字

2014-12-08 16:56:53

2013-04-15 17:18:51

微信公眾平臺Android開發(fā)位置信息識別

2020-08-24 13:30:10

深度學(xué)習(xí)編程人工智能

2020-07-27 15:06:14

微信張小龍焦慮
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號