阿里妹導讀:豐富準確的地圖資料大大提升了我們在使用高德地圖出行的體驗。相比於傳統的地圖資料採集和製作,高德地圖大量採用了影像識別技術來進行資料的自動化生產,而其中場景文字識別技術佔據了重要位置。商家招牌上的藝術字、LOGO五花八門,文字背景複雜或被遮擋,拍攝的影像質量差,如此複雜的場景下,如何解決文字識別技術全、準、快的問題?本文分享文字識別技術在高德地圖資料生產中的演進與實踐,介紹了文字識別自研演算法的主要發展歷程和框架,以及未來的發展和挑戰。
一 背景
作為一個DAU過億的國民級軟體,高德地圖每天為使用者提供海量的查詢、定位和導航服務。地圖資料的豐富性和準確性決定了使用者體驗。傳統的地圖資料的採集和製作過程,是在資料採集裝置實地採集的基礎上,再對採集資料進行人工編輯和上線。這樣的模式下,資料更新慢、加工成本高。為解決這一問題,高德地圖採用影像識別技術從採集資料中直接識別地圖資料的各項要素,實現用機器代替人工進行資料的自動化生產。透過對現實世界高頻的資料採集,運用影像演算法能力,在海量的採集圖片庫中自動檢測識別出各項地圖要素的內容和位置,構建出實時更新的基礎地圖資料。而基礎地圖資料中最為重要的是POI(Point of Interest)和道路資料,這兩種資料可以構建出高德地圖的底圖,從而承載使用者的行為與商家的動態資料。
影像識別能力決定了資料自動化生產的效率,其中場景文字識別技術佔據了重要位置。不同採集裝置的影像資訊都需要透過場景文字識別(Scene Text Recognition,STR)獲得文字資訊。這要求我們致力於解決場景文字識別技術全、準、快的問題。在POI業務場景中,識別演算法不僅需要儘可能多的識別街邊新開商鋪的文字資訊, 還需要從中找出擁有99%以上準確率的識別結果,從而為POI名稱的自動化生成鋪平道路;在道路自動化場景中,識別演算法需要發現道路標誌牌上細微的變化,日處理海量回傳資料,從而及時更新道路的限速、方向等資訊。與此同時,由於採集來源和採集環境的複雜性,高德場景文字識別演算法面對的影像狀況往往復雜的多。主要表現為:
- 文字語言、字型、排版豐富:商家招牌上的藝術字型,LOGO五花八門,排版形式各式各樣。
- 文字背景複雜:文字出現的背景複雜,可能有較大的遮擋,複雜的光照與干擾。
- 影像來源多樣:影像採集自低成本的眾包裝置,成像裝置引數不一,拍攝質量差。影像往往存在傾斜、失焦、抖動等問題。
由於演算法的識別難度和識別需求的複雜性,已有的文字識別技術不能滿足高德高速發展的業務需要,因此高德自研了場景文字識別演算法,並迭代多年,為多個產品提供識別能力。
二 文字識別技術演進與實踐
STR演算法發展主要歷程
場景文字識別(STR)的發展大致可以分為兩個階段,以2012年為分水嶺,分別是傳統影像演算法階段和深度學習演算法階段。
傳統影像演算法
2012年之前,文字識別的主流演算法都依賴於傳統影像處理技術和統計機器學習方法實現,傳統的文字識別方法可以分為影像預處理、文字識別、後處理三個階段:
- 影像預處理:完成文字區域定位,文字矯正,字元切割等處理,核心技術包括連通域分析,MSER,仿射變換,影像二值化,投影分析等;
- 文字識別:對切割出的文字進行識別,一般採用提取人工設計特徵(如HOG特徵等)或者CNN提取特徵,再透過機器學習分類器(如SVM等)進行識別;
- 後處理:利用規則,語言模型等對識別結果進行矯正。
傳統的文字識別方法,在簡單的場景下能達到不錯的效果,但是不同場景下都需要獨立設計各個模組的引數,工作繁瑣,遇到複雜的場景,難以設計出泛化效能好的模型。
深度學習演算法
2012年之後,隨著深度學習在計算機視覺領域應用的不斷擴大,文字識別逐漸拋棄了原有方法,過渡到深度學習演算法方案。在深度學習時代,文字識別框架也逐漸簡化,目前主流的方案主要有兩種,一種是文字行檢測與文字識別的兩階段方案,另一種是端到端的文字識別方案。
1)兩階段文字識別方案
主要思路是先定位文字行位置,然後再對已經定位的文字行內容進行識別。文字行檢測從方法角度主要分為基於文字框迴歸的方法[1],基於分割或例項分割的方法[2],以及基於迴歸、分割混合的方法[3],從檢測能力上也由開始的多向矩形框發展到多邊形文字[2],現在的熱點在於解決任意形狀的文字行檢測問題。文字識別從單字檢測識別發展到文字序列識別,目前序列識別主要又分為基於CTC的方法[4]和基於Attention的方法[5]。
2)端到端文字識別方案[6]
透過一個模型同時完成文字行檢測和文字識別的任務,既可以提高文字識別的實時性,同時因為兩個任務在同一個模型中聯合訓練,兩部分任務可以互相促進效果。
文字識別框架
高德文字識別技術經過多年的發展,已經有過幾次大的升級。從最開始的基於FCN分割、單字檢測識別的方案,逐漸演進到現有基於例項分割的檢測,再進行序列、單字檢測識別結合的方案。與學術界不同,我們沒有采用End-to-End的識別框架,是由於業務的現實需求所決定的。End-to-End框架往往需要足夠多高質量的文字行及其識別結果的標註資料,但是這一標註的成本是極為高昂的,而合成的虛擬資料並不足以替代真實資料。因此將文字的檢測與識別拆分開來,有利於分別最佳化兩個不同的模型。
如下圖所示,目前高德採用的演算法框架由文字行檢測、單字檢測識別、序列識別三大模組構成。文字行檢測模組負責檢測出文字區域,並預測出文字的掩模用於解決文字的豎直、畸變、彎曲等失真問題,序列識別模組則負責在檢測出的文字區域中,識別出相應的文字,對於藝術文字、特殊排列等序列識別模型效果較差的場景,使用單字檢測識別模型進行補充。
文字識別框架
文字行檢測
自然場景中的文字區域通常是多變且不規則的,文字的尺度大小各異,成像的角度和成像的質量往往不受控制。同時不同採集來源的影像中文字的尺度變化較大,模糊遮擋的情況也各不相同。我們根據實驗,決定在兩階段的例項分割模型的基礎上,針對實際問題進行了最佳化。
文字行檢測可同時預測文字區域分割結果及文字行位置資訊,透過整合DCN來獲取不同方向的文字的特徵資訊,增大mask分支的feature大小並整合ASPP模組,提升文字區域分割的精度。並透過文字的分割結果生成最小外接凸包用於後續的識別計算。在訓練過程中,使用online的資料增廣方法,在訓練過程中對資料進行旋轉、翻轉、mixup等,有效的提高了模型的泛化能力。具體檢測效果如下所示:
檢測結果示例
目前場景文字檢測能力已經廣泛應用於高德POI、道路等多個產品中,為了驗證模型能力,分別在ICDAR2013(2018年3月)、ICDAR2017-MLT(2018年10月)、ICDAR2019-ReCTS公開資料集中進行驗證,並取得了優異的成績。
文字行檢測競賽成績
文字識別
根據背景的描述,POI和道路資料自動化生產對於文字識別的結果有兩方面的需求,一方面是希望文字行內容儘可能完整識別,另外一方面對於演算法給出的結果能區分出極高準確率的部分(準確率大於99%)。不同於一般文字識別評測以單字為維度,我們在業務使用中,更關注於整個文字行的識別結果,因此我們定義了符合業務使用需求的文字識別評價標準:
- 文字行識別全對率:表示文字識別正確且讀序正確的文字行在所有文字行的佔比。
- 文字行識別高置信佔比:表示識別結果中的高置信度部分(準確率大於99%)在所有文字行的佔比。
文字行識別全對率主要評價文字識別在POI名稱,道路名稱的整體識別能力,文字行識別高置信佔比主要評價演算法對於拆分出識別高準確率部分的能力,這兩種能力與我們的業務需求緊密相關。為了滿足業務場景對文字識別的需求,我們針對目前主流的文字識別演算法進行了調研和選型。
文字識別發展到現在主要有兩種方法,分別是單字檢測識別和序列識別。單字檢測識別的訓練樣本組織和模型訓練相對容易,不被文字排版的順序影響。缺點在某些"上下結構","左右結構"的漢字容易檢測識別錯誤。相比之下序列識別包含更多的上下文資訊,而且不需要定位單字精確的位置,減小因為漢字結構導致的識別損失。但是現實場景文字的排版複雜,"從上到下","從左到右"排版會導致序列識別效果不穩定。結合單字檢測識別和序列識別各自的優缺點,採用互補的方式提高文字識別的準確率。
單字檢測識別和序列識別結果融合
1)單字檢測識別
單字檢測採用Faster R-CNN的方法,檢測效果滿足業務場景需求。單字識別採用SENet結構,字元類別支援超過7000箇中英文字元和數字。在單字識別模型中參考identity mapping的設計和MobileNetV2的結構,對Skip Connections和啟用函式進行了最佳化,並在訓練過程中也加入隨機樣本變換,大幅提升文字識別的能力。在2019年4月,為了驗證在文字識別的演算法能力,我們在ICDAR2019-ReCTS文字識別競賽中獲得第二名的成績(準確率與第一名相差0.09%)。
單字檢測識別效果圖
2)文字序列識別
近年來,主流的文字序列識別演算法如Aster、DTRT等,可以分解為文字區域糾正,文字區域特徵提取、序列化編碼影像特徵和文字特徵解碼四個子任務。文字區域糾正和文字區域特徵提取將變形的文字行糾正為水平文字行並提取特徵,降低了後續識別演算法的識別難度。序列化編碼影像特徵和文字特徵解碼(Encoder-Decoder的結構)能在利用影像的紋理特徵進行文字識別的同時,引入較強的語義資訊,並利用這種上下文的語義資訊來補全識別結果。
通用序列識別結構
在實際應用中,由於被識別的目標主要以自然場景的短中文字為主,場景文字的幾何畸變、扭曲、模糊程度極為嚴重。同時希望在一個模型中識別多個方向的文字,因此我們採用的是的TPS-Inception-BiLSTM-Attention結構來進行序列識別。主要結構如下所示:
文字序列識別模型
對於被檢測到的文字行,基於角點進行透視變換,再使用TPS變換獲得水平、豎直方向的文字,按比例縮放長邊到指定大小,並以灰色為背景padding為方形影像。這一預處理方式既保持了輸入影像語義的完整,同時在訓練和測試階段,影像可以在方形範圍內自由的旋轉平移,能夠有效的提高彎曲、畸變文字的識別效能。將預處理完成的影像輸入CNN中提取影像特徵。再使用BiLSTM編碼成序列特徵,並使用Attention依次解碼獲得預測結果。如下圖所示,這一模型透過注意力機制在不同解碼階段賦予影像特徵不同的權重,從而隱式表達預測字元與特徵的對齊關係,實現在一個模型中同時預測多個方向文字。文字序列識別模型目前已覆蓋英文、中文一級字型檔和常用的繁體字字型檔,對於藝術文字、模糊文字具有較好的識別效能。
序列識別效果
3)樣本挖掘&合成
在地圖資料生產業務中經常會在道路標誌牌中發現一些生僻的地點名稱或者在POI牌匾中發現一些不常見的字甚至是繁體字,因此在文字識別效果最佳化中,除了對於模型的最佳化外,合理補充缺字、少字的樣本也是非常重要的環節。為了補充缺字、少字的樣本,我們從真實樣本挖掘和人工樣本合成兩個方向入手,一方面結合我們業務的特點,透過資料庫中已經完成製作的包含生僻字的名稱,反向挖掘出可能出現生僻字的影像進行人工標註,另一方面,我們利用影像渲染技術人工合成文字樣本。實際使用中,將真實樣本和人工合成樣本混合使用,大幅提升文字識別能力。
樣本挖掘和合成方案
文字識別技術小結
高德文字識別演算法透過對演算法結構的打磨,和多識別結果的融合,滿足不同使用場景的現實需要。同時以文字識別為代表的計算機視覺技術,已廣泛應用於高德資料自動化生產的各個角落,在部分採集場景中,機器已完全代替人工進行資料的自動化生產。POI資料中超過70%的資料都是由機器自動化生成上線,超過90%的道路資訊資料透過自動化更新。資料工藝人員的技能極大簡化,大幅節約了培訓成本和支出開銷。
三 未來發展和挑戰
目前高德主要依賴深度學習的方式解決場景文字的識別問題,相對國外地圖資料,國內漢字的基數大,文字結構複雜導致對資料多樣性的要求更高,資料不足成為主要痛點。另外,影像的模糊問題往往會影響自動化識別的效能和資料的製作效率,如何識別模糊和對模糊的處理也是高德的研究課題之一。我們分別從資料,模型設計層面闡述如何解決資料不足和模糊識別的問題,以及如何進一步提高文字識別能力。
資料層面
資料問題很重要,在沒有足夠的人力物力標註的情況下,如何自動擴充資料是影像的一個通用研究課題。其中一個思路是透過資料增廣的方式擴充資料樣本。Google DeepMind在CVPR 2019提出AutoAugment的方法, 主要透過用強化學習的方法尋找最佳的資料增廣策略。另一種資料擴充的解決辦法是資料合成,例如阿里巴巴達摩院的SwapText利用風格遷移的方式完成資料生成。
模型層面
模糊文字的識別
模糊通常造成場景識別文字未檢測和無法識別的問題。在學術界超解析度是解決模糊問題的主要方式之一,TextSR透過SRGAN對文字超分的方式,還原高畫質文字影像,解決模糊識別的問題。對比TextSR,首爾大學和馬薩諸塞大學在Better to Follow文中提出透過GAN對特徵的超解析度方式,沒有直接生成新的影像而是將超解析度網路整合在檢測網路中,在效果接近的同時,由於其採用End-to-End的模式,計算效率大幅提高。
文字語義理解
通常人在理解複雜文字時會參考一定的語義先驗資訊,近年來隨著NLP(Natural Language Processing)技術的發展,使得計算機也擁有獲得語義資訊的能力。參考人理解複雜文字的方式,如何利用語義的先驗資訊和影像的關係提高文字識別能力是一個值得研究的課題。例如SEED在CVPR 2020提出將語言模型新增到識別模型中,透過影像特徵和語義特徵綜合判斷提高文字識別能力。
其他發展
除此之外,從雲到端也是模型發展的一個趨勢,端上化的優勢在於節約資源,主要體現在節約上傳至雲端的流量開銷和雲端伺服器的計算壓力。在端上化設計上,針對OCR演算法的研究和最佳化,探索高精度、輕量級的檢測和識別框架,壓縮後模型的大小和速度滿足端上部署的需要,也是我們今後需要研究的一個課題。
參考文獻
1. Liao M et al. Textboxes++: A single-shot oriented scene text detector[J]. IEEE transactions on image processing, 2018.
2. Lyu P , Liao M , Yao C , et al. Mask TextSpotter: An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shapes[J]. 2018.
3. Zhou X , Yao C , Wen H , et al. EAST: An Efficient and Accurate Scene Text Detector[J]. 2017.
4. Shi B , Bai X , Yao C . An End-to-End Trainable Neural Network for Image-Based Sequence Recognition and Its Application to Scene Text Recognition[J]. ieee transactions on pattern analysis & machine intelligence, 2017, 39(11):2298-2304.
5. Wojna Z , Gorban A N , Lee D S , et al. Attention-Based Extraction of Structured Information from Street View Imagery[C]// 2017 14th IAPR International Conference on Document Analysis and Recognition (ICDAR). IEEE, 2018.
6. Li H , Wang P , Shen C . Towards End-to-end Text Spotting with Convolutional Recurrent Neural Networks[J]. 2017.