當前位置:
首頁 > 新聞 > 如何使用谷歌Mobile Vision API 開發手機應用

如何使用谷歌Mobile Vision API 開發手機應用

機器之心原創

參與:QW、李亞洲


一年一度的谷歌開發者大會 Google I/O 昨日在山景城開幕,在首日的 Keynote 中,谷歌宣布了一系列新的硬體、應用、基礎研究等。而在下午面向開發者的 session 中,也有很多有關機器學習的內容值得我們學習。所以這屆 Google I/O 並非略顯乏味,反而充實了更多機器學習內容。在這篇文章中,機器之心根據視頻為大家介紹了一個面向初學者的教程:如何使用谷歌 Mobile Vision API 在手機上開發應用。

在此 Session 中,來自谷歌 Mobile Vision 團隊的 Yulong Liu、Hsiu Wang 對 Mobile Vision API 的開發應用進行了講解。

谷歌 Mobile Vision 團隊的工作是提供最新的計算機視覺演算法,並在低延遲、無網路訪問的情況下在設備上實現。而 Mobile Vision API 既能在安卓手機上部署,也能在 iOS 上部署。

在視頻中,Hisu 演示了如何使用 Mobile Vision 的 Face、Barcode 和 Text API。在視頻演示中,使用 Barcode API 手機掃描廣告頁上的二維碼,就能自動跳轉到產品頁;Face API 可讓你虛擬試戴產品;最後,使用 Text API 掃描信用卡快速支付。

如何使用谷歌Mobile Vision API 開發手機應用

Mobile Vision API 包含四大組件:共用 API(Common Utility API)以及上面介紹的三種特定應用 API。共用 API 提供構建應用通道的基礎設施與模塊。

1.Barcode API

  • 支持 1D 條形碼和 2D 二維碼類型

  • 支持多種條形碼格式

  • 應用場景:跟蹤並識別任意條形碼或二維碼

2.Face API

  • 捕捉臉部圖像,支持不同的角度以及非常誇張的表情

  • 生成 Facial Landmarks 用於定位等業務

  • 臉部表情分類

  • 應用場景:生成用戶趣味頭像,識別商品並推薦購買方式,等等等等

3.Text API

  • 支持 20 種以上拉丁語系語言

  • 支持段、句、詞分析

  • 應用場景:信用卡信息提取,名片信息提取,實時翻譯,等等等等

在詳細講解代碼之前,Hisu 先介紹了 Mobile Vision API 的基礎概念與使用案例。最簡單的使用案例就是圖像檢測:如果想要建立一個檢測器,先要提供一張圖像,然後運行演算法產生檢測結果。

Google Mobile Vision (GMV) 同時支持 iOS 與 Anriod 平台,用戶只需根據 API 與業務需求簡單地設定以下三個類即可構建完整的圖像處理 Pipeline:設定 Detector 類用於捕捉圖像內容;設定 Processor 類允許用戶靈活地處理單張或多張圖像(即 Focus 模式與 Multi 模式);最後用戶只需完整地重構 Tracker,根據圖像信息完成業務邏輯。無論是 iOS 還是 Andriod,遵循以上流程即可構建 GMV 應用。

如何使用谷歌Mobile Vision API 開發手機應用

以上是完整的流程。攝像頭源內部使用了 Camera API,它將圖像幀傳遞給檢測器,檢測器運行演算法來生成檢測結果。然後結果被傳遞給處理器。處理器是首個後處理(post-processing)步驟,它負責篩除、合并、或傳遞檢測到的 item 到相關 Tracker。

總結來就是兩個步驟:

1. 配置追蹤管道;

2. 部署 Tracker 實時追蹤時間變化。

圖中的 Camera Source、Detector、Processor 都由 Mobile Vision API 提供,用戶要做的就是基於自己商業邏輯編寫代碼,實現 Tracker。

Barcode API

如今二維碼處處可見,開發手機端的二維碼掃描應用也變的非常常見。使用 Barcode API 前,只需在不同的平台中部署相應的 Dependency。Android 平台由 Google Play 提供服務;而在 iOS 平台中可以使用 CocoaPods 包管理工具安裝。下面是開發安卓手機二維碼應用的代碼演示。

首先,開發者需要指定具體的編譯工具與運行環境依賴,不同的 GMV API 需要不同的依賴,開發者只需根據業務指定 android:value 為 barcode, face 或 text。在用戶第一次使用時,開發者所制定的內容會自動下載到設備中(即需要用戶連接至網路環境中);一旦下載完成後,用戶即可在無網路連接的環境下使用相應的 GMV 應用和服務。

如何使用谷歌Mobile Vision API 開發手機應用

完成對 Camera Source 的初始化。

如何使用谷歌Mobile Vision API 開發手機應用

接下來開發者需要根據業務需求和 GMV API 構建自己的應用。在 Detector 部分中,開發者可以指定不同的 barcode 格式用於 detector 檢測,例如 QR 二維碼或是 UPA 條形碼;接著輸入某一幀圖像或是圖片後,Detector 的實例即可自動讀取相關的信息;最後用戶可以根據需求調用 valueAt 方法獲得碼值或是使用 cornerPoints 屬性獲取對應的位置。此外,Barcode 類中還提供了標準的條碼類型,開發者可以根據不同的條碼類型對應的提取相應的信息。下圖的 Demo 展示了整個過程:

如何使用谷歌Mobile Vision API 開發手機應用

下一步就是開始 Processor 步驟:Mobile Vision API 提供兩種 Focusing Processor 和 Multi Processor。下圖演示了 Focusing Processor 類,它能讓你在多二維碼的環境中專註分析某一個二維碼,用戶可以調整設備攝像頭拍攝的位置切換至不同的二維碼。而 Multi Processor 則提供了同時處理圖像中所有二維碼的能力,開發者可以使用工廠模式進行不同二維碼的處理。

如何使用谷歌Mobile Vision API 開發手機應用

如何使用谷歌Mobile Vision API 開發手機應用

最後則是重載 Tracker 類完成所有的業務邏輯。在 Barcode 模式中,開發者至少需要定義 4 個方法來處理不同的情況:分別是處理新掃描到的碼、在未探測到新碼時如何更新當前的碼、如何處理未探測到任何碼的情況,以及完成所有任務後如何存儲文件或是關閉服務等清理操作。

如何使用谷歌Mobile Vision API 開發手機應用

整體流程如下:

如何使用谷歌Mobile Vision API 開發手機應用

Barcode API 在 iOS 系統上也可用,以下是 iOS 平台編譯環境的依賴。

如何使用谷歌Mobile Vision API 開發手機應用

iOS 系統上的 Pipeline 與安卓系統非常相似,只是在 AVCaptureSession 類的初始化與語法上有所區別。

如何使用谷歌Mobile Vision API 開發手機應用

Face API

Face API 可以準確的捕捉用戶的臉部,但並不提供識別的支持。開發者可以使用 Face API 構建許多有趣的應用,例如根據用戶的照片生成有趣的頭像,或是聯合 Google Cloud Vision API 分析用戶的情緒。同時,Face API 允許開發者捕捉到極其誇張的面部表情,輕而易舉地幫助喜愛搞怪的用戶完成屬於他們自己的圖像應用。

Facial Landmarks 則是另一項特性,該特性可以定位用戶面部的特徵,如眼睛與嘴巴。該項功能允許開發者實時地追蹤用戶面部並完成相應的業務,如在視頻中為用戶添加酷炫的太陽鏡。

如何使用谷歌Mobile Vision API 開發手機應用

臉部表情分類的特性允許開發者實時地獲取用戶的表情信息,如用戶眼睛是否睜開,或用戶是否在微笑;根據這些信息開發者可以高度定製自己的業務。

如何使用谷歌Mobile Vision API 開發手機應用

儘管 Face API 功能豐富,其使用方法卻與 Barcode API 一樣簡單,程序的邏輯也基本一致。首先設置運行依賴中的 android:value 為 face,接下來完成對 Detector 類、Processor 類與 Tracker 類的設置與業務邏輯。

在 Face Detector 類中,開發者可以調用多種方法獲取圖像中用戶臉部的位置、對應表情的概率以及 Facial Landmarks 用於之後的處理。

如何使用谷歌Mobile Vision API 開發手機應用

下圖展示了單個臉部的追蹤代碼,開發者可以使用 LargestFaceFocusingProcessor 類來指定捕捉單個面部表情。這個類可以將 detector 實例捕捉到的圖像進行處理並將結果傳至 tracker 實例完成相應的業務。

如何使用谷歌Mobile Vision API 開發手機應用

多個臉部的實時處理並沒有太多不同,開發者只要使用 MultiProcessor 類對圖像進行處理,同時重載 Tracker 方法使用工廠模式對多個臉部進行處理。下圖代碼中高亮的部分則是使用 MultiProcessor 與 FocusingProcessor 不同的地方。

如何使用谷歌Mobile Vision API 開發手機應用

如何使用谷歌Mobile Vision API 開發手機應用

在 Tracker 的定義中,開發者需要指定不同的方法來處理以下兩種情況:第一次檢測到用戶面部時應該如何處理,如根據 landmarks 為用戶立刻添加一副墨鏡;實時地追蹤用戶的面部相對位置的變化與拍攝角度的變化,調整當前的添加的墨鏡位置。下圖為簡單的定義:

如何使用谷歌Mobile Vision API 開發手機應用

以上為 Face API 在安卓系統的 Demo,我們可以看到使用該 API 可以簡單高效地構建不同的應用。在 iOS 系統上,整體流程仍然大致相同:

如何使用谷歌Mobile Vision API 開發手機應用

如何使用谷歌Mobile Vision API 開發手機應用

如何使用谷歌Mobile Vision API 開發手機應用

Text API

Text API 目前只支持基於拉丁語系的語言,並不支持中文,這使得該 API 對於國內的開發者而言並無太多驚喜可言。然而,對於需要處理英文或其他語言的業務該 API 則允許開發者從段、句、詞等不同角度進行分析與信息提取。下圖中 textRecognizer 實例允許開發者使用 getLanguage 方法獲取語言,這意味著開發者無需進行任何假設即可實時自動地獲得當前的語言信息;getBoundingBox 方法允許開發者處理文字的相對位置,標準化輸入輸出的格式;getValue 方法允許開發者獲取整段的文字信息,或是迭代式的使用 getComponents 方法獲取句、詞信息。至於整體的 Text API 使用流程,經過 Barcode 和 Face 的介紹後,相信大家已經十分熟悉了。幾乎相同的流程,允許開發者快速地上手不同的 API,部署不同的應用。

如何使用谷歌Mobile Vision API 開發手機應用

如何使用谷歌Mobile Vision API 開發手機應用

Tips:

  1. 由於 GMV API 有大約 60 毫秒的延遲,避免將 Detector 部署在 UI 線程,而在後台線程中可保證最佳的用戶體驗避免卡頓的畫面。

  2. 儘可能的在使用 API 前完成圖像的預處理。實際應用中,用戶不可避免地會處於光線較差或是抖動的拍攝環境中,精細的圖像預處理可以幫助 API 獲取更清晰的圖像,從而提高使用的效率與準確率。

  3. 與 Google Cloud Vision API 共同使用。GMV API 提供了低延遲、無網路訪問的情況下基本的圖像識別與處理功能,而開發者可以在本地設備處理圖像後聯合使用 GCV API 獲得更加豐富的功能。例如:GMV 可以在實時拍攝的視頻中不斷檢索判斷圖像中是否出現面部表情或圖像質量是否適合 GCV 使用,一旦滿足使用條件即可使用 GCV 提供的高級功能判斷用戶的情緒狀態等。

更多有關 Mobile Vision API 的資源,可查看下圖:

如何使用谷歌Mobile Vision API 開發手機應用

今年的谷歌 I/O 大會有大量關於機器學習、TensorFlow 的技術 session,機器之心會持續為大家進行介紹。

如何使用谷歌Mobile Vision API 開發手機應用

如何使用谷歌Mobile Vision API 開發手機應用

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

機器之心深度研學社每周乾貨:2017年第20周
谷歌發布Quick Draw:5千萬張矢量圖,345個類別
小米電視4正式發布,推出人工智慧開放平台
識別惡性腫瘤、篩查視網膜病變,谷歌正在用機器學習改變醫療
阿里巴巴「NASA計劃」新進展:刷新視覺計算世界紀錄

TAG:機器之心 |

您可能感興趣

適用於開發者的Magic Leap One AR耳機
使用C#開發Android應用之WebApp
國內應該能用:谷歌暫停Allo開發將精力轉向開發Android Message
Chrome即將登陸聯想Mirage Solo VR一體機;Oculus開發主管:開發者應考慮內容的全平台適用性
Fieldbit和InfinityAR宣布合作開發AR智能眼鏡
如何開發一個基於 Docker 的 Python 應用
Mozilla推出開源瀏覽器Firefox Reality,專為VR一體機開發
Mozilla 推出開源瀏覽器 Firefox Reality,專為 VR 一體機和 AR 頭顯開發
為什麼 Python 開發人員應該使用 Pipenv
Discuz API JSON 適用於IOS及Android移動端開發
Oculus Go開發移植必知,支持Gear VR應用,不支持谷歌Play、舊SDK
適用於Android和iPhone的Swype鍵盤停止開發
IBM宣布針對雲原生應用推出Microclimate開發平台
Oculus Go開發移植必知,支持Gear VR應用,不支持谷歌Play
Unity為手機AR推出跨平台開發工具AR Foundation
《Pokemon Go》開發商收購AR API製作公司EscherReality
MIT開發Flight Goggles VR系統訓練無人機
無人機開發商PrecisionHawk收購Droners、AirVid,建造行業專才網路
C#開發Android應用之WebApp
Android 開發應該掌握的 Proguard 技巧