AI(人工智能)技術已經普遍應用於美團的衆多業務,從美團App到大衆點評App,從外賣到打車出行,從旅遊到婚慶親子,美團數百名最優秀的算法工程師正致力於將AI技術應用於搜索、推薦、廣告、風控、智能調度、語音識別、機器人、無人配送等多個領域,幫助美團3.2億消費者和400多萬商戶改善服務和體驗,幫你們吃得更好,生活更好。算法
基於AI技術,美團搭建了世界上規模最大,複雜度最高的多人、多點實時智能配送調度系統;基於AI技術,美團推出了業內第一款大規模落地的企業應用級語音交互產品,爲50萬騎手配備了智能語音系統;基於AI技術,美團構建了世界上最大的菜品知識庫,爲200多萬商家、3億多件商品繪製了知識圖譜,爲2.5億用戶提供了精準的用戶畫像,並構建了世界上用戶規模最大、複雜度最高的O2O智能推薦平臺。網絡
美團這個全球最大生活服務互聯網平臺的「大腦」是怎麼構建的?從本週起,咱們將連續發表「AI in 美團」系列文章,給你們全面揭開各項技術的內幕。框架
另外,業界第一部全面講述互聯網機器學習實踐的圖書《美團機器學習實踐》也即將上市,敬請期待,本文選自書中第十五章。dom
背景機器學習
計算機視覺是利用攝像機和電腦代替人眼,使得計算機擁有相似於人類的對目標進行檢測、識別、理解、跟蹤、判別決策的功能。以美團業務爲例,在商家上單、團單展現、消費評價等多個環節都會涉及計算機視覺的應用,包括文字識別、圖片分類、目標檢測和圖像質量評價等方向。本文將經過以OCR(光學字符識別)的場景來介紹深度學習在計算機視覺中的應用。xss
基於深度學習的OCRide
文字是不可或缺的視覺信息來源。相對於圖像/視頻中的其餘內容,文字每每包含更強的語義信息,所以對圖像中的文字提取和識別具備重大意義。OCR在美團業務中主要起着兩方面做用。一方面是輔助錄入,好比在移動支付環節經過對銀行卡卡號的拍照識別以實現自動綁卡,輔助運營錄入菜單中菜品信息,在配送環節經過對商家小票的識別以實現調度核單,如圖1所示。另外一方面是審覈校驗,好比在商家資質審覈環節對商家上傳的身份證、營業執照和餐飲許可證等證件照片進行信息提取和核驗以確保該商家的合法性,機器過濾商家上單和用戶評價環節產生的包含違禁詞的圖片。函數
OCR技術發展歷程性能
傳統的OCR基於圖像處理(二值化、連通域分析、投影分析等)和統計機器學習(Adaboost、SVM),過去20年間在印刷體和掃描文檔上取得了不錯的效果。傳統的印刷體OCR解決方案總體流程如圖2所示。學習
從輸入圖像到給出識別結果經歷了圖像預處理、文字行提取和文字行識別三個階段。其中文字行提取的相關步驟(版面分析、行切分)會涉及大量的先驗規則,而文字行識別主要基於傳統的機器學習方法。隨着移動設備的普及,對拍攝圖像中的文字提取和識別成爲主流需求,同時對場景中文字的識別需求愈來愈突出。所以,相比於印刷體場景,拍照文字的識別將面臨如下三方面挑戰:
成像複雜。噪聲、模糊、光線變化、形變。
文字複雜。字體、字號、色彩、磨損、筆畫寬度任意、方向任意。
場景複雜。版面缺失、背景干擾。
對於上述挑戰,傳統的OCR解決方案存在着如下不足:
經過版面分析(連通域分析)和行切分(投影分析)來生成文本行,要求版面結構有較強的規則性且前背景可分性強(例如黑白文檔圖像、車牌),沒法處理前背景複雜的隨意文字(例如場景文字、菜單、廣告文字等)。另外,二值化操做自己對圖像成像條件和背景要求比較苛刻。
經過人工設計邊緣方向特徵(例如方向梯度直方圖)來訓練字符識別模型,在字體變化、模糊或背景干擾時,此類單一的特徵的泛化能力迅速降低。
過分依賴於字符切分的結果,在字符扭曲、粘連、噪聲干擾的狀況下,切分的錯誤傳播尤爲突出。
儘管圖像預處理模塊可有效改善輸入圖像的質量,但多個獨立的校訂模塊的串聯必然帶來偏差傳遞。另外因爲各模塊優化目標獨立,它們沒法融合到統一的框架中進行。
爲了解決上述問題,現有技術在如下三方面進行了改進。
1. 文字行提取
傳統OCR(如圖3所示)採起自上而下的切分式,但它只適用於版面規則背景簡單的狀況。該領域還有另外兩類思路。
自底向上的生成式方法。該類方法經過連通域分析或最大穩定極值區域(MSER)等方法提取候選區域,而後經過文字/非文字的分類器進行區域篩選,對篩選後的區域進行合併生成文字行,再進行文字行級別的過濾,如圖3所示。該類方法的不足是,一方面流程冗長致使的超參數過多,另外一方面沒法利用全局信息。
基於滑動窗口的方法。該類方法利用通用目標檢測的思路來提取文字行信息,利用訓練獲得的文字行/詞語/字符級別的分類器來進行全圖搜索。原始的基於滑動窗口方法經過訓練文字/背景二分類檢測器,直接對輸入圖像進行多尺度的窗口掃描。檢測器能夠是傳統機器學習模型(Adaboost、Random Ferns),也能夠是深度卷積神經網絡。
爲了提高效率,DeepText、TextBoxes等方法先提取候選區域再進行區域迴歸和分類,同時該類方法可進行端到端訓練,但對多角度和極端寬高比的文字區域召回低。
2. 傳統單字識別引擎→基於深度學習的單字識別引擎
因爲單字識別引擎的訓練是一個典型的圖像分類問題,而卷積神經網絡在描述圖像的高層語義方面優點明顯,因此主流方法是基於卷積神經網絡的圖像分類模型。實踐中的關鍵點在於如何設計網絡結構和合成訓練數據。對於網絡結構,咱們能夠借鑑手寫識別領域相關網絡結構,也可採用OCR領域取得出色效果的Maxout網絡結構,如圖4所示。對於數據合成,需考慮字體、形變、模糊、噪聲、背景變化等因素。
表1給出了卷積神經網絡的特徵學習和傳統特徵的性能比較,能夠看出經過卷積神經網絡學習獲得的特徵鑑別能力更強。
3. 文字行識別流程
傳統OCR將文字行識別劃分爲字符切分和單字符識別兩個獨立的步驟,儘管經過訓練基於卷積神經網絡的單字符識別引擎能夠有效提高字符識別率,但切分對於字符粘連、模糊和形變的狀況的容錯性較差,並且切分錯誤對於識別是不可修復的。所以在該框架下,文本行識別的準確率主要受限於字符切分。假設已訓練單字符識別引擎的準確率p=99%,字符切分準確率爲q= 95%,則對於一段長度爲L的文字行,其識別的平均準確率爲P= (pq)的L次方,其中L = 10時,P = 54.1%。
因爲獨立優化字符切分提高空間有限,所以有相關方法試圖聯合優化切分和識別兩個任務。現有技術主要可分爲基於切分的方法(Segmentation-Based)和不依賴切分的方法(Segmentation-Free)兩類方法。
基於切分的方法
該類方法仍是保留主動切分的步驟,但引入了動態合併機制,經過識別置信度等信息來指導切分,如圖5所示。
過切分模塊將文字行在垂直於基線方向上分割成碎片,使得其中每一個碎片至多包含一個字符。一般來講,過切分模塊會將字符分割爲多個連續筆劃。過切分能夠採用基於規則或機器學習的方法。規則方法主要是直接在圖像二值化的結果上進行連通域分析和投影分析來肯定候補切點位置,經過調整參數能夠控制粒度來使得字符儘量被切碎。基於規則的方法實現簡單,但在成像/背景複雜的條件下其效果很差。機器學習方法經過離線訓練鑑別切點的二類分類器,而後基於該分類器在文字行圖像上進行滑窗檢測。
動態合併模塊將相鄰的筆劃根據識別結果組合成可能的字符區域,最優組合方式即對應最佳切分路徑和識別結果。直觀來看,尋找最優組合方式可轉換爲路徑搜索問題,對應有深度優先和廣度優先兩種搜索策略。深度優先策略在每一步選擇擴展當前最優的狀態,所以全局來看它是次優策略,不適合過長的文字行。廣度優先策略在每一步會對當前多個狀態同時進行擴展,好比在語音識別領域普遍應用的Viterbi解碼和Beam Search。但考慮到性能,Beam Search一般會引入剪枝操做來控制路徑長度,剪枝策略包含限制擴展的狀態數(好比,每一步只擴展TopN的狀態)和加入狀態約束(好比,合併後字符形狀)等。
因爲動態合併會產生多個候選路徑,因此須要設計合適的評價函數來進行路徑選擇。評價函數的設計主要從路徑結構損失和路徑識別打分兩方面出發。路徑結構損失主要從字符形狀特徵方面衡量切分路徑的合理性,路徑識別打分則對應於特定切分路徑下的單字平均識別置信度和語言模型分。
該方案試圖將字符切分和單字符識別融合在同一個框架下解決,但因爲過度割是獨立的步驟,所以沒有從本質上實現端到端學習。
不依賴切分的方法
該類方法徹底跨越了字符切分,經過滑動窗口或序列建模直接對文字行進行識別。
滑窗識別借鑑了滑動窗口檢測的思路,基於離線訓練的單字識別引擎,對文字行圖像從左到右進行多尺度掃描,以特定窗口爲中心進行識別。在路徑決策上可採用貪心策略或非極大值抑制(NMS)策略來獲得最終的識別路徑。圖6給出了滑窗識別的示意流程。可見滑窗識別存在兩個問題:滑動步長的粒度過細則計算代價大,過粗則上下文信息易丟失;不管採用何種路徑決策方案,它們對單字識別的置信度依賴較高。
序列學習起源於手寫識別、語音識別領域,由於這類問題的共同特色是須要對時序數據進行建模。儘管文字行圖像是二維的,但若是把從左到右的掃描動做類比爲時序,文字行識別從本質上也可歸爲這類問題。經過端到端的學習,摒棄矯正/切分/字符識別等中間步驟,以此提高序列學習的效果,這已經成爲當前研究的熱點。
基於現有技術和美團業務涉及的OCR場景,咱們在文字檢測和文字行識別採用如圖7所示的深度學習框架。
後面將分別介紹文字檢測和文字行識別這兩部分的具體方案。
基於深度學習的文字檢測
對於美團的OCR場景,根據版面是否有先驗信息(卡片的矩形區域、證件的關鍵字段標識)以及文字自身的複雜性(如水平文字、多角度),圖像可劃分爲受控場景(如身份證、營業執照、銀行卡)和非受控場景(如菜單、門頭圖),如圖8所示。
考慮到這兩類場景的特色不一樣,咱們借鑑不一樣的檢測框架。因爲受控場景文字諸多約束條件可將問題簡化,所以利用在通用目標檢測領域普遍應用的Faster R-CNN框架進行檢測。而對於非受控場景文字,因爲形變和筆畫寬度不一致等緣由,目標輪廓不具有良好的閉合邊界,咱們須要藉助圖像語義分割來標記文字區域與背景區域。
1. 受控場景的文字檢測
對於受控場景(如身份證),咱們將文字檢測轉換爲對關鍵字目標(如姓名、身份證號、地址)或關鍵條目(如銀行卡號)的檢測問題。基於Faster R-CNN的關鍵字檢測流程如圖9所示。爲了保證迴歸框的定位精度,同時提高運算速度,咱們對原有框架和訓練方式進行了微調。
考慮到關鍵字或關鍵條目的類內變化有限,網絡結構只採用了3個卷積層。
訓練過程當中提升正樣本的重疊率閾值。
根據關鍵字或關鍵條目的寬高比範圍來適配RPN層Anchor的寬高比。
Faster R-CNN框架由RPN(候選區域生成網絡)和RCN(區域分類網絡)兩個子網絡組成。RPN經過監督學習的方法提取候選區域,給出的是無標籤的區域和粗定位結果。RCN引入類別概念,同時進行候選區域的分類和位置迴歸,給出精細定位結果。訓練時兩個子網絡經過端到端的方式聯合優化。圖10以銀行卡卡號識別爲例,給出了RPN層和RCN層的輸出。
對於人手持證件場景,因爲證件目標在圖像中所佔比例太小,直接提取微小候選目標會致使必定的定位精度損失。爲了保證高召回和高定位精度,可採用由粗到精的策略進行檢測。首先定位卡片所在區域位置,而後在卡片區域範圍內進行關鍵字檢測,而區域定位也可採用Faster R-CNN框架,如圖11所示。
圖11 由粗到精的檢測策略
2. 非受控場景的文字檢測
對於菜單、門頭圖等非受控場景,因爲文字行自己的多角度且字符的筆畫寬度變化大,該場景下的文字行定位任務挑戰很大。因爲通用目標檢測方法的定位粒度是迴歸框級,此方法適用於剛體這類有良好閉合邊界的物體。然而文字每每由一系列鬆散的筆畫構成,尤爲對於任意方向或筆畫寬度的文字,僅以迴歸框結果做爲定位結果會有較大誤差。另外剛體檢測的要求相對較低,即使只定位到部分主體(如定位結果與真值的重疊率是50%),也不會對剛體識別產生重大影響,而這樣的定位偏差對於文字識別則極可能是致命的。
爲了實現足夠精細的定位,咱們利用語義分割中經常使用的全卷積網絡(FCN)來進行像素級別的文字/背景標註,總體流程如圖12所示。
多尺度全卷積網絡經過對多個階段的反捲積結果的融合,實現了全局特徵和局部特徵的聯合,進而達到了由粗到精的像素級別標註,適應於任意非受控場景(門頭圖、菜單圖片)。
基於多尺度全卷積網絡獲得的像素級標註,經過連通域分析技術可獲得一系列連通區域(筆劃信息)。但因爲沒法肯定哪些連通域屬於同一文字行,所以須要藉助單鏈聚類技術來進行文字行提取。至於聚類涉及的距離度量,主要從連通域間的距離、形狀、顏色的類似度等方面提取特徵,並經過度量學習自適應地獲得特徵權重和閾值,如圖13所示。
圖14分別給出了在菜單和門頭圖場景中的全卷積網絡定位效果。第二列爲全卷積網絡的像素級標註結果,第三列爲最終文字檢測結果。能夠看出,全卷積網絡能夠較好地應對複雜版面或多角度文字定位。
咱們將整行文字識別問題歸結爲一個序列學習問題。利用基於雙向長短時間記憶神經網絡(Bi-directional Long Short-term Memory,BLSTM)的遞歸神經網絡做爲序列學習器,來有效建模序列內部關係。爲了引入更有效的輸入特徵,咱們採用卷積神經網絡模型來進行特徵提取,以描述圖像的高層語義。此外在損失函數的設計方面,考慮到輸出序列與輸入特徵幀序列沒法對齊,咱們直接使用結構化的Loss(序列對序列的損失),另外引入了背景(Blank)類別以吸取相鄰字符的混淆性。
總體網絡結構分爲三層:卷積層、遞歸層和翻譯層,如圖15所示。其中卷積層提取特徵;遞歸層既學習特徵序列中字符特徵的前後關係,又學習字符的前後關係;翻譯層實現對時間序列分類結果的解碼。
對於輸入的固定高度h0= 36的圖像(寬度任意,如W0 = 248),咱們經過CNN網絡結構提取特徵,獲得9×62×128的特徵圖,可將其看做一個長度爲62的時間序列輸入到RNN層。RNN層有400個隱藏節點,其中每一個隱藏節點的輸入是9×128維的特徵,是對圖像局部區域的描述。考慮到對應於某個時刻特徵的圖像區域,它與其先後內容都具備較強的相關性,因此咱們通常採用雙向RNN網絡,如圖16所示。
雙向RNN後接一個全鏈接層,輸入爲RNN層(在某個時刻)輸出的特徵圖,輸出爲該位置是背景、字符表中文字的機率。全鏈接層後接CTC(聯結主義時間分類器)做爲損失函數。在訓練時,根據每一個時刻對應的文字、背景機率分佈,獲得真值字符串在圖像中出現的機率P(ground truth),將-log(P(ground truth))做爲損失函數。在測試時,CTC能夠看做一個解碼器,將每一時刻的預測結果(當前時刻的最大後驗機率對應的字符)聯合起來,而後去掉空白和重複的模式,就造成了最終的序列預測結果,如圖17所示。
從圖17中也能夠看出,對應輸入序列中的每一個字符,LSTM輸出層都會產生明顯的尖峯,儘管該尖峯未必對應字符的中心位置。換句話說,引入CTC機制後,咱們不須要考慮每一個字符出現的具體位置,只需關注整個圖像序列對應的文字內容,最終實現深度學習的端到端訓練與預測。
因爲序列學習框架對訓練樣本的數量和分佈要求較高,咱們採用了真實樣本+合成樣本的方式。真實樣本以美團業務來源(例如,菜單、身份證、營業執照)爲主,合成樣本則考慮了字體、形變、模糊、噪聲、背景等因素。
基於上述序列學習框架,咱們給出了在不一樣場景下的文字行識別結果,如圖18所示。其中前兩行的圖片爲驗證碼場景,第三行爲銀行卡,第四行爲資質證件,第五行爲門頭圖,第六行爲菜單。能夠看到,識別模型對於文字形變、粘連、成像的模糊和光線變化、背景的複雜等都有較好的健壯性。
基於上述試驗,與傳統OCR相比,咱們在多種場景的文字識別上都有較大幅度的性能提高,如圖19所示。
與傳統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多個品類的數百萬商戶提高了運營效率。目前,美團點評算法團隊在人工智能領域進行積極的探索和研究,不斷創新與實踐,致力於應用最前沿的技術,給廣告大消費者帶來更好的生活服務體驗。
圖書推薦
咱們「美團技術團隊」公衆號以前已經發布過不少AI和算法方面的文章,但從中很難了解算法工程師完整的工做流程。
告訴你們一個好消息,美團算法團隊多位技術專家集體編寫的《美團機器學習實踐》一書即將出版。這本書詳細地講述了最熱門的人工智能技術如何應用於搜索、推薦、計算廣告、風控、圖像處理等各類場景,如何在美團這個全球最大生活服務互聯網平臺實際落地,敬請期待。
招聘信息
美團廣告平臺全面負責美團到店餐飲、到店綜合(結婚、麗人、休閒娛樂、學習培訓、親子、家裝)、酒店旅遊的商業變現。搜索廣告基於數億用戶、數百萬商家和數千萬訂單的真實數據作挖掘,在變現的同時確保用戶體驗和商家利益。歡迎有意向的同窗加入搜索廣告算法組。簡歷請投遞至:leijun#meituan.com
也許你還想看