手把手教你Android run起基于TensorFlow Lite的手勢(shì)識(shí)別

KeyWord

Android , TensorFlow Lite , TF Lite , gesture_classification , 手勢(shì)識(shí)別 , 圖像識(shí)別 , 機(jī)器學(xué)習(xí) , TF js Model 轉(zhuǎn) TF lite Model

背景

這是一篇遲到了兩年的文章,真的是拖延癥啊,有拖無(wú)欠哈哈.最近看了大佬的視頻,又激起三分鐘熱度的中二之情.同時(shí)也看到某些教育機(jī)構(gòu)88塊售賣TensorFlowLite Android部署教程,還賣了900+份,要壞一下他們的生意才行哈哈哈.閑話到此,入正題.

由于5G尚未普及(相信這個(gè)"普及"任重道遠(yuǎn)),網(wǎng)絡(luò)延遲嚴(yán)重,雖然現(xiàn)在已經(jīng)有很多重型的機(jī)器框架可以使用,但是在端設(shè)備性能還是不能跟云相比,所以有了這個(gè)TensorFlow Lite給端設(shè)備使用. TensorFlow Lite 是一個(gè)精簡(jiǎn)庫(kù),用于在移動(dòng)設(shè)備和嵌入式設(shè)備上部署模型, 跟TensorFlow 還是不太一樣的(一個(gè)核心開(kāi)源庫(kù),可以幫助您開(kāi)發(fā)和訓(xùn)練機(jī)器學(xué)習(xí)模型)

這篇文章也主要是旨在降低國(guó)內(nèi)小伙伴對(duì)于TF Lite的學(xué)習(xí)門檻,Google的文檔寫得很詳細(xì)了,同時(shí)也重點(diǎn)說(shuō)一下如何將TF js Model轉(zhuǎn)成 TF lite Model. 所以這次是使用TensorFlow Lite 官方gesture_classification sample 來(lái)展示如何使用Android 來(lái)run 起TensorFlow Lite. 為什么不使用image_classification?因?yàn)槟莻€(gè)project 一build 就起來(lái),不需要寫教程哈. 想直接快速感受TF lite的話,建議直接build image_classification 來(lái)嘗試.

效果

效果.gif

教程

1. 從Github下載gesture_classification project

2. 生成TF Lite Model

因?yàn)檫@個(gè)sample是缺少TF Lite Model的,對(duì)!官方sample也缺少M(fèi)odel,不過(guò)官方也寫了一份guide說(shuō)怎么由gesture_classification TF js project build一個(gè)TF js Model出來(lái),然后再轉(zhuǎn)成TF lite 可用的Model.接下來(lái)也是基于這份guide step by step 去展示怎么轉(zhuǎn)化.

2.1 下載gesture_classification的web project

2.2 運(yùn)行g(shù)esture_classification的web project

記得使用支持webCamera的設(shè)備去運(yùn)行,例如MacBookPro

如果run起來(lái)有遇到困難的話,可以參考我兩年前寫的這篇手把手教你在windows跑起TensorFlow Js的posenet demo,哈哈所以說(shuō)是拖延了兩年的文章.

2.3 訓(xùn)練gesture_classification TF Js Model

使用Chrome打開(kāi)../gesture_classification/web/index.html后,添加對(duì)應(yīng)數(shù)據(jù)集(即拍幾張對(duì)應(yīng)的照片),再點(diǎn)擊TRAIN按鈕.如示例1
最后點(diǎn)擊DOWNLOAD MODEL按鈕即可得到labels.txt,Model.jsonmodel.weights.bin 三個(gè)文件.

示例1

示例2

2.4 TensorFlow.js to TensorFlow Lite Model Conversion

接下來(lái)我們要把Model.jsonmodel.weights.bin 兩個(gè)文件轉(zhuǎn)成Model.tflite, 我們會(huì)使用Google出品的colab 網(wǎng)站進(jìn)行處理. Colab(需翻墻) 是一個(gè)Google推出的可以跑 Python腳本和已經(jīng)搭建Tensorflow環(huán)境的服務(wù).

2.4.1 打開(kāi)Colab(需翻墻)

打開(kāi)Colab后,打開(kāi)筆記本,之后選擇Github tab后添加這條link https://github.com/tensorflow/examples/blob/master/lite/examples/gesture_classification/ml/tensorflowjs_to_tflite_colab_notebook.ipynb 之后點(diǎn)擊??按鈕即可.

新建Colab筆記本

新建筆記本成功后界面

2.4.2 配置configuration文件

輸入"abc" , 記得包含雙引號(hào)

配置weights_path_perfix

2.4.3 運(yùn)行代碼腳本

運(yùn)行代碼腳本

2.4.4 上傳Tensorflow.js Artifacts

Model.jsonmodel.weights.bin 兩個(gè)文件上傳上去.

上傳Tensorflow.js Artifacts

如果遇到 Maximum call stack size exceeded error的話,在左側(cè)打開(kāi)文件-> 刷新 ->鼠標(biāo)右鍵 新建文件夾 ,并命名為abc->將文件model.weights.bin 拖入abc 文件夾內(nèi)->就可以查看文件上傳狀態(tài)
文件沒(méi)有上傳失敗,也需要將將文件model.weights.bin 拖入abc 文件夾內(nèi)

Maximum call stack size exceeded.

手動(dòng)上傳文件

2.4.5 運(yùn)行剩余的代碼腳本,并下載TF lite Model

當(dāng)看到如下圖一樣,出現(xiàn)Downloading "model.tflite"后,即可點(diǎn)擊左側(cè)的刷新按鈕,即可看到model.tflite , 將文件拖到自己電腦即可.

生成Model.tflite

3. Android Studio build project

3.1 導(dǎo)入model.tflitelabels.txt 導(dǎo)入項(xiàng)目

將2.4.5生成的model.tflite 和 2.3 生成的labels.txt 放到../android/app/src/main/assets" 文件夾內(nèi)

導(dǎo)入文件

3.2 build project

插入手機(jī),點(diǎn)擊Run 按鈕即可.

引用/參考

  1. https://colab.research.google.com
  2. https://github.com/tensorflow/examples
  3. Google Colaboratory : Import Data, stack size exceeded?
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容