中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

如何將模型部署到安卓移動端,這里有一份簡單教程

2018-07-20    來源:raincent

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用
本文介紹了如何利用 TensorFlow Mobile 將 PyTorch 和 Keras 模型部署到安卓移動端。

截至 2018 年,全球活躍的安卓設(shè)備已經(jīng)超過了 20 億部。安卓手機的迅速普及在很大程度上得益于各種各樣的智能應(yīng)用,從地圖到圖片編輯器無所不有。隨著深度學(xué)習(xí)技術(shù)的興起,移動應(yīng)用注定會變得更加智能。深度學(xué)習(xí)加持下的下一代移動應(yīng)用將專門為你學(xué)習(xí)和定制功能。微軟的「SwiftKey」就是一個很好的例子,它能夠通過學(xué)習(xí)你常用的單詞和短語來幫助你更快地打字。

計算機視覺、自然語言處理、語音識別以及語音合成等技術(shù)可以極大地提高移動應(yīng)用程序各個方面的用戶體驗。幸運的是,人們現(xiàn)在已經(jīng)開發(fā)出了大量工具,用于簡化在移動應(yīng)用中部署和管理深度學(xué)習(xí)模型的過程。在本文中,作者將向大家介紹如何使用 TensorFlow Mobile 將 Pytorch 和 Keras 模型部署到移動設(shè)備上。

使用 TensorFlow Mobile 將模型部署到安卓設(shè)備上包括三個步驟:

將訓(xùn)練好的模型轉(zhuǎn)換成 TensorFlow 格式;

向安卓應(yīng)用添加 TensorFlow Mobile 依賴項;

編寫相關(guān)的 Java 代碼,在你的應(yīng)用中使用 TensorFlow 模型執(zhí)行推斷。

在本文中,我將帶你熟悉以上的整個流程,最終完成一個嵌入圖像識別功能的安卓應(yīng)用。

環(huán)境設(shè)置

在本教程中,我們將使用 Pytorch 和 Keras,選擇你偏好的機器學(xué)習(xí)框架,并按照說明進行操作。因此,你的環(huán)境設(shè)置取決于你選擇的框架。

第一步,安裝 TensorFlow:

pip3 install tensorflow

如果你是 PyTorch 開發(fā)者,請確保你已經(jīng)安裝了最新版本的 PyTorch。關(guān)于安裝 PyTorch 的說明,請查閱我早前編寫的這篇文章(https://heartbeat.fritz.ai/basics-of-image-classification-with-pytorch-2f8973c51864)。

如果你是一名 Keras 開發(fā)者,你可以使用下面的命令安裝相關(guān)開發(fā)環(huán)境:

pip3 install keras
pip3 install h5py

Android Studio(精簡版 3.0)

https://developer.android.com/studio

將 PyTorch 模型轉(zhuǎn)換為 Keras 模型

本節(jié)僅針對于 PyTorch 開發(fā)者。如果你使用的是 Keras 框架,你可以直接跳到「將 Keras 模型轉(zhuǎn)換為 TensorFlow 模型」這一節(jié)。

我們需要做的第一件事就是將 PyTorch 模型的參數(shù)轉(zhuǎn)化為其在 Keras 框架下等價的參數(shù)。為了簡化這個過程,我編寫了一個腳本來自動化地進行這個轉(zhuǎn)換工作。在這篇教程中,我將使用 Squeezenet,這是一種準確率還不錯且規(guī)模非常小的移動架構(gòu)。你可以通過這個鏈接下載預(yù)訓(xùn)練好的模型(大小僅僅只有 5mb!):https://download.pytorch.org/models/squeezenet1_1-f364aa15.pth。

在轉(zhuǎn)換權(quán)重之前,我們需要在 PyTorch 和 Keras 中定義 Squeezenet 模型。

在兩個框架中都定義 Squeezenet,然后使用下面的方法將 PyTorch 框架的權(quán)重遷移到 Keras 框架中。

創(chuàng)建一個 convert.py 文件,引入下面的代碼,并且運行腳本。

在完成了上述權(quán)重轉(zhuǎn)換工作后,你現(xiàn)在只需將 Keras 模型保存為 squeezenet.h5。此時,我們可以將 PyTorch 模型拋在腦后,繼續(xù)進行我們的下一步工作。

將 Keras 模型轉(zhuǎn)化為 TensorFlow 模型

此時,你已經(jīng)有了一個從 PyTorch 模型轉(zhuǎn)換而來的 Keras 模型,或者直接使用 Keras 訓(xùn)練得到的模型。你可以通過這里的鏈接(https://github.com/OlafenwaMoses/ImageAI/releases/download/1.0/squeezenetweightstfdimorderingtfkernels.h5)下載預(yù)訓(xùn)練好的 Keras Squeezenet 模型。下一步,將整個模型架構(gòu)和權(quán)重轉(zhuǎn)換成一個可用于實際生產(chǎn)的 TensorFlow 模型。

創(chuàng)建一個新的 ConvertToTensorflow.py 文件,添加以下代碼。

上述代碼將 squeezenet.pb 保存到了我們的 output_dir 文件夾中。它還在同一個文件夾中創(chuàng)建了 TensorBoard 事件文件。

為了對模型有一個更清晰的理解,你可以在 TensorBoard 中對其可視化。

你需要打開命令提示符,輸入:

tensorboard –logdir=output_dir_path
output_dir_path 即 output_dir 的路徑。

當你成功啟動 TensorBoard 后,你將看到下面的對話框,請求你打開 COMPUTER_NAME:6006 的 url 鏈接。

 

 

在你最喜歡的瀏覽器中輸入 URL 地址,會顯示出下圖所示的界面。

 

 

請雙擊 IMPORT 來可視化你的模型。

仔細查看模型,并且請注意輸入和輸出節(jié)點的名字(架構(gòu)中的第一個和最后一個節(jié)點)。

如果你像我在前面的代碼中那樣命名你的網(wǎng)絡(luò)層,那么它們的名稱應(yīng)該分別是 input_1 和 output_1。

至此,我們的模型已經(jīng)完全準備就緒,可以進行部署了。

將 TensorFLow Mobile 添加到你的項目中

TensorFlow 有兩個移動程序庫——「TensorFlow Mobile」和「TensorFlow Lite」。Lite 版本是為極小規(guī)模的模型設(shè)計的,整個依賴項僅占用大約 1Mb 的空間。Lite 中的模型也經(jīng)過了更好的優(yōu)化。最近,在安卓 8 及更高版本中,TensorFlow Lite 使用安卓神經(jīng)網(wǎng)絡(luò) API 進行加速。然而,與「TensorFlow Mobile」不同,Lite 并不能直接用于生產(chǎn),因為其中一些層的表現(xiàn)可能沒有如預(yù)期一樣好。此外,Windows 系統(tǒng)至今還不支持對 Lite 庫的編譯,以及將其模型轉(zhuǎn)換為本地格式。因此,在這篇教程中,我堅持使用 TensorFlow Mobile。

接下來,如果你沒有現(xiàn)有的安卓項目,請在 Android Studio 中創(chuàng)建一個。在你的 build.gradle 文件中添加 TensorFlow Mobile 依賴。

implementation ‘org.tensorflow:tensorflow-android:+’

Android Studio 將向你提示同步 gradle(一種項目自動化構(gòu)建開源工具)。點擊 Sync Now,等待同步完成。

此時,你的環(huán)境就已經(jīng)完全設(shè)置好了。

在移動 app 中執(zhí)行推斷

在編寫代碼進行實際推斷之前,你需要將轉(zhuǎn)換后的模型(squeezenet.pb)添加到應(yīng)用程序的資源文件夾中。在 Android Studio 中,右鍵點擊你的項目,跳轉(zhuǎn)至「Add Folder」(添加文件夾)部分,并選擇「Assets Folder」(資源文件夾)。這將在你的應(yīng)用程序目錄中創(chuàng)建一個資源文件夾。接下來,你需要將模型復(fù)制到資源文件夾中。

你可以通過這個鏈接(https://github.com/johnolafenwa/Pytorch-Keras-ToAndroid/raw/master/android-sample/app/src/main/assets/labels.json)下載類標簽,并且將文件復(fù)制到資源文件夾中。

現(xiàn)在你的項目已經(jīng)包含了進行圖像分類所需的一切。

將一個新的 Java 類添加到項目的主程序包中,并將其命名為 ImageUtils,把下面的代碼復(fù)制到其中。

如果你并不理解上面的大部分代碼,那也沒事——這是 TensorFlow Mobile 核心庫中沒有實現(xiàn)的兩個標準函數(shù)。因此,借助官方示例的幫助,我寫下了它們,以方便后續(xù)操作的便捷進行。

在你的主活動(main activity)中創(chuàng)建 ImageView 和 TextView。它們將被用于顯示圖像和預(yù)測結(jié)果。

在主活動中,你需要加載 TensorFlow-inference 庫,并且初始化一些類變量。在 onCreat 方法前添加以下內(nèi)容:

添加一個計算預(yù)測類的函數(shù):
 

添加接收圖像位圖并對其進行推斷的函數(shù):

上述代碼在后臺線程中執(zhí)行預(yù)測工作,并且將預(yù)測出的類和它的置信度寫入我們之前定義的 TextView 文件中。

請注意,在主用戶界面(UI)線程上執(zhí)行推斷可能會掛起應(yīng)用程序。一般而言,我們總是在后臺線程執(zhí)行推斷工作。

為了將本教程的重點放在圖像識別的主題上,我簡單地使用了一張?zhí)砑拥劫Y源文件夾中的鳥的圖像。在標準應(yīng)用程序中,你應(yīng)該編寫代碼從文件系統(tǒng)中加載圖片。

你可以向資源文件夾添加任何你想要預(yù)測的圖像。為了進行一次真實的預(yù)測,在下面的代碼中,我們?yōu)橐粋按鈕添加了一個點擊事件的監(jiān)聽器。這個監(jiān)聽器僅僅加載圖片并且調(diào)用預(yù)測函數(shù)。

現(xiàn)在,我們大功告成了!再仔細檢查一遍,以確保你正確地完成了每一步。如果一切正常,請點擊「Build APK」(構(gòu)建安卓安裝包)。

稍等片刻,你的安裝包就構(gòu)建好了。你可以安裝 APK,運行該應(yīng)用程序。

運行結(jié)果如下:

 

 

要想獲得更令人興奮的體驗,你應(yīng)該實現(xiàn)一些新功能,從安卓文件系統(tǒng)加載圖像,或者使用相機獲取圖像,而不是使用資源文件夾。

總結(jié)

移動端的深度學(xué)習(xí)最終將改變我們構(gòu)建和使用 app 的方式。通過上面的代碼片段,你可以很容易地將訓(xùn)練好的 PyTorch 和 Keras 模型導(dǎo)出到 TensorFlow 環(huán)境下。借助于 TensorFlow Mobile 的強大功能,并且按照本文中介紹的步驟,你可以為自己的移動應(yīng)用程序無縫注入優(yōu)秀的人工智能功能。

安卓項目的全部代碼和模型轉(zhuǎn)換器可以在我的 GitHub 上(https://github.com/johnolafenwa/Pytorch-Keras-ToAndroid)獲得。

 

原文鏈接:https://heartbeat.fritz.ai/deploying-pytorch-and-keras-models-to-android-with-tensorflow-mobile-a16a1fb83f2

標簽: 代碼 腳本 開發(fā)者 網(wǎng)絡(luò)

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:剛剛,歐盟對谷歌開出 338 億元天價罰單

下一篇:十一種全球著名商業(yè)分析模型