树莓派zero 2w 安装TensorFlow Lite运行目标检测代码
本文写于2022.5.20
0.准备工作
树莓派zero 2w一台
系统版本为Buster
python版本为3.7.3
树莓派预装:numpy(1.21.4),OpenCV(4.5.5)
pip换国内源(具体方法见pip换国内源)
可上网(有梯子更好)的PC一台
远程ssh连接兼职传文件的VNC Viewer
1.安装TensorFlow Lite 解释器
TensoFlow Lite Python 快速入门
按照指示直接安装TensorFlow解释器
pip3 install https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp37-cp37m-linux_armv7l.whl
安装完在终端打开python3输入
import tflite_runtime.interpreter as tflite
没有报错则安装成功
2.下载示例代码
操作在电脑上运行
在Github上找到TensorFlow Lite适用于树莓派的示例代码(本文使用目标检测的)
TensorFlow 目标检测

我只要这块目标检测的代码选择使用DownGit把这部分代码下载下来
DownGit
下载完后解压用记事本软件右键打开setup.sh文件看到如下内容
#!/bin/bash
if [ $# -eq 0 ]; then
DATA_DIR="./"
else
DATA_DIR="$1"
fi
# Install Python dependencies
python3 -m pip install pip --upgrade # 更新pip
python3 -m pip install -r requirements.txt # 需要的软件包
# Download TF Lite models 下载 TF 预训练模型
FILE=${DATA_DIR}/efficientdet_lite0.tflite
if [ ! -f "$FILE" ]; then
curl \
-L 'https://tfhub.dev/tensorflow/lite-model/efficientdet/lite0/detection/metadata/1?lite-format=tflite' \
-o ${FILE}
fi
FILE=${DATA_DIR}/efficientdet_lite0_edgetpu.tflite
if [ ! -f "$FILE" ]; then
curl \
-L 'https://storage.googleapis.com/download.tensorflow.org/models/tflite/edgetpu/efficientdet_lite0_edgetpu_metadata.tflite' \
-o ${FILE}
fi
echo -e "Downloaded files are in ${DATA_DIR}"
示例代码的教程会让你直接在树莓派上运行setup.sh这是一个SHell文件他会自动的安装依赖包并且下载模型文件,受限于网络环境我是没成功下载下来,但我们可以只能分步骤做
打开requirements.txt检查依赖包
argparse
numpy>=1.20.0 # To ensure compatibility with OpenCV on Raspberry Pi.
opencv-python~=4.5.3.56
tflite-support>=0.4.0
OpenCV和numpy我已经有了,虽然OpenCV版本是4.5.5但是想来两个小版本差别应该不大就没有重新安装.
将requirement.txt修改
argparse
# numpy>=1.20.0 # To ensure compatibility with OpenCV on Raspberry Pi.
# opencv-python~=4.5.3.56
tflite-support>=0.4.0
在通过setip.sh提供的模型地址下载TF预训练模型
# 普通CPU模型
https://tfhub.dev/tensorflow/lite-model/efficientdet/lite0/detection/metadata/1?lite-format=tflite
# 适用于搭载了TPU的树莓派的模型
https://storage.googleapis.com/download.tensorflow.org/models/tflite/edgetpu/efficientdet_lite0_edgetpu_metadata.tflite
在浏览器地址栏输入以上两个地址就可以自动下载,将下载好的文件按要求分别命名为efficientdet_lite0.tflite和efficientdet_lite0_edgetpu.tflite放到和setup.sh同一级目录下.

所有文件打压缩包名字叫object_detection.zip
3.运行示例代码
通过VNC Viewer来连接树莓派使用VNC Viewer的Transfer file功能将电脑上的object_detection.zip传给树莓派(默认保存在树莓派的桌面上)

以下操作在树莓派上运行
将压缩包转移到你喜欢的文件夹,打开控制台进入该文件夹
执行unzip object_detection.zip解压文件
控制台输入
python3 -m pip install pip --upgrade # 更新pip
python3 -m pip install -r requirements.txt # 根据修改后的requirments.txt需要的软件包
如果你pip是切换为国内源进行安装应该不会遇到连接超时等问题
运行示例代码
python3 detect.py
这里我得到了一个报错提示调用TF的时候没有某个音频文件
OSError: PortAudio library not found
根据StackOverflow的提示使用sudo apt-get install libportaudio2修复后代码顺利运行
4.运行结果
目标检测

分类

FPS一直在0~2之间来回跳,可以检测复数的物体作为一个内存只有512MB,Cpu频率为1GHz的设备这结果还是不错的。等购入散热模组将Cpu超频后表现可能会好点但估计也不会好很多

浙公网安备 33010602011771号