日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习:如何在安卓上集成TensorFlow

發布時間:2024/1/17 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习:如何在安卓上集成TensorFlow 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


我們都知道,谷歌有一個開源庫叫做TensorFlow,可被用在安卓系統中實現機器學習。換言之,TensorFlow是谷歌為機器智能提供的一個開源軟件庫。

我在網絡上搜尋了很久,都沒有找到在安卓上搭建TensorFlow的簡單的方法或實例。仔細查閱許多資料以后,我終于可以搭建它了。于是,我決定把我搭建的過程寫出來,這樣其他人就不必再浪費時間了。

這篇文章是寫給那些熟悉機器學習并且知道怎樣為機器學習搭建模型的人的(在這個示例中我會使用一個預訓練模型)。近期,我會寫一系列關于機器學習的文章,這樣每個人都能夠學到如何為機器學習搭建模型。


從搭建安卓上的機器學習模型過程講起

我們需要知道的幾個要點:

  • TensorFlow的核心是用C++編寫的;

  • 為了在安卓上搭建TensorFlow,我們需要用JNI(Java本地接口)來調用C++函數,比如說loadModel,getPredictions,等等;

  • 我們會用到.so(shared object,即共享對象)文件,它是C++編譯文件;還會用到jar文件,它由能夠調用本地C++的Java?API組成。之后,我們就可以調用Java?API輕松地把事情做好;

  • 所以我們需要jar(Java?API)和一個.so(C++編譯)文件;

  • 我們必須要有一個預訓練模型文件和一個用于分類的標簽文件。

我們會做以下的目標檢測:

編譯jar和.so文件

注意:--recurse-submodules對于提取子模塊(pull submodules)很重要。

在這里(https://developer.android.com/ndk/downloads/older_releases.html#ndk-12b-downloads)下載NDK。

下載安卓SDK,或者,我們也可以從Android Studio?SDK提供路徑。

安裝Bazel(https://bazel.build/versions/master/docs/install.html)。Bazel是TensorFlow的主要編譯系統。

現在,編輯工作空間(WORKSPACE),我們可以在早先克隆的TesnsorFlow根路徑中找到工作空間(WORKSPACE)文件。


我們的SDK和NDK路徑就跟下面一樣:

然后編譯生成.so文件:

將armeabi-v7a換成我們所需要的目標架構。

庫會被放置在:

編譯Java副本:

我們可以在這里找到JAR文件:

現在我們有了jar和.so文件。你也可以從下面的工程中直接提取使用我已經建立好的.so文件和jar。

我已經在這里(https://github.com/MindorksOpenSource/AndroidTensorFlowMachineLearningExample)創建了一個完整可運行的示例應用。

但是,我們需要預訓練模型和標簽文件。

在這個例子中,我們會使用Google預訓練模型,它實現了在一張給定的照片上做目標檢測。

解壓縮zip文件,我們就會得到imagenet_comp_graph_label.strings.txt(目標標簽)以及tensorflow_inception_graph.pb(預訓練模型)。

現在,在Android Studio上創建安卓示例工程吧。

將imagenet_comp_graph_label.strings.txt(目標標簽)以及tensorflow_inception_graph.pb放進assets文件夾。

將libandroid_tensorflow_inference_java.jar放進lib文件夾,單擊右鍵,添加庫。

在主目錄新建一個jniLibs文件夾并且將libtensorflow_inference.so放到jniLibs/armeabi-v7a文件夾中。

現在,我們就可以調用TensorFlow Java API了。

TensorFlow Java API通過TensorFlowInferenceInterface類開放了所有需要的方法。

現在,我們可以用模型路徑調用TensorFlow Java API并且加載它了。

然后,我們可以輸入一張圖片來獲取預測結果。

如果想要體會完整的流程,克隆這個項目(https://github.com/MindorksOpenSource/AndroidTensorFlowMachineLearningExample),搭建并運行它吧。

如果你在搭建這個項目的過程中有任何問題的話,聯系我,我會非常樂意幫助你。

Happy Coding:)


讀者問答


Q:我很疑惑要怎么連接到‘so’庫?也沒有任何一行像’System.loadLibray’的代碼?

A:System.loadLibrary已經寫在TensorFlow jar中了。

Q:所以這是一個C++應用還是Java應用啊?你用的是什么語言?

A:這是一個用Java語言編寫的安卓應用,它通過Java本地接口(JNI: Java Native Interface)調用C++做預測(機器學習)。


原文發布時間為:2017-04-27

本文來自云棲社區合作伙伴“大數據文摘”,了解相關信息可以關注“BigDataDigest”微信公眾號

總結

以上是生活随笔為你收集整理的机器学习:如何在安卓上集成TensorFlow的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。