TensorFlow自己訓練的SSD mobilenet模型 安卓移植
在做本專案之前,是一個非常非常小白的半吊子深度學習愛好者,但是一個月來接觸了並主導了一個計算機視覺小專案,收穫頗多。這篇文章詳細介紹一下從0到apk的一個TensorFlow模型移植的demo。
不得不說,Google真是非常強大,尤其是TensorFlow和Android出自一家,使兩者的遷移降低了很大難度。
由於之前從未接觸過Android開發,因此下面主要分為以下幾部分來實現:
1. 模型準備(生成.pb模型和.txt標籤檔案)
2. 安裝Android studio(從0開始)
3. 匯入模型並編譯(很簡單的操作==)
4. 遷移自己的模型(目前只實現了同類模型遷移)
下面開始詳細介紹:
1.模型準備
模型只需要兩個:一個是訓練生成的模型.pb檔案和標籤檔案.txt
2.安裝Android studio
這個很麻煩啊,整個這個遷移過程做了大概一整天,但是一上午的時間就是安裝這個ide了。我是參照各個前輩的教程上寫的,主要步驟依次是:下載安裝JDK和SDK(其實這兩個都可以先不安裝,我是參考別人的部落格說是先安裝這兩個,但是其實在安裝AS的時候可以再裝。)JDK就是直接用AS推薦的嵌入式的就可以,SDK我是用的自己的,到時候把路徑改到SDK安裝的位置就行。
其他的貌似沒有特別需要注意的了。但是建立第一個工程的時候需要等待一段時間,命令窗顯示下載gradle的東西。
3.匯入模型並編譯
把TensorFlow的Android模型匯入進去,記得把配置檔案(build gradle)的相關版本改對,改成SDK的最高版本。如果匯入成功了就可以插上安卓手機準備編譯啦。但是如果不成功,就根據報錯的日誌資訊去google,基本上都可以找到對應的改正方法,因為這時候的錯誤都是配置啊、版本啊這類問題。
編譯的時候,有一個點很容易忽略,就是update AS,因為如果不是最新版本配置的化會報錯!這個報錯後的提示特別難發現是要更新的問題,我是多方嘗試後無果最終在Stack Overflow上找到的解決方法----update,重啟之後就好了啦,就可以run了。
run成功後,我們的手機上就可以發現同時安裝了4個TFapp,分別是圖片分類、檢測、風格轉換和語音轉換。點開就可以測試啦。(還有個小問題需要注意,就是安卓版本的問題,因為高版本的SDK生成的apk可能在較低版本的安卓裝置上不能安裝)
4.遷移到自己的模型
這裡因為我訓練的是基於SSD_mobileNet的物體識別模型,因此是針對其中的檢測模型修改。
其實若只是要在手機上安裝觀察效果,操作起來非常簡單,把第一部分中準備的兩個模型放到assets資料夾中,把detectactivity.java檔案中的API模型路徑改成自己的,因為這個檢測模型優先ssdmobilenet,其後才是yolo和multibox演算法。
特別注意一下,txt檔案的第一行要是???,否則會報一個索引錯誤。
然後run就好啦。