Google Coral Edge TPU USB加速棒上手體驗

Edge AI是什麼?它爲什麼如此重要?

傳統意義上,AI解決方案須要強大的並行計算處理能力,長期以來,AI服務都是經過聯網在線的雲端基於服務器的計算來提供服務。可是具備實時性要求的AI解決方案須要在設備上進行計算 ,所以邊緣人工智能(Edge AI)正在逐漸進入人們的視野。python

雖然本質上AI計算可使用基於GPU的設備,但這套設備成本高昂,而且搭配很是繁瑣,好比對內存要求愈來愈高、能耗愈來愈大等。不管是從研究仍是創新角度來說,邊緣人工智能推理都正在成爲蓬勃發展的深度學習革命愈來愈重要的組成部分。android

與此同時手持設備(好比手機、平板等)日益普及,每一年都能賣掉幾十億臺,手機已然成爲平常使用最爲頻繁的設備,能夠預測對移動AI計算的需求也正在穩步增長。 所以,移動處理器的開發已經變得愈來愈以人工智能爲重點,這些處理器都具備用於機器學習的專用硬件,好比如今主流的手機CPU評測都會加上一項AI計算能力的跑分。git

目前從消費應用到企業應用都遍及 AI 的身影。隨着聯網設備數量的爆發式增加,以及對隱私/機密、低延遲時間和帶寬限制的需求,雲端訓練的 AI 模型須要在邊緣運行的狀況不斷增長。Edge TPU 是 Google 專門爲在邊緣運行 AI 而打造的 ASIC,它體型小、能耗低,但性能出色,讓您能夠在邊緣部署高精度 AI。從下圖能夠看出Edge TPU核心的面積僅有一美分的大概十分之一大小。github

圖片描述

Edge TPU能夠用來作什麼?

可使用Edge TPU在移動設備上訓練模型,但目前僅支持經過遷移學習在設備上從新訓練的分類模型,這種訓練方法是在Low-Shot Learning with Imprinted Weights這篇論文中提到的imprinted weight技術,此技術爲實時系統創造了許多可能性。而且,據相關評測顯示,Edge TPU是同類產品中計算速度最快的設備。web

市面上已經有的其餘AI邊緣推理硬件

雖然這是第一個Edge TPU,但這以前就已經有一些相似的AI專用硬件,例如:api

圖片描述

Coral Beta版

TPU,也稱張量處理單元(Tensor Processing Unit)主要供Google數據中心使用。對於普通用戶,能夠在Google雲端平臺(GCP)上使用,也可使用Google Colab來使用免費版。安全

圖片描述

谷歌在2019年國際消費電子展(以及今年的TensorFlow開發峯會上)首次展現了他們的Edge TPU,而後於三月份發佈了Coral Beta服務器

圖片描述
圖片描述

Beta版本包括開發板和USB加速器,以及用於生產目的的預覽版PCI-E加速器和模塊化系統(SOM)。app

圖片描述

USB Accelerator

Edge TPU USB Accelerator與任何其餘USB設備基本同樣,跟英特爾的MyriadVPU的差很少,但功能更強大。接下來咱們來一個開箱,而且稍微上手看看。框架

開箱

圖片描述
圖片描述

盒子中包含:

  • 入門指南
  • USB加速器
  • Type C USB數據線

入門指南

入門指南介紹了安裝步驟,你能夠很快完成安裝。包括模型文件在內的全部須要的文件能夠隨安裝包一塊兒在官網下載便可,安裝過程並不須要TensorFlowOpenCV這些依賴庫。

提示:必須使用Python 3.5,不然將沒法完成安裝。還須要將install.sh文件最後一行
python3.5 setup.py develop - user
改成
python3 setup.py develop - user

演示程序

Coral Edge TPU API文檔包括圖像分類和目標檢測的概述和演示程序。

Edge TPU API

在完成如下教程以前,關於Edge TPU API有如下注意事項:

  • 須要安裝Python的edgetpu模塊才能在Edge TPU上運行TensorFlow Lite模型。它是一個較高層的API,包含一些簡單的API以執行模型推理過程。
  • 這些API已經預先安裝在開發板上,但若是使用的是USB加速器,則須要自行下載。詳細信息請參閱此設置指南
  • 推理過程當中須要用到如下關鍵API:用於圖像分類的ClassificationEngine、用於目標檢測的DetectionEngine和用於遷移學習的ImprintingEngine

圖像分類

實現圖像分類的Demo很是簡單,好比能夠將下邊的圖片做爲ClassificationEngine接口的輸入:
圖片描述
圖片描述

目標檢測

與圖像分類同樣,咱們只須要調用一下DetectionEngine接口,就能夠將輸入圖片中的目標檢測出並用方框進行標識:

圖片描述

因爲默認配置會產生假負例,咱們能夠將默認示例程序中的閾值從0.05調整到0.5,另外將矩形的寬度調整爲5,能夠獲得如下結果:

圖片描述

因爲Coral仍只有測試版,API文檔中給出的細節不夠完整,但目前給出的部分用於以上示例已經足夠了。

注意事項

以上demo的全部代碼、模型和標註文件都隨安裝包中包含的庫文件一同在官網下載,根據目前已經給出的模型和輸入標註文件等,咱們能夠完成分類和檢測任務。

對於分類任務,結果返回排名前2的預測類別及對應的置信度得分;而對於目標檢測任務,結果將返回置信度得分及標註方框的各頂點座標,若輸入時給出類別標註,返回結果中也包含類別名稱。

樹莓派上性能的侷限性

不幸的是,業餘愛好者最喜歡樹莓派沒法充分發揮USB加速器的功能和速度。USB Accelerator使用USB 3.0端口,目前的樹莓派設備沒有USB 3USB type-C,而只能使用速度較慢的USB 2

目前,它只在Debian Linux上運行,但預計很快就會有支持其餘操做系統的方法。

深刻拓展

Edge TPU的幫助下,Coral還能提供哪些產品呢?

開發板(Dev Board)

做爲開發板來說,樹莓派一般是最受歡迎的選擇,但谷歌卻更推崇NXP i.MX 8M SOC(Quad-core Cortex-A53 與 Cortex-M4F)。有關開發版的更多信息,請參考此頁面

圖片描述

可是若是用於實驗,尤爲是僅需使用Edge TPU的狀況下,咱們更加推薦USB Accelerator

後續開發

若您已經使用開發板或USB Accelerator作出了不錯的prototype原型機,但後續須要將一樣的代碼應用於大規模生產環境,該怎麼辦呢?

谷歌已經預先想到這一點,能夠在產品列表中看到,下述模塊將用於企業支持,而且已經被標記爲 _即將上線_。

模塊化系統(System-on-module, SOM)

圖片描述

這是一個徹底集成的系統(包含CPU、GPU、Edge TPU、Wifi、藍牙和安全元件),採用大小爲40mm*40mm的可插拔模塊。

此模塊能夠用於大規模生產,製造商能夠按照本模塊所提供的指南生產本身喜歡的IO板,甚至上文提到的已經上市的開發板(Dev Board)都包含這個可拆卸的模塊,理論上只要拆下來就可使用。

PCI-E 加速器

關於PCI-E加速器的信息不多,但顧名思義,它是一個帶有PCI-E(快捷外設互聯標準,Peripheral Component Interconnect Express)的模塊,且有兩種變體,這相似於USB加速器,不過不一樣之處在於將USB接口換成了PCI-E,就像內存條或者網卡那樣,樹莓派也有PCI-E接口的Compute Module版本。

圖片描述

隨着各類外設模塊的誕生,能夠預料,一些企業級項目也將隨之誕生。谷歌Coral也這麼認爲,在他們的網站上有如下說法:

靈活易用,精準裁剪,適用於初創公司與大型企業。

Tensorflow與Coral項目

谷歌的產品大都與Tensorflow有關,目前,Edge TPU僅支持傳統的Tensorflow Lite版本的模型,Tensorflow Lite穩定版剛剛發佈,參見此頁面

目前,你須要經過一個網頁編譯器tflite模型轉換爲tflite-tpu模型。若是使用的是PyTorch或其餘框架也不用擔憂,能夠經過ONNX將模型轉化爲Tensorflow模型。

展望

儘管缺少對樹莓派的全面支持,以及Beta版本中文檔有限,但我對Coral項目保持樂觀態度。雖然沒法馬上肯定這種技術的發展前景,但對更強大、低能耗、高成本效益以及更具創新性的產品,咱們應當報以更高的指望。

好了,本次介紹就到這裏,這個系列的全文會收錄在個人github目錄,歡迎你們star和溝通:https://github.com/asukafighting/RaspberryPiHacker

相關文章
相關標籤/搜索