數十億次數學運算只消耗幾毫瓦電力,谷歌開源Pixel4背後視覺模型

2020-12-27 機器之心Pro

選自Google AI Blog

作者:Andrew Howard

機器之心編譯

參與:王子嘉、Geek AI

說到今年最熱門的智慧型手機,一定繞不開谷歌重磅推出的 Pixel 4。而 Pixel 4 的強大性能表現在很大程度上還要歸功於其背後用到的黑科技——基於終端設備的機器學習。前段時間,谷歌發布了 MobileNetV3 和 MobileNetEdgeTPU 的原始碼,讓我們一探究竟吧!

基於終端設備的機器學習(On-device machine learning)是實現具有隱私保護功能、能夠時刻運轉、快速響應的智能的重要組成部分。這就要求我們將基於終端的機器學習部署在算力有限的設備上,從而推動了從算法意義上來說高效的神經網絡模型的研究,以及每秒可執行數十億次數學運算卻只需要消耗幾毫瓦電力的硬體的發展。最近發布的「Google Pixel 4」就是這一發展趨勢的代表。

「Google Pixel 4」搭載了 Pixel 神經核心,它包含了 Edge TPU 架構的實例和 Google 用於邊緣計算設備的機器學習加速器,這增強了 Pixel 4 的用戶體驗,比如更好的面部解鎖功能,更快的 Google 助手以及獨特的相機功能。同時,MobileNet 之類的算法為移動視覺應用程式提供了緊湊而高效的神經網絡模型,是基於終端的機器學習成功的重要因素。

去年 11 月,谷歌發布了 MobileNetV3 和進行了 Pixel 4 Edge TPU 優化後的 MobileNetEdgeTPU 模型的原始碼及檢查點(checkpoint)。這些模型是最新的可感知硬體(hardware-aware)的自動機器學習(AutoML)技術與一些新型架構設計的結晶。

在移動版 CPU 上,MobileNetV3 的速度是 MobileNetV2 的兩倍(準確率相同的情況下),它也刷新了移動計算機視覺網絡目前最佳的性能。在 Pixel 4 Edge TPU 硬體加速器上,MobileNetEdgeTPU 模型在提高模型準確性的同時減少了運行時間和功耗,這個進展進一步突破了這一領域的極限。

構建 MobileNetV3

與之前手動設計的 MobileNet 相比,MobileNetV3 的搜索空間是適用於移動計算機視覺任務的,它在搜索空間中通過 AutoML 技術找到可能的最佳架構。為了最有效地利用搜索空間,谷歌依次部署了兩種技術:MnasNet 和 NetAdapt。首先,MnasNet 使用強化學習從一組離散的選項中選擇出最優配置,從而找到一個粗糙的架構。然後,谷歌使用 NetAdapt 對體系結構進行微調,NetAdapt 是一種補充性技術,可以對未充分利用的激活通道進行微調。為了得到在不同條件下的最佳性能,谷歌分別生成了大型模型和小型模型。

使用 Google Pixel 4 CPU 在 ImageNet 分類任務上對於移動模型的準確性和延遲的比較。

MobileNetV3 的搜索空間

谷歌在適應移動環境的架構設計上取得了多項進展,MobileNetV3 的搜索空間就建立在這些進展的基礎之上。首先,谷歌引入了一種基於 Swish 非線性函數的、被稱為 hard-swish(h-swish)的新激活函數。Swish 函數的主要缺點是其在移動硬體上的計算效率很低。因此,谷歌使用了一種可以由兩個分段線性函數的乘積表示的近似方案。

接下來將介紹適用於行動裝置的擠壓激勵塊(squeeze-and-excitation),該塊利用分段線性近似代替了傳統的 sigmoid 函數。

在 h-swish 的基礎上加上適用於行動裝置的擠壓激勵塊,並與改進後的 MobileNetV2 中的倒瓶頸結構相結合,就形成了 MobileNetV3 的一個新的構建塊。

MobileNetV3 通過添加 h-swish 和適用於行動裝置的擠壓激勵塊擴展了 MobileNetV2 的倒瓶頸結構,並以此作為可搜索的選項。

以下參數定義了構造 MobileNetV3 時使用的搜索空間:

擴展層大小擠壓激勵塊壓縮度激活函數的選擇:h-swish 或 ReLU每個解析度塊的層數

谷歌還在網絡末端引入了一個新的高效的最後階段,可將延遲進一步降低 15%。

MobileNetV3 的目標檢測和語義分割

除了分類模型之外,谷歌還引入了 MobileNetV3 目標檢測模型,該模型在 COCO 數據集上比 MobileNetV2 減少了 25% 的檢測延遲(準確率相同的情況下)。

為了優化 MobileNetV3 以進行有效的語義分割,谷歌引入了一個低延遲分割解碼器,將其稱之為「Lite reduce Atrous Spatial Pyramid Pooling」(LR-SPP)。這個新的解碼器包含三個分支,一個分支用於低解析度語義特徵,一個用於高解析度細節,一個用於輕量級注意力機制。LR-SPP 和 MobileNetV3 的組合在高解析度的 Cityscapes 數據集上減少了超過 35% 的延遲。

用於 Edge TPUs 的 MobileNet

Pixel 4 中的 Edge TPU 在結構上與 Coral 產品線中的 Edge TPU 相似,但經過定製後,可以滿足 Pixel 4 中相機的關鍵功能的要求。可感知加速器的 AutoML 方法大大減少了為硬體加速器設計和優化神經網絡的手工過程。構建神經架構搜索空間是這種方法的重要一環,它以已知可以提高硬體利用率的神經網絡操作為中心。儘管諸如「擠壓-激勵塊」和「swish 非線性」等操作已被證明是構建緊湊而快速的 CPU 模型的關鍵,但這些操作在 Edge TPU 上的執行效果往往欠佳,因此被排除在搜索空間之外。為了能夠更容易地移植到其它各種硬體加速器上(如 DSP 和 GPU),簡化版的 MobileNetV3 變種也放棄了對這些操作的使用(例如,擠壓-激勵、swish、以及 5x5 卷積)。

谷歌鼓勵神經網絡架構搜索算法同時優化模型的準確率和 EdgeTPU 延遲,從而生成了 MobileNetEdgeTPU 模型,該模型與現有的移動版模型(如 MobileNetV2 和簡化版的 MobileNetV3)相比,可以在準確率相當的情況下具有更低的延遲(或在同等延遲的基礎上達到更高的準確率)。與 EfficientNet-EdgeTPU 模型(針對 Coral 中的 Edge TPU 進行了優化)相比,這些模型在 Pixel 4 上的運行延遲要低得多(儘管會損失一部分準確率)。

雖然降低模型的功耗不是搜索目標的一部分,但 MobileNetEdgeTPU 模型的低延遲也有助於降低 Edge TPU 的平均功耗。在準確率相當的情況下,MobileNetEdgeTPU 模型消耗的能量不到簡化版的 MobileNetV3 模型的 50%。

左圖:在 Pixel4 EdgeTPU 上運行時,MobileNetEdgeTPU 與其它為行動裝置設計的圖像分類網絡在 ImageNet 分類任務上的準確率比較。與其它模型相比,MobileNetEdgeTPU 具有更高的準確率和更低的延遲。右圖:每秒運行 30 幀(fps)的不同分類模型的在 Edge TPU 上的平均功率(瓦特)。

使用 MobileNetEdgeTPU 進行目標檢測

在目標檢測任務中,MobileNetEdgeTPU 分類模型也可以看作一個有效的特徵提取器。與基於 MobileNetV2 的檢測模型相比,在 Edge TPU 上可比較的運行時上,MobileNetEdgeTPU 模型大大提高了在「COCO14 minival」數據集上的模型質量(通過平均精度均值(mean average precision,mAP)衡量)。MobileNetEdgeTPU 檢測模型的延遲為 6.6ms, mAP 評分為 24.3,而基於 mobilenetv2 的檢測模型 mAP 為 22,每次推理需要 6.8ms。

對於可感知硬體的模型的需求

雖然上面提到的結果突出了 MobileNetEdgeTPU 模型在功率、性能和質量方面的優勢,但是需要注意的是,之所以有這些進步,是由於這些模型專門為 EdgeTPU 加速器定製。

在移動版 CPU 上運行時,MobileNetEdgeTPU 的性能要低於專門針對移動版 CPU 進行調優的模型(MobileNetV3)。MobileNetEdgeTPU 模型執行的操作要多得多,因此,它們在移動版 CPU 上運行得更慢也就不足為奇了,移動版 CPU 在模型的計算需求和運行時之間有更線性的關係。

當部署目標是移動版 CPU 時,MobileNetV3 依舊是最好的模型。

致研究員與開發者

MobileNetV3 和 MobileNetEdgeTPU 的代碼,以及用於 ImageNet 分類的浮點和量化的檢查點,都可以在 MobileNet 的 github 主頁上找到:https://github.com/tensorflow/models/tree/master/research/slim/nets/mobilenet。

在 Tensorflow 目標檢測 API 中提供了 MobileNetV3 和 MobileNetEdgeTPU 目標檢測的開源實現:https://github.com/tensorflow/models/tree/master/research/object_detection。

MobileNetV3 語義分割的 TensorFlow 版開源實現可以在 DeepLab 中找到:https://github.com/tensorflow/models/tree/master/research/object_detection。

相關焦點

  • 超越谷歌MobileNet!華為提出端側神經網絡架構GhostNet|已開源
    在ImageNet分類任務中,GhostNet在各種計算複雜度級別上始終優於其他競爭對手,比如谷歌的MobileNet系列、曠視的ShuffleNet系列、IGCV3、ProxylessNAS、FBNet、MnasNet等等。關於GhostNet的論文已經被CVPR 2020收錄,模型與代碼也已經在GitHub上開源。
  • 谷歌在開源社區揭露了舊傷口
    導讀:這代表著管理開源項目代碼和項目商標/ IP的明顯分歧。上周,谷歌的公告及其引起的焦慮使原本相當穩定的環境變得不安,該環境曾幫助開源軟體成為開發和IT中的主導力量。谷歌與OUC攜手合作,還宣布將改變Istio項目的董事會組成。根據公司貢獻的代碼以及其他貢獻者社區選擇的社區席位的新公式將決定誰來管理項目。總而言之,這代表著管理項目代碼和項目商標/ IP的明顯分歧。這不是開源中的新概念,但是近年來很少使用。
  • 移動端實時3D目標檢測,谷歌開源出品,安卓下載就能用
    >選自Google AI Blog作者:Adel Ahmadyan、Tingbo Hou機器之心編譯機器之心編輯部常規目標檢測,已經不能滿足移動端了,谷歌開源的整個模型非常精簡,速度也非常快,研究者將整套方案都開源了出來。
  • Jax 生態再添新庫:DeepMind 開源 Haiku、RLax
    Jax 是谷歌開源的一個科學計算庫,能對 Python 程序與 NumPy 運算執行自動微分,而且能夠在 GPU 和 TPU 上運行,具有很高的性能。 此外,Haiku 的 API 和編程模型都是基於 Sonnet,因此使用過 Sonnet 的用戶可以快速上手。項目作者也表示,Sonnet 之於 TensorFlow 的提升就如同 Haiku 之於 Jax。 目前,Haiku 已公開了 Alpha 版本,已完全開源。項目作者歡迎使用者提出建議。
  • 你所不知道的,那些高科技技術中蘊藏的數學底層邏輯
    《數學之美》是吳軍博士的一本科普暢銷書,曾榮獲國家圖書館文津圖書獎。書中講述了符號、語言、信息、概率、模型等與數學的關聯,介紹了隱馬爾可夫鏈、最大熵模型、網絡和網絡爬蟲、布爾代數和搜尋引擎、餘弦定理和新聞的分類、矩陣運算和文本處理、布隆過濾器等技術。從基礎數學的起源及發展歷程,到如今的大數據、區塊鏈、算法等前沿技術。
  • 華為開發者大會2020第二日:計算視覺計劃發布,MindSpore正式開源
    在今日的大會上,華為不僅全面了分享在計算視覺領域的基礎研究成果,全球開發者可通過公開發表的論文及開原始碼,進一步開展AI的研究、開發和部署。同是,華為也正式發布了計算視覺研究計劃,並邀請全球AI專家參與研究。
  • Fuchsia 二次發育,正式進入開源開發模式
    Fuchsia 是谷歌四年前就宣布的開源跨端作業系統項目,但之前一直沒有開放社區開發,而是在谷歌內部開發。
  • 華為重磅開源全場景AI計算框架MindSpore!計算視覺研究成果及新...
    此外,華為全面分享在計算視覺領域的基礎研究成果,全球開發者可通過公開發表的論文及開原始碼,進一步開展AI的研究、開發和部署。同時,華為發布計算視覺研究計劃(以下簡稱視覺計劃),並邀請全球AI專家參與研究。
  • 百度開源進行時
    InfoQ 通過分析 GitHub 開源項目數據集 GitHubArchive 之中關於 pull request 的發起和合入數據,獲得了 2020 和 2019 年度全球深度學習框架活躍度排名榜單,其中,百度飛槳的 open 數據由去年的 2759 次躍升到今年同期的 3391 次,比現階段暫列第三的谷歌 Tensorflow 高出 1000 多次。
  • 谷歌開源量子機器學習函式庫,助力英特爾處理器性能最佳化
    Google、滑鐵盧大學、X(公司)和福斯集團合作,共同研發出量子機器學習的開源函式庫TensorFlow Quantum(TFQ),這是一個TensorFlow的擴充,讓開發人員可以利用量子電腦建構機器學習模型。
  • 谷歌又開源一項神器:Scorecards
    打開APP 谷歌又開源一項神器:Scorecards 開源最前線 發表於 2020-12-15 17:52:17   為了解決以上問題,谷歌開發了名為「Scorecards」的新項目,並在上周由開源安全基金會 (OpenSSF) 宣布開源。   自2020年8月成立以來,Scorecards是OpenSSF下發布的首批項目之一。Scorecards旨在為開源項目自動生成「安全評分」,從而幫助用戶評估該項目的可信度、風險係數和安全係數等。
  • 目前最佳的幾個人工智慧開發框架以及(GPT-3)模型簡介
    而如今隨著GPU的更新換代,我們知道在運算能力方面,CPU是不如GPU的,FPGA也無法適應大規模的並行運算。對此谷歌研發出了TPU晶片,就是專門針對人工智慧神經網絡的運算,這也引起了科技廠商們開始研製神經網絡晶片的浪潮。
  • 除了切入零售與電力行業,極視角還要做計算機視覺PasS雲平臺
    「計算機視覺」毫無疑問是過去兩年人工智慧領域最受關注也是融資筆數與融資金額最多的細分賽道了。在36氪創投助手的資料庫中,輸入計算器視覺這一標籤後共有454條名目,而且這個數字每天都在增加。以安防為例,計算機視覺的應用通過攝像頭捕捉到有價值的信息,其技術落地確實解決了行業的痛點並提升了效率。但安防行業內,大部分政企客戶已有穩定的方案提供商,這些廠商中不乏許多大型上市公司,也就是說市場渠道並不是一個技術創新公司能夠簡單突圍的。36氪了解到,行業頭部的幾家創業公司大多還未迎來盈虧平衡點,即使有盈利,相比於本身十幾億甚至數十億的估值,未來還有很長的路要走。
  • 中國AI開源再進擊!商湯升級AI算法開放體系,開放超600種預訓練模型
    通過與商湯科技聯合創始人、香港中文大學信息工程系教授林達華深入交流,我們試圖解讀OpenMMLab升級背後,商湯科技的開源初心、技術底氣和AI全棧能力。 但在深度學習突飛猛進發展的幾年間,深度學習在CV領域並沒有形成像OpenCV那樣的統一開源體系,谷歌、Facebook等很多科技巨頭只在單個方向單點的算法層面進行開源。 能不能為深度學習CV領域的一些重要方向建立統一而開放的代碼庫,並不斷將新的算法沉澱其中呢?一個想法在林達華心裡生根發芽。
  • 谷歌正式公布開源Fuchsia系統,號召開發者參與,鴻蒙要輸了?
    谷歌公布了開源Fuchsia作業系統?可能絕大部分人看到這裡,會在風中凌亂:這是什麼作業系統?還是由谷歌發布的?等到這次谷歌正式公開開源Fuchsia作業系統,號召所有開發者做貢獻的時候,沉寂了多年的它又浮出了水面。基於很多用戶不了解它,韓博士就先給大家介紹一波。什麼是開源Fuchsia作業系統?
  • 谷歌開放Fuchsia作業系統開源模型 方便公眾共同開發
    鴻蒙作業系統被認為是物聯網時代的作業系統,無獨有偶,谷歌在4年前就被發現了其也在布局物聯網時代的作業系統,該系統名為Fuchsia.12月8日,一直在git代碼庫中默默開發的Fuchsia作業系統,公開了原始碼模型,以便於公眾共同參與搭建Fuchsia作業系統。
  • 擊敗谷歌AI拿下「最強」稱號?Facebook AI開源聊天機器人Blender
    圖 | 谷歌 AI 對自家 Meena 的評價也是「最先進的聊天機器人」(來源:谷歌 AI)Facebook AI 在論文中也提到了 Meena,稱「由於谷歌沒有完全公開 Meena 模型和詳細的 SSA 評估標準,因此很難進行 100% 橫向比較。」不過,他們還是儘可能地找到了一些解決辦法,利用公開資料比較兩種模型。
  • 驍龍888每秒26萬億次運算的第六代AI引擎,玩出了什麼新花樣?
    以旗艦移動平臺高通驍龍 8 系列為例,去年推出的驍龍 865 的 AI 性能已經達到了每秒 15 萬億次運算(15 TOPS),是驍龍 855 的 2 倍,相比驍龍 845 提升達 5 倍。第六代高通神經網絡處理 SDK 不僅支持更多模型,對搭載驍龍平臺的筆記本的 AI 用例也實現了支持。  當然,為了讓開發者能夠輕鬆訪問高通的 AI 引擎,高通與谷歌就最新的 TensorFlow Micro 框架合作,針對 Hexagon 處理器和高通傳感器中樞進行優化,通過軟體充分發揮第六代 AI 引擎的硬體優勢。
  • 「開源」江湖前景廣闊,百度一馬當先推動人工智慧共同發展進步
    近日,權威科技媒體通過分析GitHub上的開源項目數據集GitHubArchive,得出2020和2019年度全球深度學習框架排名榜單,其中,百度飛槳PaddlePaddle均力壓谷歌TensorFlow,緊隨Facebook PyTorch之後,其搶眼的數據表現意味著在開發者積極貢獻代碼和項目、社區活躍、代碼迭代速度上一直保持著強勁的競爭力,已經成為了國內第一、世界第二的深度學習開源框架