哪裏不知道“瞄”哪裏,這項AI黑科技,打開手機就能體驗_風聞
量子位-量子位官方账号-2019-07-16 13:06
乾明 發自 凹非寺
量子位 出品 | 公眾號 QbitAI
哪裏不懂,直接拿着手機對準哪裏就行了。
比如櫃子裏的化妝品,到底哪個是哪個?對着掃一下就行了:

這是百度App中的黑科技,也是百度秀出的AI技術新高度。
在一年一度的百度AI開發者大會上,百度高級副總裁、移動生態事業羣組總經理沈抖拿着手機,打開百度App做了這樣一個演示。
無需任何其他操作,只需要移動手機,就能實時呈現手機鏡頭中多個化妝品信息。隨着手機移動,鏡頭中的畫面發生變化,百度App中呈現出來的內容也會實時發生變化。
演示結束之後,沈抖介紹稱,這一功能名為動態多目標識別,它能夠在100ms以內識別物體,8ms內做出物體位置追蹤更新,已經超過了人類。
圍繞着這項技術,百度也有相應移動生態作為支持。
百度App這一功能,不僅能夠實時動態識別多個目標,還可以快捷找同款、比價格、看評價。喜歡的話,也能直接下單。
在識別的範圍上,沈抖也給出了一個數字:
400億的訓練數據,能識別超過1000萬種物品,能夠支持超過30+識別場景。
只需打開百度App,點擊搜索框右側的相機按鈕,選擇“自動拍”即可體驗。
比如,能夠掃人臉測面相運勢:
也能掃紅酒查酒莊年份:
還能掃題目搜答案看解析、翻譯文字識別文字、掃菜品/食材看熱量知功效做法、明星看八卦追行程、 掃汽車瞭解型號價格等等。
此外,也具備文字/圖書/海報/藥品/貨幣/電影等多品類的認知能力。可以説是居家必備神器。
如今,在動態多目標識別技術的加持下,體驗再度進化——能夠同時識別多個物體,貨架上的零食,擺在桌子上的日用品,化妝品等等,都可以Hold住。
百度是怎麼實現的呢?
從部署到實現,需要解決五大挑戰
人工智能技術發展到今天,想要實現多目標識別並不難,但想在手機App上實現動態實時地多目標識別任務,百度需要解決五大方面的挑戰。
第一個挑戰:在手機App上部署複雜的深度學習模型。
手機本身計算資源十分有限,想要完成多目標識別任務,需要對模型進行壓縮優化,來適應設備狀況。
沈抖介紹稱,百度App實現這一功能,靠的是飛槳移動端部署庫。
這是一個百度深度學習平台飛槳的子集,針對移動端場景做了很多的優化。比如:
框架體積縮小至300K;通過彙編指令級速度的優化,在保持低功耗的情況下實現了高性能;框架還支持8種軟硬件平台,能夠實現在移動端的跨平台覆蓋。
在動態多目標識別整個功能上,沈抖表示,把原來雲端200多層的視覺算法模型優化到10幾層,實現100ms以內識別物體,8ms內做出物體位置追蹤更新。
相比之下,人類肉眼識別物體,一般需要170ms到400ms,追蹤物體刷新需要40ms左右,這意味着其識別速度已經超過了人眼。
他説,飛槳移動端部署庫還在百度地圖、百度網盤和自動駕駛等產品大規模使用。於此來看,百度的移動端產品的AI化,也正在全面鋪開。
剩下的四個挑戰,都是部署的技術——動態多目標識別——本身固有的挑戰。
動態多目標識別,需要實時動態運算目標識別模型,在出現變化(移動手機/出現新的物體)的情況下,快速給出反饋。
第二個挑戰:在快速、連續穩定的發現新物體的同時,構建新物體和老物體的對應關係。
具體到技術上,有兩個問題要解決,一是保證單幀圖像的物體檢測的性能,二是保證連續幀圖像物體檢測的穩定性。
單幀物體檢測的性能中包含準確率、召回率和檢測速度。當前較好的模型,在實現這一任務時都用了非常深的CNN,導致推理過程耗時很長。比如Faster-RCNN,就算用了英偉達Tesla P4 GPU,推斷還耗時在200到300ms左右。
針對這一挑戰,百度基於飛槳構建輕量級的MobileNet網絡,對基礎模型進行壓縮,提升了預測速度。根據官方數據,最終實現手機端單幀多目標檢測耗時60ms以內, 主要物體檢測準確率和召回率均在95%以上。
另外,由於深度CNN對圖像微小變化泛化能力較差,導致連續幀圖像物體檢測不穩定,從而導致相關模型在連續發現物體的效果方面與人眼能力相差甚遠。
最近幾年,學術界開始提出解決方案,比如基於序列的模型,藉助多幀信息提升後續的物體檢測穩定性。但序列模型計算需求過大, 基本無法在終端上使用。
在這些基礎上,百度給出瞭解決方案:
在實時連續幀數據上,用跟蹤完成短時的物體狀態保持,並在視野物體發生變化時,在檢測模型中融合跟蹤算法的輸出,給出最終的穩定的連續幀物體檢測結果。

不僅能夠在移動端使用,效果也非常好。官方數據,最終幀錯誤率從16.7%降低到2%。
這一方案也被百度申請了專利。
第三個挑戰:使反饋信息和放置在真實世界中一樣穩定。
也就是説,用户在使用動態多模態識別功能的時候不能感受到卡頓。想要達到這種效果,要求投影的計算性能至少要達到或超過24FPS,即人眼感知頻率。
而且,想保持相對位置不變,要求跟蹤算法在幀間位置累積偏差控制在3pixel/60幀之內。百度,採用的是SLAM(Simultaneous Localization and Mapping)技術解決上述問題。
這一技術的主要應用場景是機器人在未知的環境中移動,通過對環境的觀測確定自身的運動軌跡,同時構建出環境三維地圖。
遷移到手機攝像頭場景中,是為了實現對物體的極小偏移誤差跟蹤。實現方式是這樣的:
通過手機有限的移動,來定位手機並構建出環境三維地圖,將虛擬信息放置在指定的3D座標上。

在SLAM技術的支持上,百度也採用了VIO(Visual Inertial odometry)方案,並精簡後端優化的過程。目標是減少計算量的同時,解決其在優化過程中過濾特徵點導致特徵點不穩定的情況等等。
為了保持技術實現的穩定性, 也針對手機攝像頭的場景進行了深入優化。
第四個挑戰:從粗粒度理解和細粒度認知兩個層面,實現對視覺信號的多層認知。
識別一個物體時,人類的普遍認知方式是先有初步理解,比如是前方有一輛車。然後是深入認知,比如這輛車是一輛寶馬320。
放到機器中也一樣,分為粗粒度理解和細粒度認知兩個環節。
初步理解階段,語義粒度比較粗,一般要求毫秒級完成。百度的方案,是通過集成自主研發的移動端深度學習預測框架,在終端完成多種深度學習模型的推斷過程來實現這一環節。
他們介紹稱,訓練模型的數據集來自數千段手機拍攝視頻以及一些開源數據集(ImageNet、OpenImage等),一共整理構建了涵蓋辦公、家庭生活、商場、超市、户外園區和街道等主要場景的300+標籤分類標籤體系,物體局部圖達到百萬級。
為了適應移動端部署要求,他們選擇了基於MobileNet+分層損失實現多任務模型訓練。最終,在初步階段分類的準確率達到92%、覆蓋率80%,在引入模型壓縮之後,單圖預測耗時僅需40ms。
在具體認知階段,語義粒度細,要求在秒級別內完成,整體上是一套複雜的雲端系統。他們介紹稱,這一系統中,包含了百萬級別大規模細粒度分類模型,在動物、植物、汽車等類別認知準確率達到90%以上。
再結合ANN最近鄰向量檢索構建的視覺檢索技術,支持相似圖、同款商品、名人臉等檢索功能,在相同檢索時間下,準確和召回率遠超Facebook開源Faiss系統。
第五個挑戰:在不同場景和行為模式下,要實現發現、跟蹤和多層認知等三個環節無縫銜接。
技術能力達到之後,在實現的層面上還需要考慮諸多因素,比如判斷用户注意力、注意力集中時的選幀算法、跟蹤和檢測算法的調度切換策略等等,來提升用户體驗。
在注意力判斷方面,因為手機端的慣性傳感器(IMU)測量單元誤差較大,只用來判斷劇烈加速運動。
百度採取了結合IMU和視覺特徵的方法,利用連續視覺畫面計算的位移和尺度變化特徵來捕捉微小運動下的變化。
在選幀算法上,百度則是通過採集模擬用户在不同場景注意力變化的情況,並依靠人工標準構建最佳幀訓練數據集,通過CNN模型擬合人工標註的過程,選取最佳幀輸入到後續計算過程。
背後的原因在於,決定物體發現效果的往往都是觸發檢測時的第一幀圖像質量,這往往會受到光照、清晰度、物體位置等噪聲影響而變差。
為了節省計算量,調度算法會實時跟蹤算法狀態、注意力判斷策略的輸出,及時調整連續幀檢測模型的計算。
通過這些精細組合的調度算法,百度稱動態多目標識別的耗電量被控制在了2%/10min以內,滿足了可移動端部署對能耗的要求。
正是基於上述的四個方面技術的結合,動態多目標識別技術在百度App中得以實現。
結合百度智能小程序等移動生態中的配套服務,形成了百度獨特的AI落地路徑。
百度移動生態靠AI形成差異化
如此應用和能力,一方面是百度在移動領域技術變革的直接展示。
怎樣用AI來提升用户體驗?這一技術就提供了一個範例。
另一方面,在很多人都認為移動領域競爭早已結束的時候,AI技術也在給百度移動生態帶來差異化競爭優勢。
移動領域的競爭再度拉開序幕,將會比以往更加有“技術含量”,誰能有AI,誰能用好AI,才有可能成為最後的贏家。
此外,DuerOS和Apollo等AI帶來的新業務,很容易被大家看到AI技術進展。
但應用於百度App這樣的AI技術——比如動態多目標識別,不易被感知,想要落到手機終端,做成一個對用户有用的功能,難度同樣很高,挑戰不小。
百度能夠將其集成App中,帶來更加直觀的體驗,也能從中窺見其多年來在AI領域的積累。
而且,這樣的AI技術會對用户體驗和生活,帶來顛覆性改變。
如果還有人問百度AI變革如何開始,答案是早已開始,比如打開百度App就能體驗。