前言
上回我们建立了 tensorflow 的开发环境,跑测试模型比较方便,但对于树莓派来说,还是太庞大了。仅有 0.3fps 无法满足实时的生产环境需求,这篇我们部署一下专门为移动端和嵌入式设备而生的 TensorFlow Lite,并跑几个模型,测试一下纯树莓派上的极限帧率。
TensorFlow Lite 是一组工具,可帮助开发者在移动设备、嵌入式设备和 IoT 设备上运行 TensorFlow 模型。它支持设备端机器学习推断,延迟较低,并且二进制文件很小。
TensorFlow Lite 包括两个主要组件:
TensorFlow Lite 解释器,它可在手机、嵌入式 Linux 设备和微控制器等很多不同类型的硬件上运行经过专门优化的模型。
TensorFlow Lite 转换器,它可将 TensorFlow 模型转换为高效形式以供解释器使用,并可引入优化以减小二进制文件的大小和提高性能。
转换器一般在主电脑上完成,主要是为了静态化计算图,转换权重类型后,生成 .tflite 文件。而解释器主要在嵌入式设备上运行,我们这里先在树莓派上安装一下 tensorflow lite。
安装 TensorFlow Lite
1 建立虚拟环境
python3 -m venv --system-site-packages ~/my_envs/tf_lite
source ~/my_envs/tf_lite/bin/activate
2 安装 2.1.0 版本
# 可以在官网里下载各个版本
# https://www.tensorflow.org/lite/guide/python
wget https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp37-cp37m-linux_armv7l.whl
pip install tflite_runtime-2.1.0.post1-cp37-cp37m-linux_armv7l.whl
3 启用 opencv
cd ~/my_envs/tf_lite/lib/python3.7/site-packages
ln -s /usr/local/lib/python3.7/site-packages/cv2 cv2
4 安装完成
import tflite_runtime.interpreter as tflite
tflite.Interpreter
配置树莓派摄像头
1 测试摄像头
先保证摄像头排线已插入树莓派的 CSI 接口,并在 raspi-config 里 Interfacing options -> camera 选项里启用了摄像头。
# 拍摄照片
raspistill -o demo.jpg
# 录制视频
raspivid -o vid.h264
看一下目录里是否有拍摄的 demo.jpg 照片和 vid.h264 视频文件,保证硬件没有问题。
2 使用 picamera 控制摄像头
pip install picamera
拍摄一张照片
import picamera
from time import sleep
camera = picamera.PiCamera()
try:
# 设置分辨率
camera.resolution = (1024, 768)
camera.brightness = 60
camera.start_preview()
# 增加文本
c