KeyWord
Android , TensorFlow Lite , TF Lite , gesture_classification , 手势识别 , 图像识别 , 机器学习 , TF js Model 转 TF lite Model
背景
这是一篇迟到了两年的文章,真的是拖延症啊,有拖无欠哈哈.最近看了大佬的视频,又激起三分钟热度的中二之情.同时也看到某些教育机构88块售卖TensorFlowLite Android部署教程,还卖了900+份,要坏一下他们的生意才行哈哈哈.闲话到此,入正题.
由于5G尚未普及(相信这个"普及"任重道远),网络延迟严重,虽然现在已经有很多重型的机器框架可以使用,但是在端设备性能还是不能跟云相比,所以有了这个TensorFlow Lite给端设备使用. TensorFlow Lite 是一个精简库,用于在移动设备和嵌入式设备上部署模型, 跟TensorFlow 还是不太一样的(一个核心开源库,可以帮助您开发和训练机器学习模型)
这篇文章也主要是旨在降低国内小伙伴对于TF Lite的学习门槛,Google的文档写得很详细了,同时也重点说一下如何将TF js Model转成 TF lite Model. 所以这次是使用TensorFlow Lite 官方gesture_classification
sample 来展示如何使用Android 来run 起TensorFlow Lite. 为什么不使用image_classification
?因为那个project 一build 就起来,不需要写教程哈. 想直接快速感受TF lite的话,建议直接build image_classification 来尝试.
效果
教程
1. 从Github下载gesture_classification project
2. 生成TF Lite Model
因为这个sample是缺少TF Lite Model的,对!官方sample也缺少Model,不过官方也写了一份guide说怎么由gesture_classification TF js project build一个TF js Model出来,然后再转成TF lite 可用的Model.接下来也是基于这份guide step by step 去展示怎么转化.
2.1 下载gesture_classification的web project
2.2 运行gesture_classification的web project
记得使用支持webCamera的设备去运行,例如MacBookPro
如果run起来有遇到困难的话,可以参考我两年前写的这篇手把手教你在windows跑起TensorFlow Js的posenet demo,哈哈所以说是拖延了两年的文章.
2.3 训练gesture_classification TF Js Model
使用Chrome打开../gesture_classification/web/index.html
后,添加对应数据集(即拍几张对应的照片),再点击TRAIN按钮.如示例1
最后点击DOWNLOAD MODEL按钮即可得到labels.txt
,Model.json
和 model.weights.bin
三个文件.
2.4 TensorFlow.js to TensorFlow Lite Model Conversion
接下来我们要把Model.json
和 model.weights.bin
两个文件转成Model.tflite
, 我们会使用Google出品的colab
网站进行处理. Colab(需翻墙) 是一个Google推出的可以跑 Python
脚本和已经搭建Tensorflow
环境的服务.
2.4.1 打开Colab(需翻墙)
打开Colab后,打开笔记本,之后选择Github tab后添加这条link https://github.com/tensorflow/examples/blob/master/lite/examples/gesture_classification/ml/tensorflowjs_to_tflite_colab_notebook.ipynb 之后点击🔎按钮即可.
2.4.2 配置configuration文件
输入"abc"
, 记得包含双引号
2.4.3 运行代码脚本
2.4.4 上传Tensorflow.js Artifacts
将Model.json
和 model.weights.bin
两个文件上传上去.
如果遇到 Maximum call stack size exceeded
error的话,在左侧打开文件
-> 刷新
->鼠标右键 新建文件夹
,并命名为abc->将文件model.weights.bin
拖入abc
文件夹内->就可以查看文件上传状态
文件没有上传失败,也需要将将文件model.weights.bin
拖入abc
文件夹内
2.4.5 运行剩余的代码脚本,并下载TF lite Model
当看到如下图一样,出现Downloading "model.tflite"
后,即可点击左侧的刷新
按钮,即可看到model.tflite
, 将文件拖到自己电脑即可.
3. Android Studio build project
3.1 导入model.tflite
和 labels.txt
导入项目
将2.4.5生成的model.tflite
和 2.3 生成的labels.txt
放到../android/app/src/main/assets"
文件夹内
3.2 build project
插入手机,点击Run
按钮即可.