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)嘗試.
效果

教程
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.json 和 model.weights.bin 三個(gè)文件.


2.4 TensorFlow.js to TensorFlow Lite Model Conversion
接下來(lái)我們要把Model.json 和 model.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)擊??按鈕即可.


2.4.2 配置configuration文件
輸入"abc" , 記得包含雙引號(hào)

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

2.4.4 上傳Tensorflow.js Artifacts
將Model.json 和 model.weights.bin 兩個(gè)文件上傳上去.

如果遇到 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)


2.4.5 運(yùn)行剩余的代碼腳本,并下載TF lite Model
當(dāng)看到如下圖一樣,出現(xiàn)Downloading "model.tflite"后,即可點(diǎn)擊左側(cè)的刷新按鈕,即可看到model.tflite , 將文件拖到自己電腦即可.

3. Android Studio build project
3.1 導(dǎo)入model.tflite 和 labels.txt 導(dǎo)入項(xiàng)目
將2.4.5生成的model.tflite 和 2.3 生成的labels.txt 放到../android/app/src/main/assets" 文件夾內(nèi)

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