树莓派EdgeX+TensorflowLite实现机器学习推理
安装 TensorFlow Lite 解释器
需要根据平台以及python版本选择安装,下面是linux(arm64)平台的,python版本为3.7
1 | pip3 install https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp37-cp37m-linux_aarch64.whl |
具体参考https://tensorflow.google.cn/lite/guide/python
使用 tflite_runtime 运行推理
1 | #监听8888端口,对收到的图片base64编码解析后进行推理 |
构建机器学习推理环境镜像
Dockerfile
1 | #基于的基础镜像 |
构建EdgeX-AppService镜像
Dockerfile
1 | # |
makefile
1 |
|
make docker
执行镜像构建任务
树莓派部署(使用K3S)
.yaml
文件,以下只是新增内容
1 | ... |
部署
kubectl apply -f ...
发送图片
查看appservice log
查看高温预警值
数值208(从0开始)代表第209类,识别结果为golden retriever.
整个项目的逻辑是(虽然并没有意义):appservice设置触发器,当有图片数据传入时,触发器触发响应事件,向推理程序的监听端口发送图片数据,程序收到图片数据后进行推理,返回推理结果,appservice再将推理结果,也就是最终推理的是第几类别,通过给设备发送命令的方式,将温湿度传感器设置成相应的数值。
附:python生成requirements.txt的两种方法
第一种 适用于单虚拟环境的情况:
1 | pip freeze > requirements.txt |
这种方式,会将环境中的依赖包全都加入,如果使用的全局环境,则下载的所有包都会在里面,不管是不是当前项目依赖的。
当然这种情况并不是我们想要的,当我们使用的是全局环境时,可以使用第二种方法。
第二种 使用pipreqs
安装
1 | pip install pipreqs |
在当前目录执行
1 | pipreqs . --encoding=utf8 --force |
--encoding=utf8
表示使用 utf8
编码,不然可能会报 UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xae in position 406: illegal multibyte sequence
的错误。--force
强制执行,当生成目录下的 requirements.txt
存在时覆盖。
使用 requirements.txt
安装依赖的方式:
1 | pip install -r requirements.txt |
树莓派EdgeX+TensorflowLite实现机器学习推理
http://caixindi.github.io/EdgeX/树莓派edgex-tensorflowlite实现机器学习推理/