導讀:豐富準確的地圖數據大大提高了咱們在使用高德地圖出行的體驗。相比於傳統的地圖數據採集和製做,高德地圖大量採用了圖像識別技術來進行數據的自動化生產,而其中場景文字識別技術佔據了重要位置。商家招牌上的藝術字、LOGO五花八門,文字背景複雜或被遮擋,拍攝的圖像質量差,如此複雜的場景下,如何解決文字識別技術全、準、快的問題?本文分享文字識別技術在高德地圖數據生產中的演進與實踐,介紹了文字識別自研算法的主要發展歷程和框架,以及將來的發展和挑戰。算法
一 背景數據庫
做爲一個DAU過億的國民級軟件,高德地圖天天爲用戶提供海量的查詢、定位和導航服務。地圖數據的豐富性和準確性決定了用戶體驗。傳統的地圖數據的採集和製做過程,是在數據採集設備實地採集的基礎上,再對採集資料進行人工編輯和上線。這樣的模式下,數據更新慢、加工成本高。爲解決這一問題,高德地圖採用圖像識別技術從採集資料中直接識別地圖數據的各項要素,實現用機器代替人工進行數據的自動化生產。經過對現實世界高頻的數據採集,運用圖像算法能力,在海量的採集圖片庫中自動檢測識別出各項地圖要素的內容和位置,構建出實時更新的基礎地圖數據。而基礎地圖數據中最爲重要的是POI(Point of Interest)和道路數據,這兩種數據能夠構建出高德地圖的底圖,從而承載用戶的行爲與商家的動態數據。服務器
圖像識別能力決定了數據自動化生產的效率,其中場景文字識別技術佔據了重要位置。不一樣採集設備的圖像信息都須要經過場景文字識別(Scene Text Recognition,STR)得到文字信息。這要求咱們致力於解決場景文字識別技術全、準、快的問題。在POI業務場景中,識別算法不只須要儘量多的識別街邊新開商鋪的文字信息, 還須要從中找出擁有99%以上準確率的識別結果,從而爲POI名稱的自動化生成鋪平道路;在道路自動化場景中,識別算法須要發現道路標誌牌上細微的變化,日處理海量回傳數據,從而及時更新道路的限速、方向等信息。與此同時,因爲採集來源和採集環境的複雜性,高德場景文字識別算法面對的圖像情況每每複雜的多。主要表現爲:網絡
因爲算法的識別難度和識別需求的複雜性,已有的文本識別技術不能知足高德高速發展的業務須要,所以高德自研了場景文字識別算法,並迭代多年,爲多個產品提供識別能力。app
二 文字識別技術演進與實踐框架
STR算法發展主要歷程
場景文字識別(STR)的發展大體能夠分爲兩個階段,以2012年爲分水嶺,分別是傳統圖像算法階段和深度學習算法階段。機器學習
傳統圖像算法
2012年以前,文字識別的主流算法都依賴於傳統圖像處理技術和統計機器學習方法實現,傳統的文字識別方法能夠分爲圖像預處理、文字識別、後處理三個階段:ide
傳統的文字識別方法,在簡單的場景下能達到不錯的效果,可是不一樣場景下都須要獨立設計各個模塊的參數,工做繁瑣,遇到複雜的場景,難以設計出泛化性能好的模型。函數
深度學習算法
2012年以後,隨着深度學習在計算機視覺領域應用的不斷擴大,文字識別逐漸拋棄了原有方法,過渡到深度學習算法方案。在深度學習時代,文字識別框架也逐漸簡化,目前主流的方案主要有兩種,一種是文本行檢測與文字識別的兩階段方案,另外一種是端到端的文字識別方案。性能
1)兩階段文字識別方案
主要思路是先定位文本行位置,而後再對已經定位的文本行內容進行識別。文本行檢測從方法角度主要分爲基於文本框迴歸的方法,基於分割或實例分割的方法,以及基於迴歸、分割混合的方法,從檢測能力上也由開始的多向矩形框發展到多邊形文本,如今的熱點在於解決任意形狀的文本行檢測問題。文本識別從單字檢測識別發展到文本序列識別,目前序列識別主要又分爲基於CTC的方法[4]和基於Attention的方法。
2)端到端文字識別方案
經過一個模型同時完成文本行檢測和文本識別的任務,既能夠提升文本識別的實時性,同時由於兩個任務在同一個模型中聯合訓練,兩部分任務能夠互相促進效果。
文字識別框架
高德文字識別技術通過多年的發展,已經有過幾回大的升級。從最開始的基於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%)。不一樣於通常文字識別評測以單字爲維度,咱們在業務使用中,更關注於整個文本行的識別結果,所以咱們定義了符合業務使用需求的文字識別評價標準:
文本行識別全對率主要評價文字識別在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算法的研究和優化,探索高精度、輕量級的檢測和識別框架,壓縮後模型的大小和速度知足端上部署的須要,也是咱們從此須要研究的一個課題。
舒適提示:由阿里巴巴高德地圖發起,阿里雲天池平臺做爲支撐平臺的AMAP-TECH算法大賽初賽已經開啓,賽題爲基於車載視頻圖像的動態路況分析,權威評委、豐厚獎金、終面通道、榮譽證書,歡迎同窗們踊躍參與,一塊兒用技術幫助更多人美好出行!
初賽時間:7月8日-8月31日(UTC+8)。
更多比賽詳情:https://tianchi.aliyun.com/competition/entrance/531809/introduction