【AI in 美團】深度學習在OCR中的應用

美團技術團隊發表於2018-06-29

背景

計算機視覺是利用攝像機和電腦代替人眼,使得計算機擁有類似於人類的對目標進行檢測、識別、理解、跟蹤、判別決策的功能。以美團業務為例,在商家上單、團單展示、消費評價等多個環節都會涉及計算機視覺的應用,包括文字識別、圖片分類、目標檢測和影象質量評價等方向。本文將通過以OCR(光學字元識別)的場景來介紹深度學習在計算機視覺中的應用。

基於深度學習的OCR

文字是不可或缺的視覺資訊來源。相對於影象/視訊中的其他內容,文字往往包含更強的語義資訊,因此對影象中的文字提取和識別具有重大意義。OCR在美團業務中主要起著兩方面作用。一方面是輔助錄入,比如在移動支付環節通過對銀行卡卡號的拍照識別以實現自動綁卡,輔助運營錄入選單中菜品資訊,在配送環節通過對商家小票的識別以實現排程核單,如圖1所示。另一方面是稽核校驗,比如在商家資質稽核環節對商家上傳的身份證、營業執照和餐飲許可證等證件照片進行資訊提取和核驗以確保該商家的合法性,機器過濾商家上單和使用者評價環節產生的包含違禁詞的圖片。


圖1 影象中的文字提取和識別流程

OCR技術發展歷程

傳統的OCR基於影象處理(二值化、連通域分析、投影分析等)和統計機器學習(Adaboost、SVM),過去20年間在印刷體和掃描文件上取得了不錯的效果。傳統的印刷體OCR解決方案整體流程如圖2所示。


圖2 傳統的印刷體OCR解決方案

從輸入影象到給出識別結果經歷了影象預處理、文字行提取和文字行識別三個階段。其中文字行提取的相關步驟(版面分析、行切分)會涉及大量的先驗規則,而文字行識別主要基於傳統的機器學習方法。隨著移動裝置的普及,對拍攝影象中的文字提取和識別成為主流需求,同時對場景中文字的識別需求越來越突出。因此,相比於印刷體場景,拍照文字的識別將面臨以下三方面挑戰:

  • 成像複雜。噪聲、模糊、光線變化、形變。
  • 文字複雜。字型、字號、色彩、磨損、筆畫寬度任意、方向任意。
  • 場景複雜。版面缺失、背景干擾。

對於上述挑戰,傳統的OCR解決方案存在著以下不足:

  • 通過版面分析(連通域分析)和行切分(投影分析)來生成文字行,要求版面結構有較強的規則性且前背景可分性強(例如黑白文件影象、車牌),無法處理前背景複雜的隨意文字(例如場景文字、選單、廣告文字等)。另外,二值化操作本身對影象成像條件和背景要求比較苛刻。
  • 通過人工設計邊緣方向特徵(例如方向梯度直方圖)來訓練字元識別模型,在字型變化、模糊或背景干擾時,此類單一的特徵的泛化能力迅速下降。
  • 過度依賴於字元切分的結果,在字元扭曲、粘連、噪聲干擾的情況下,切分的錯誤傳播尤其突出。
  • 儘管影象預處理模組可有效改善輸入影象的質量,但多個獨立的校正模組的串聯必然帶來誤差傳遞。另外由於各模組優化目標獨立,它們無法融合到統一的框架中進行。

為了解決上述問題,現有技術在以下三方面進行了改進。

1.文字行提取

傳統OCR(如圖3所示)採取自上而下的切分式,但它只適用於版面規則背景簡單的情況。該領域還有另外兩類思路。

  • 自底向上的生成式方法。該類方法通過連通域分析或最大穩定極值區域(MSER)等方法提取候選區域,然後通過文字/非文字的分類器進行區域篩選,對篩選後的區域進行合併生成文字行,再進行文字行級別的過濾,如圖3所示。該類方法的不足是,一方面流程冗長導致的超引數過多,另一方面無法利用全域性資訊。


圖3 基於自底向上的文字檢測

  • 基於滑動視窗的方法。該類方法利用通用目標檢測的思路來提取文字行資訊,利用訓練得到的文字行/詞語/字元級別的分類器來進行全圖搜尋。原始的基於滑動視窗方法通過訓練文字/背景二分類檢測器,直接對輸入影象進行多尺度的視窗掃描。檢測器可以是傳統機器學習模型(Adaboost、Random Ferns),也可以是深度卷積神經網路。

為了提升效率,DeepText、TextBoxes等方法先提取候選區域再進行區域迴歸和分類,同時該類方法可進行端到端訓練,但對多角度和極端寬高比的文字區域召回低。

2.傳統單字識別引擎→基於深度學習的單字識別引擎

由於單字識別引擎的訓練是一個典型的影象分類問題,而卷積神經網路在描述影象的高層語義方面優勢明顯,所以主流方法是基於卷積神經網路的影象分類模型。實踐中的關鍵點在於如何設計網路結構和合成訓練資料。對於網路結構,我們可以借鑑手寫識別領域相關網路結構,也可採用OCR領域取得出色效果的Maxout網路結構,如圖4所示。對於資料合成,需考慮字型、形變、模糊、噪聲、背景變化等因素。


圖4 基於Maxout 卷積神經網路結構的單字識別模型

表1給出了卷積神經網路的特徵學習和傳統特徵的效能比較,可以看出通過卷積神經網路學習得到的特徵鑑別能力更強。


表1 單字元識別引擎效能比較

3.文字行識別流程

傳統OCR將文字行識別劃分為字元切分和單字元識別兩個獨立的步驟,儘管通過訓練基於卷積神經網路的單字元識別引擎可以有效提升字元識別率,但切分對於字元粘連、模糊和形變的情況的容錯性較差,而且切分錯誤對於識別是不可修復的。因此在該框架下,文字行識別的準確率主要受限於字元切分。假設已訓練單字元識別引擎的準確率p=99%,字元切分準確率為q= 95%,則對於一段長度為L的文字行,其識別的平均準確率為P= (pq)的L次方,其中L=10時,P=54.1%。

由於獨立優化字元切分提升空間有限,因此有相關方法試圖聯合優化切分和識別兩個任務。現有技術主要可分為基於切分的方法(Segmentation-Based)和不依賴切分的方法(Segmentation-
Free)兩類方法。

  • 基於切分的方法

該類方法還是保留主動切分的步驟,但引入了動態合併機制,通過識別置信度等資訊來指導切分,如圖5所示。


圖5 基於CNN的動態切分與識別流程

過切分模組將文字行在垂直於基線方向上分割成碎片,使得其中每個碎片至多包含一個字元。通常來說,過切分模組會將字元分割為多個連續筆劃。過切分可以採用基於規則或機器學習的方法。規則方法主要是直接在影象二值化的結果上進行連通域分析和投影分析來確定候補切點位置,通過調整引數可以控制粒度來使得字元儘可能被切碎。基於規則的方法實現簡單,但在成像/背景複雜的條件下其效果不好。機器學習方法通過離線訓練鑑別切點的二類分類器,然後基於該分類器在文字行影象上進行滑窗檢測。

動態合併模組將相鄰的筆劃根據識別結果組合成可能的字元區域,最優組合方式即對應最佳切分路徑和識別結果。直觀來看,尋找最優組合方式可轉換為路徑搜尋問題,對應有深度優先和廣度優先兩種搜尋策略。深度優先策略在每一步選擇擴充套件當前最優的狀態,因此全域性來看它是次優策略,不適合過長的文字行。廣度優先策略在每一步會對當前多個狀態同時進行擴充套件,比如在語音識別領域廣泛應用的Viterbi解碼和Beam Search。但考慮到效能,Beam Search通常會引入剪枝操作來控制路徑長度,剪枝策略包含限制擴充套件的狀態數(比如,每一步只擴充套件TopN的狀態)和加入狀態約束(比如,合併後字元形狀)等。

由於動態合併會產生多個候選路徑,所以需要設計合適的評價函式來進行路徑選擇。評價函式的設計主要從路徑結構損失和路徑識別打分兩方面出發。路徑結構損失主要從字元形狀特徵方面衡量切分路徑的合理性,路徑識別打分則對應於特定切分路徑下的單字平均識別置信度和語言模型分。

該方案試圖將字元切分和單字元識別融合在同一個框架下解決,但由於過分割是獨立的步驟,因此沒有從本質上實現端到端學習。

  • 不依賴切分的方法

該類方法完全跨越了字元切分,通過滑動視窗或序列建模直接對文字行進行識別。

滑窗識別借鑑了滑動視窗檢測的思路,基於離線訓練的單字識別引擎,對文字行影象從左到右進行多尺度掃描,以特定視窗為中心進行識別。在路徑決策上可採用貪心策略或非極大值抑制(NMS)策略來得到最終的識別路徑。圖6給出了滑窗識別的示意流程。可見滑窗識別存在兩個問題:滑動步長的粒度過細則計算代價大,過粗則上下文資訊易丟失;無論採用何種路徑決策方案,它們對單字識別的置信度依賴較高。


圖6 基於滑動視窗的文字檢測

序列學習起源於手寫識別、語音識別領域,因為這類問題的共同特點是需要對時序資料進行建模。儘管文字行影象是二維的,但如果把從左到右的掃描動作類比為時序,文字行識別從本質上也可歸為這類問題。通過端到端的學習,摒棄矯正/切分/字元識別等中間步驟,以此提升序列學習的效果,這已經成為當前研究的熱點。

基於現有技術和美團業務涉及的OCR場景,我們在文字檢測和文字行識別採用如圖7所示的深度學習框架。


圖7 基於深度學習的OCR解決方案

後面將分別介紹文字檢測和文字行識別這兩部分的具體方案。

基於深度學習的文字檢測

對於美團的OCR場景,根據版面是否有先驗資訊(卡片的矩形區域、證件的關鍵欄位標識)以及文字自身的複雜性(如水平文字、多角度),影象可劃分為受控場景(如身份證、營業執照、銀行卡)和非受控場景(如選單、門頭圖),如圖8所示。


圖8 受控場景與非受控場景

考慮到這兩類場景的特點不同,我們借鑑不同的檢測框架。由於受控場景文字諸多約束條件可將問題簡化,因此利用在通用目標檢測領域廣泛應用的Faster R-CNN框架進行檢測。而對於非受控場景文字,由於形變和筆畫寬度不一致等原因,目標輪廓不具備良好的閉合邊界,我們需要藉助影象語義分割來標記文字區域與背景區域。

1.受控場景的文字檢測

對於受控場景(如身份證),我們將文字檢測轉換為對關鍵字目標(如姓名、身份證號、地址)或關鍵條目(如銀行卡號)的檢測問題。基於Faster R-CNN的關鍵字檢測流程如圖9所示。為了保證迴歸框的定位精度,同時提升運算速度,我們對原有框架和訓練方式進行了微調。

  • 考慮到關鍵字或關鍵條目的類內變化有限,網路結構只採用了3個卷積層。
  • 訓練過程中提高正樣本的重疊率閾值。
  • 根據關鍵字或關鍵條目的寬高比範圍來適配RPN層Anchor的寬高比。


圖9 基於Faster R-CNN的OCR解決方案

Faster R-CNN框架由RPN(候選區域生成網路)和RCN(區域分類網路)兩個子網路組成。RPN通過監督學習的方法提取候選區域,給出的是無標籤的區域和粗定位結果。RCN引入類別概念,同時進行候選區域的分類和位置迴歸,給出精細定位結果。訓練時兩個子網路通過端到端的方式聯合優化。圖10以銀行卡卡號識別為例,給出了RPN層和RCN層的輸出。


圖10 基於Faster R-CNN的銀行卡卡號檢測

對於人手持證件場景,由於證件目標在影象中所佔比例過小,直接提取微小候選目標會導致一定的定位精度損失。為了保證高召回和高定位精度,可採用由粗到精的策略進行檢測。首先定位卡片所在區域位置,然後在卡片區域範圍內進行關鍵字檢測,而區域定位也可採用Faster R-CNN框架,如圖11所示。


圖11 由粗到精的檢測策略

  1. 非受控場景的文字檢測

對於選單、門頭圖等非受控場景,由於文字行本身的多角度且字元的筆畫寬度變化大,該場景下的文字行定位任務挑戰很大。由於通用目標檢測方法的定位粒度是迴歸框級,此方法適用於剛體這類有良好閉合邊界的物體。然而文字往往由一系列鬆散的筆畫構成,尤其對於任意方向或筆畫寬度的文字,僅以迴歸框結果作為定位結果會有較大偏差。另外剛體檢測的要求相對較低,即便只定位到部分主體(如定位結果與真值的重疊率是50%),也不會對剛體識別產生重大影響,而這樣的定位誤差對於文字識別則很可能是致命的。

為了實現足夠精細的定位,我們利用語義分割中常用的全卷積網路(FCN)來進行畫素級別的文字/背景標註,整體流程如圖12所示。


圖12 基於全卷積網路的文字檢測

多尺度全卷積網路通過對多個階段的反摺積結果的融合,實現了全域性特徵和區域性特徵的聯合,進而達到了由粗到精的畫素級別標註,適應於任意非受控場景(門頭圖、選單圖片)。

基於多尺度全卷積網路得到的畫素級標註,通過連通域分析技術可得到一系列連通區域(筆劃資訊)。但由於無法確定哪些連通域屬於同一文字行,因此需要藉助單鏈聚類技術來進行文字行提取。至於聚類涉及的距離度量,主要從連通域間的距離、形狀、顏色的相似度等方面提取特徵,並通過度量學習自適應地得到特徵權重和閾值,如圖13所示。


圖13 基於全卷積網路的影象語義分割

圖14分別給出了在選單和門頭圖場景中的全卷積網路定位效果。第二列為全卷積網路的畫素級標註結果,第三列為最終文字檢測結果。可以看出,全卷積網路可以較好地應對複雜版面或多角度文字定位。


圖14 基於FCN的文字定位結果

基於序列學習的文字識別

我們將整行文字識別問題歸結為一個序列學習問題。利用基於雙向長短期記憶神經網路(Bi-directional Long Short-term Memory,BLSTM)的遞迴神經網路作為序列學習器,來有效建模序列內部關係。為了引入更有效的輸入特徵,我們採用卷積神經網路模型來進行特徵提取,以描述影象的高層語義。此外在損失函式的設計方面,考慮到輸出序列與輸入特徵幀序列無法對齊,我們直接使用結構化的Loss(序列對序列的損失),另外引入了背景(Blank)類別以吸收相鄰字元的混淆性。

整體網路結構分為三層:卷積層、遞迴層和翻譯層,如圖15所示。其中卷積層提取特徵;遞迴層既學習特徵序列中字元特徵的先後關係,又學習字元的先後關係;翻譯層實現對時間序列分類結果的解碼。


圖15 基於序列學習的端到端識別框架

對於輸入的固定高度h0= 36的影象(寬度任意,如W0 = 248),我們通過CNN網路結構提取特徵,得到9×62×128的特徵圖,可將其看作一個長度為62的時間序列輸入到RNN層。RNN層有400個隱藏節點,其中每個隱藏節點的輸入是9×128維的特徵,是對影象區域性區域的描述。考慮到對應於某個時刻特徵的影象區域,它與其前後內容都具有較強的相關性,所以我們一般採用雙向RNN網路,如圖16所示。


圖16 雙向RNN序列

雙向RNN後接一個全連線層,輸入為RNN層(在某個時刻)輸出的特徵圖,輸出為該位置是背景、字元表中文字的概率。全連線層後接CTC(聯結主義時間分類器)作為損失函式。在訓練時,根據每個時刻對應的文字、背景概率分佈,得到真值字串在影象中出現的概率P(ground truth),將-log(P(ground truth))作為損失函式。在測試時,CTC可以看作一個解碼器,將每一時刻的預測結果(當前時刻的最大後驗概率對應的字元)聯合起來,然後去掉空白和重複的模式,就形成了最終的序列預測結果,如圖17所示。


圖17 CTC解碼過程

從圖17中也可以看出,對應輸入序列中的每個字元,LSTM輸出層都會產生明顯的尖峰,儘管該尖峰未必對應字元的中心位置。換句話說,引入CTC機制後,我們不需要考慮每個字元出現的具體位置,只需關注整個影象序列對應的文字內容,最終實現深度學習的端到端訓練與預測。

由於序列學習框架對訓練樣本的數量和分佈要求較高,我們採用了真實樣本+合成樣本的方式。真實樣本以美團業務來源(例如,選單、身份證、營業執照)為主,合成樣本則考慮了字型、形變、模糊、噪聲、背景等因素。

基於上述序列學習框架,我們給出了在不同場景下的文字行識別結果,如圖18所示。其中前兩行的圖片為驗證碼場景,第三行為銀行卡,第四行為資質證件,第五行為門頭圖,第六行為選單。可以看到,識別模型對於文字形變、粘連、成像的模糊和光線變化、背景的複雜等都有較好的健壯性。


圖18 文字行識別結果

基於上述試驗,與傳統OCR相比,我們在多種場景的文字識別上都有較大幅度的效能提升,如圖19所示。


圖19 傳統OCR和深度學習OCR效能比較

與傳統OCR相比,基於深度學習的OCR在識別率方面有了大幅上升。但對於特定的應用場景(營業執照、選單、銀行卡等),條目準確率還有待提升。一方面需要融合基於深度學習的文字檢測與傳統版面分析技術,以進一步提升限制場景下的檢測效能。另一方面需要豐富真實訓練樣本和語言模型,以提升文字識別準確率。

參考文獻

[1] H. Chen, S. S. Tsai, G. Schroth, D. M. Chen, R. Grzeszczuk, and B. Girod. “Robust text detection in natural images with edge-enhanced maximally stable extremal regions.” ICIP 2011.

[2] Z Zhong,LJin,SZhang,ZFeng.“DeepText: A Unified Framework for Text Proposal Generation and Text Detection in Natural Images”. Architecture Science 2015.

[3] Minghui Liao, Baoguang Shi, Xiang Bai, Xinggang Wang, Wenyu Liu. “TextBoxes: A Fast Text Detector with a Single Deep Neural Network”. AAAI 2017.

[4] S. Ren, K. He, R. Girshick, and J. Sun. Faster r-cnn.“Towards real-time object detection with region proposal networks.” NIPS 2015.
[5] Graves, A.; Fernandez, S.; Gomez, F.; and Schmidhuber, J. “Connectionist temporal classification: Labelling unsegmented sequence data with recurrent neural networks.” ICML 2006.

[6] R Girshick,JDonahue,TDarrell,JMalik. “Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation.” CVPR 2014.

[7] J. Redmon, S. Divvala, R. Girshick, and A. Farhadi. “You only look once: Unified, real-time object detection”. CVPR 2016.

[8] W. Liu, D. Anguelov, D. Erhan, C. Szegedy, and S. Reed. “SSD: Single shot multibox detector”. ECCV 2016.

[9] “Object detection with discriminatively trained part-based models”. TPAMI 2010.

[10] Robust Real-time Object Detection. Paul Viola, Michael Jones. IJCV 2004.

[11] N. Markus, M. Frljak, I. S. Pandzic, J. Ahlberg and R. Forchheimer. “Object Detection with Pixel Intensity Comparisons Organized in Decision Trees”. CoRR 2014.

[12] Shengcai Liao, Anil K. Jain, and Stan Z. Li. “A Fast and Accurate Unconstrained Face Detector,” TPAMI 2015.

[13] Dong Chen, ShaoQingRen, Jian Sun. “Joint Cascade Face Detection and Alignment”, ECCV 2014.

[14] Haoxiang Li, Zhe Lin, XiaohuiShen, Jonathan Brandt, Gang Hua. “A convolutional neural network cascade for face detection”, CVPR.2015.

[15] Lichao Huang, Yi Yang, Yafeng Deng, Yinan Yu.“DenseBox: Unifying Landmark Localization with End to End Object Detection” CVPR 2015.

[16] Taigman Y, Yang M, Ranzato M A, et al. Deepface: Closing the gap to human-level performance in face verification.CVPR 2014.

[17] Sun Y, Wang X, Tang X. Deep learning face representation from predicting 10,000 classes.CVPR 2014.

[18] Sun Y, Chen Y, Wang X, et al. Deep learning face representation by joint identification-verification.NIPS. 2014.

[19] FaceNet: A Unified Embedding for Face Recognition and Clustering. CVPR 2015.

[20] A Discriminative Feature Learning Approach for Deep Face Recognition. ECCV 2016.

[21] Rethinking the Inception Architecture for Computer Vision. CVPR 2016.

[22] Alex Krizhevsky, IlyaSutskever, Geoffrey E. Hinton. “ImageNet Classification with Deep Convolutional Neural Networks”. 2014.

[23] Murray, N., Marchesotti, L., Perronnin, F. “Ava: A large-scale database for aesthetic visual analysis”. CVPR 2012.

團隊簡介

美團點評演算法團隊是整個美團點評技術團隊的“大腦”,涵蓋搜尋、推薦、廣告、智慧排程、自然語言處理、計算機視覺、機器人以及無人駕駛等多個技術領域。幫助美團點評數億活躍使用者改善了使用者體驗,也幫助餐飲、酒店、結婚、麗人、親子等200多個品類的數百萬商戶提升了運營效率。目前,美團點評演算法團隊在人工智慧領域進行積極的探索和研究,不斷創新與實踐,致力於應用最前沿的技術,給廣告大消費者帶來更好的生活服務體驗。

相關文章