1. 程式人生 > >Building TensorFlow on Android

Building TensorFlow on Android

本篇文章翻譯自tensorflow官網,會加上自己的一些實操講解,便於大家快速執行起第一個移動端機器學習的demo。

為了讓你在Android上開始使用tensorflow,我們將通過兩種方式來構建我們的移動端的Tensorflow例子並將它部署到一個Android裝置上。

為什麼要選擇這些方法之一?

在Android上使用Tensorflow最簡單的方法就是使用Android Studio。如果你不打算自定義你的Tensorflow構建,或者如果你想使用Android Studio的編輯器和其他功能去構建一個app並且只是想新增TensorFlow,我們推薦你使用Android Studio。

如果您使用自定義操作,或有其他原因從頭開始構建Tensorflow,請向下滾動並檢視我們有關使用Bazel構建demo的說明。

使用Android Studio構建樣例

前提條件

如果還沒有,做以下兩件事情:

  • 安裝Android Studio,按照網址的介紹來操作即可。(注:自行搜尋好搭建Android的開發環境)
  • 從Github克隆Tensorflow倉庫

clone tensorflow

構建

1.開啟Android Studio,從歡迎介面,選擇Open an existing Android Studio project

Open an existing Android Studio project

2.然後定位到你拉下來的倉庫選擇tensorflow/examples/android

目錄,點選OK匯入到工作區。

如果它要求你執行同步Gradle,點選OK。
你可能需要安裝各種平臺和工具,直接點選安裝即可。
注:缺什麼就安裝什麼,保證所有要求的環境都是具備的。

3.開啟工程中android模組下的build.gradle檔案,找到nativeBuildSystem變數並且設定它為none如果它還沒設定。

// set to 'bazel', 'cmake', 'makefile', 'none'
def nativeBuildSystem = 'none'

如下圖所示:

nativeBuildSystem

4.點選run按鈕或者使用Run-> Run 'android'

從頂部選單。
如果它詢問你使用Instant Run,點選Proceed Without Instant Run
此外,你需要在裝置中啟用開發除錯選項才能插入Android裝置。

使用Android Studio將Tensorflow新增到您的應用程式

最簡單的方式就是新增以下行到你的Gradle構建檔案:

allprojects {
    repositories {
        jcenter()
    }
}

dependencies {
    compile 'org.tensorflow:tensorflow-android:+'
}

這會自動將Tensorflow的最新穩定版作為AAR下載並安裝到您的專案中。

使用Bazel構建Demo

另外一種方法在Android上使用Tensorflow就是使用Bazel構建一個apk並且使用ADB載入它到你的裝置當中。這個需要你知道一些構建系統和Android開發者工具的知識,但是我們將在這裡指導您完成基礎的操作。

  • 首先,按照我們的說明從原始碼安裝。這個會知道你通過安裝Bazel並且克隆Tensorflow程式碼。
  • 下載Android SDK和NDK如果你的環境還沒有它們。你至少需要NDK的12b版本,SDK的23版本以上。
  • 在Tensorflow原始碼,使用您本地的SDK和NDK路徑更新WORDSPACE檔案,其中包含和。
    具體如下圖所示:

WORDSPACE

  • 執行Bazel去構建Demo
bazel build -c opt //tensorflow/examples/android:tensorflow_demo
  • 使用ADB去安裝apk到你的裝置當中
adb install -r bazel-bin/tensorflow/examples/android/tensorflow_demo.apk

這個會在你的裝置當中安裝三個應用程式,都是Tensorflow演示的一部分。有關更多資訊,請參閱Android示例應用程式。

我們來看下安裝到手機的效果,如下圖所示:

demo

注:官網說有三個示例,但筆者執行的時候發現多了一個TF Speech,應該是做語音識別相關的應用,具體大家可以試下。

Android 示例應用程式

Android示例程式碼是一個構建和安裝三個示例應用程式的單個專案,這個三個示例應用程式都使用相同的基礎程式碼。示例應用程式都從手機攝像頭獲取視訊輸入:

  • TF Classify 使用Inception v3模型來標記來自Imagenet的類所執行的物件。Imagenet只有1000種類別,它會遺漏大多數日常生活中的物體,並且包含許多現實生活中不可能遇到的東西,所以結果往往會非常有趣。例如,沒有“人”的類別,相反,它往往會猜測它通常與人的照片相關的事物,例如安全帶或氧氣面罩。如果你想自定義此示例來識別你關心的物件,則可以使用Tensorflow for Poets codelab作為示例,以便根據你自己打資料來訓練模型。
  • TF Detect 使用多盒模型試圖在相機中任務的位置繪製邊框。對於每個檢測結果,這些框都有可信度的註釋。結果可能並不完美,因為這種物件檢測仍然是一個活躍的研究課題。Demo還包括光學追蹤,當物體在幀之間移動時,會比Tensorflow推斷執行更加頻繁。這樣提高了使用者體驗,因為明顯的幀速率更加快,但是它還能夠估計哪些框指向幀之間的相同物件,這對於隨著時間的推移計數物件是重要的。
  • TF Stylize 在攝像頭上實現實時風格的傳輸演算法。你可以選擇使用哪種樣式,並使用螢幕底部的調色盤在它們之間進行混合,也可以將處理的解析度切換為更高或更低的rez。

注:看翻譯會懵,直接執行Demo看下效果就清楚三個示例具體用來幹啥的了。

Android推理庫

由於Android應用程式需要用Java編寫,核心Tensorflow是C++編寫的,所以Tensorflow有一個JNI來連結兩者。它的介面只針對推理,所以它提供了載入圖表,設定輸入和執行模型來計算特定輸出的能力。您可以在TensorFlowInferenceInterface.java中檢視最少的一組方法的完整文件。

這些Demo使用了這個介面,因此它們是查詢示例用法的好地方。您可以在ci.tensorflow.org下載預先構建的二進位制jar檔案。

相關推薦

Building TensorFlow on Android

本篇文章翻譯自tensorflow官網,會加上自己的一些實操講解,便於大家快速執行起第一個移動端機器學習的demo。 為了讓你在Android上開始使用tensorflow,我們將通過兩種方式來構建我們的移動端的Tensorflow例子並將它部署到一個

TensorFlow on Android:物體識別

說在前面:達人課是GitChat的一款輕閱讀產品,由特約講師獨家釋出。每一個課程你都可獲得6-12篇的深度文章,同時可在讀者圈與講師互動交流。GitChat達人課,讓技術分享更簡單。進入我的GitChat 作者介紹 付強,十餘年從業經驗,

Experimenting with TensorFlow on Android Part 1

Let us start by installing TensorFlow, I tried a couple methods of installing it and ended up using dockerdocker run -it gcr.io/tensorflow/tensorflow:lates

TensorFlow on Android:訓練模型

文章推薦 說在前面:達人課是GitChat的一款輕閱讀產品,由特約講師獨家釋出。每一個課程你都可獲得6-12篇的深度文章,同時可在讀者圈與講師互動交流。GitChat達人課,讓技術分享更簡單。進入我的GitChat 作者介紹 付強,

remount issue on android 7.0

n) 重新 tar 版本 all vfat art memmove html http://blog.chinaunix.net/uid-23141914-id-5754416.html 最近在新版本的android 7.0上,發現filesystem的remount老是報

A Newbie’s Install of Keras & Tensorflow on Windows 10 with R

tool per nvi real whole tutorial power suppose rom This weekend, I decided it was time: I was going to update my Python environment and g

Ubuntu16.04編譯tensorflow官方Android demo

1.下載tensorflow官方程式碼 git clone --recurse-submodules https://github.com/tensorflow/tensorflow.git 2.下載Android SDK和Android NDK Android SDK下載:在安裝A

QT on Android,for armeabi-v8a的ABI不支援問題

  第一次寫部落格,主要是寫下一些筆記,問題和思考。   最近在圖書館借了本Qt on Android核心程式設計,安曉輝著,想試試用QT來寫Android程式。   書上的QT版本是5.2.0,QT Creator的版本是3.0。   按照書的流程

tensorflow on win7 / win10 64

主要步驟: 0,安裝 Anaconda3; 1,  protobuf 3.1.0 pip install protobuf-3.1.0-py2.py3-none-any.whl  吧這個檔案下載到當前活動路徑中。  2.   numpy [A

Easy Clean architecture on Android

在我這幾年的學習和成長中,深刻的意識到搭建一個Android應用架構是件非常痛苦的事,它不僅要滿足不斷增長的業務需求,還要保證架構自身的整潔,這讓事情變得非常具有挑戰,但我們必須這樣做,因為健壯的Android架構是一款優秀APP的基礎。本文的程式碼示例可以從github中獲得,倉庫地址是*

Tensorflowandroid studio 上執行

環境: win10 64位 其中tensorflow-master\tensorflow\examples\android為官方提供的demo 第二步:直接將demo引入studio中。 如果直接編譯,會報Fill找不到錯誤,可以忽略,開始第三步 第三步

Qt on Android 讓 Qt Widgets 和 Qt Quick 應用全屏顯示

                    Android 系統版本很多,較新的 4.4 ,較老的 2.3 ,都有人用。 Qt on Android 開發的 Android 應用,預設在 Android 裝置上是非全屏的。而有些應用的需求是全屏顯示,比如遊戲。那麼怎麼樣才能做到這點呢?    我們需要分 Andr

Tensor on Android學習筆記(三) ----將Yolo移植到android平臺

yolo v2移植到android已經有很多案例了專案地址在https://github.com/chentyjpm/DarknetDemoInAndroid不過原博主提供的apk是經過優化的,我自己編譯的還達不到原博主的效果,還需要再改善然後我們要做的就是將v3版本移植夠來

Tensor on Android學習筆記(二) ---將自己訓練的YOLOv3模型匯入TenserFlow

v2版本的使用darkflow轉換後移植就可以了https://github.com/thtrieu/darkflow但是我們是用Yolov3版本訓練的模型,這個時候就遇到了問題,目前想曲線救國,但是最終沒有成功思路是通過keras做中轉,先轉換為.h5的模型,在轉為.pb先

Building OpenCascade on Windows with Visual Studio

Building OpenCascade on Windows with Visual Studio 摘要Abstract:詳細說明OpenCascade的編譯配置過程,希望對你編譯OpenCascacde有所幫助。本文內容來自OCCT的Overview文件,詳細資訊可參考之。 關鍵字Key 

Mobile Development with C#:Building Native iOS, Android, and Windows Phone Applications

Mobile Development with C#, 該書詳細介紹使用C#開發跨平臺移動應用,基於Mono平臺,使用.Net開發語言,開發多移動平臺應用,iOS,Android,Windows Phone。 書籍下載

Automate any USSD Service on Android

Automate any USSD Service on AndroidA Step by Step Example with the Hover SDKSuppose you’re an Android developer distributing an app in Tanzania, and you w

Ask HN: Why does Brave paint so slowly on Android?

I'm using a P20 Pro. It's not the best phone but it's not sluggish either. In Brave browser, even to paint simple web pages, I often see it painting elemen

Just tell Google Assistant to play Netflix on Android TVs

Until now, casting video to an Android TV through a Google Assistant-enabled device such as a Google Home or the new JBL soundbar has been a fairly simple

Android Developers Blog: Verifying your Google Assistant media action integrations on Android

Posted by Nevin Mital, Partner Developer Relations The Media Controller Test (MCT) app is a powerful tool that allows you to test the intricacies o