tensorflow lite的demo在android studio上環境搭建


由於很久沒有接觸過Android開發,而且最早用的是eclipse,所以這個demo在android studio上的搭建過程,真的是踩了不少坑。記錄這篇文章,純粹是給自己一點收獲。

環境搭建的過程,還是需要一點Android Studio的使用基礎的,包括gradle同步、ndk、sdk之類的,另外由於需要在線下載資源,所以准備一個網絡暢通的VPN。

一、基礎環境

Windows 10系統、Android studio 3.1.2、tensorflow1.10.0、gradle版本為4.4

sdk和ndk的版本如下:

Android SDK Build-Tools

二、需要修改的文件:

(1)Demo項目下的build.gradle文件

進行如下修改:

(2)Demo/app文件下的build.gradle文件

android{ ... }中需要修改的部分:

repositories{ ... }和dependencies{}需要修改的部分,如下圖,主要是用於 a) 解決tensorflow-lite:0.0.0-nightly無法下載的情況 b) 依賴項與sdk版本保持一致的問題 c) gradle3.0.0版本以上的依賴默認為implementation,而不是之前的gradle2+版本的compile

(1)手動下載tensorflow-lite:0.0.0-nightly.aar。

(2)拷貝tensorflow-lite:0.0.0-nightly.aar文件到app/libs目錄下(如果不存在libs目錄,則自己手動添加一個);

(3)在app下的bulid.gradle中repositories添加:

     flatDir{dirs " libs"}代碼, 

                    dependencies中添加:

                    compile fileTree(dir: 'libs', include: ['*.jar']):

                    compile(name:' tensorflow-lite:0.0.0-nightly', ext:'aar')

       dependencies中注釋掉:compile compile 'org.tensorflow:tensorflow-lite:0.0.0-nightly'

三、同步gradle文件:

點擊同步gradle的按鈕,如果沒有報錯,則android studio “Run” app是可以執行的,否則該按鈕是灰色的,不能執行。

四、源碼分析

整個demo包含6個java文件:

其中:

-AutoFitTextureView:一個自定義的View;

-CameraActivity: 整個app的入口activity,這個activity只做了一件事,就是加載了一個fragment; 

- Camera2BasicFragment: 入口activity中加載的fragment,其中實現了所有跟UI相關的代碼;首先在onActivityCreated中,初始化了一個ImageClassifier對象,此類是整個demo的核心,用於加載模型並實現推理運算功能。然后開啟了一個后台線程,在線程中反復地對從攝像頭獲取的圖像進行分類操作。

-ImageClassifier:是一個抽象類,demo最重要的部分,但只有兩個函數比較重要,一個是構造函數

-ImageClassifierFloatInception為浮點型子類,基類為ImageClassifier,對應的浮點模型為assets資源下的7_float.tflite 

-ImageClaaifierQuantizedMobileNet為量化型子類,基類為ImageClassifier,對應的數字量化模型為assets資源下的7.tflite 

 

 

 

 

 

 

 

 

 

 

 
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM