如何在Raspberry Pi Zero部署YOLOv5?解决TFLite armv6l兼容问题
树莓派Zero(armv6l)部署YOLOv5目标检测方案
核心问题说明
树莓派Zero采用armv6l架构,官方TensorFlow Lite预编译包仅支持armv7l及以上版本,因此直接通过pip安装会出现找不到适配架构的包的报错(对应你提供的安装失败截图)。以下是无需Docker的可行部署方案,按优先级推荐:
方案一:使用ONNX Runtime(推荐,编译简单)
ONNX Runtime官方提供armv6l的预编译包,适配性更好,步骤如下:
- 更新系统并安装基础依赖
sudo apt-get update && sudo apt-get install -y python3-pip libatlas-base-dev
- 安装armv6l版本的ONNX Runtime
pip3 install onnxruntime --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cpu/pypi/simple/
- 转换YOLOv5模型为ONNX格式(在x86/ARMv7+设备上完成,Zero性能不足)
选择最小的YOLOv5n模型以适配Zero的算力:
git clone https://github.com/ultralytics/yolov5.git && cd yolov5 pip3 install -r requirements.txt python export.py --weights yolov5n.pt --include onnx --dynamic --img 320
- 树莓派Zero上运行推理
创建Python脚本(示例):
import cv2 import onnxruntime as ort import numpy as np # 加载ONNX模型 session = ort.InferenceSession("yolov5n.onnx") input_name = session.get_inputs()[0].name output_names = [output.name for output in session.get_outputs()] # 预处理图像 def preprocess(img, img_size=320): img = cv2.resize(img, (img_size, img_size)) img = img.transpose(2, 0, 1) # HWC -> CHW img = np.expand_dims(img, axis=0).astype(np.float32) / 255.0 return img # 推理示例 img = cv2.imread("test.jpg") input_tensor = preprocess(img) outputs = session.run(output_names, {input_name: input_tensor}) # 解析输出(参考YOLOv5 ONNX输出格式) # 此处省略后处理代码,可参考YOLOv5官方文档
方案二:直接运行YOLOv5 Python轻量版本(无需额外框架)
如果对推理速度要求不高,可直接在Zero上运行YOLOv5的Python原生版本,无需转换模型:
- 安装依赖
sudo apt-get install -y python3-pip git libopencv-dev pip3 install opencv-python-headless torch torchvision --index-url https://download.pytorch.org/whl/cpu
- 克隆YOLOv5并运行最小模型
git clone https://github.com/ultralytics/yolov5.git && cd yolov5 python detect.py --weights yolov5n.pt --source test.jpg --img 320 --conf 0.5
注:Zero运行yolov5n的单帧推理时间约10-15秒,适合静态图像检测,不适合实时视频。
方案三:手动编译TensorFlow Lite Runtime(armv6l)
若必须使用TFLite,可手动编译适配armv6l的pip包,无需Docker:
- 安装编译依赖
sudo apt-get install -y build-essential python3-dev python3-pip git cmake libssl-dev openjdk-11-jdk
- 安装Bazel(编译TensorFlow的工具)
wget https://github.com/bazelbuild/bazel/releases/download/5.4.0/bazel-5.4.0-dist.zip unzip bazel-5.4.0-dist.zip && cd bazel-5.4.0-dist ./compile.sh sudo cp output/bazel /usr/local/bin/
- 编译TFLite Runtime
git clone https://github.com/tensorflow/tensorflow.git && cd tensorflow git checkout v2.15.0 # 选择稳定版本 ./configure # 全程按默认选项回车,确认Python路径为/usr/bin/python3 bazel build --config=elinux_armhf //tensorflow/lite/tools/pip_package:build_pip_package ./bazel-bin/tensorflow/lite/tools/pip_package/build_pip_package /tmp/tflite_pip
- 安装编译好的包
pip3 install /tmp/tflite_pip/tensorflow_lite_runtime-*.whl
注:编译过程耗时较长(Zero上约2-3小时),需确保设备供电稳定。
优化建议
- 始终选择YOLOv5n(最小模型),并将输入分辨率降至320x320,大幅减少计算量
- 使用
opencv-python-headless替代完整OpenCV,节省内存 - 关闭推理时的可视化输出(仅保存结果),提升速度
内容的提问来源于stack exchange,提问作者Sushmita
相关产品推荐
相关产品推荐

