摘要:我們都知道,谷歌有一個開源庫叫做,可被用在安卓系統中實現機器學習。近期,我會寫一系列關于機器學習的文章,這樣每個人都能夠學到如何為機器學習搭建模型。現在,在上創建安卓示例工程吧。
我們都知道,谷歌有一個開源庫叫做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)文件。
現在我們有了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文件夾,單擊右鍵,添加庫。
讀者問答
Q:我很疑惑要怎么連接到‘so’庫?也沒有任何一行像’System.loadLibray’的代碼?
A:System.loadLibrary已經寫在TensorFlow jar中了。
Q:所以這是一個C++應用還是Java應用啊?你用的是什么語言?
A:這是一個用Java語言編寫的安卓應用,它通過Java本地接口(JNI: Java Native Interface)調用C++做預測(機器學習)。
歡迎加入本站公開興趣群商業智能與數據分析群
興趣范圍包括各種讓數據產生價值的辦法,實際應用案例分享與討論,分析工具,ETL工具,數據倉庫,數據挖掘工具,報表系統等全方位知識
QQ群:81035754
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/4542.html
摘要:現場宣布全球領先的深度學習開源框架正式對外發布版本,并保證的本次發布版本的接口滿足生產環境穩定性要求。有趣的應用案例皮膚癌圖像分類皮膚癌在全世界范圍內影響深遠,患病人數眾多,嚴重威脅身體機能。 前言本文屬于介紹性文章,其中會介紹許多TensorFlow的新feature和summit上介紹的一些有意思的案例,文章比較長,可能會花費30分鐘到一個小時Google于2017年2月16日(北京時間...
摘要:谷歌表示,與搜索并列,是谷歌機器學習技術最重要的產品服務載體。谷歌宣布了基于機器學習技術的全面升級,很可能是其誕生以來的最大升級。在去年的大會上,谷歌宣布了其第一代。 showImg(https://segmentfault.com/img/bVNTKT?w=900&h=385); Google I/O Google I/O 是由 Google 舉行的網絡開發者年會,討論的焦點是用 G...
摘要:在我已經制作完成一輛可以運行的遙控車時,公司發布了一個自駕車項目,來展示自動駕駛汽車的工作原理。需要注意的是,這里用的都是語言而非,其主要原因有兩個一方面,近來似乎已成為運用機器學習技術時實際使用的語言。 最近,Mapbox 的 Android 工程師 Antonio 使用計算機視覺和機器學習技術,為他的女兒 Violeta 重新制作了一臺遙控車。接下來我們看看 Antonio 是如何...
閱讀 2845·2021-10-21 09:38
閱讀 2750·2021-10-11 10:59
閱讀 3021·2021-09-27 13:36
閱讀 1649·2021-08-23 09:43
閱讀 789·2019-08-29 14:14
閱讀 3033·2019-08-29 12:13
閱讀 3202·2019-08-29 12:13
閱讀 309·2019-08-26 12:24