在 reComputer RK3576 上使用 Google Coral USB 加速器
Google Coral USB 加速器通过 USB 为主机添加一个 Edge TPU 协处理器。本教程介绍一种经过实测验证的方法,将其连接到 reComputer RK3576,检查 USB 状态,安装 Edge TPU 运行时,运行一个经 Edge TPU 编译的 TensorFlow Lite 模型,并复现一次延迟基准测试。
基准测试范围: 本页结果比较的是 Coral Edge TPU 与八线程 CPU TensorFlow Lite 基线,没有测试 RK3576 内置 NPU。要对比这两种加速器,需要将同一模型和等效的预处理分别通过 Edge TPU 和 RKNN 工具链部署。
测试环境
| 项目 | 实测配置 |
|---|---|
| 主机 | reComputer RK3576 Dev Kit |
| 操作系统 | Armbian-unofficial 26.05.0-trunk,Debian 12(bookworm) |
| 内核 | 6.1.115-vendor-seeed-rk3576 |
| 主机架构 | AArch64,8 个逻辑 CPU |
| 加速器 | Google Coral USB Accelerator |
| USB 链路 | USB 3 SuperSpeed,lsusb -t 报告为 5000M |
| Edge TPU 运行时 | 标准(降频)运行时,libedgetpu.so.1.0 |
这是进行下列测量时所用的配置,并非对最低支持版本的声明。Coral 的 USB Accelerator 文档将 Debian 系 Armv8 Linux 列为支持平台,并建议使用 USB 3 以获得最佳性能。
硬件连接
请使用 USB 3 主机端口和一条质量良好的线缆。下面的照片展示了实测所用的 reComputer RK3576、Coral USB 加速器和线缆。

将 Coral 连接到 RK3576 的其中一个 USB 3 端口。下方特写展示了实际测试时的连接情况。

查找并确认 Coral
运行以下命令查找加速器使用的任意一个 USB ID:
lsusb | grep -Ei '1a6e:089a|18d1:9302|Google|Global Unichip'这些 ID 对应设备的两种正常状态:
| USB ID | lsusb 中的常见名称 | 含义 |
|---|---|---|
1a6e:089a | Global Unichip Corp. | 初始 DFU/引导加载程序状态 |
18d1:9302 | Google Inc. | 固件加载后的 Edge TPU 运行状态 |
检查协商出的 USB 速度:
lsusb -t对于 USB 3 连接,加速器所在分支应报告 5000M。出现 480M 表示 USB 2。
查看最近的枚举和固件事件:
sudo dmesg | grep -E 'device firmware changed|New USB device found' | tail -n 10下方截图显示了处于运行模式(18d1:9302)、以 5000M 连接的加速器,dmesg 中可见先前的 DFU 枚举和随后的固件变更消息。

连接加速器后立即看到 1a6e:089a 属于正常现象。加载 Edge TPU delegate 会加载设备固件,并使其重新枚举为 18d1:9302。
安装 Edge TPU 运行时
使用 Coral 的 Linux 软件源并安装标准运行时:
echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-get update
sudo apt-get install libedgetpu1-std如果安装期间加速器已经连接,请拔下并重新插入一次,使新安装的 udev 规则生效。
libedgetpu1-std 使用降低的工作频率。Coral 还提供 libedgetpu1-max 作为最大频率运行时的替代方案,但它会增加功耗,并可能使金属外壳非常烫。这两个运行时软件包不能同时安装。
创建 Python 环境
实测开发板使用 Python 3.11,并直接使用 TensorFlow Lite Python API 而非 PyCoral。创建一个隔离环境并安装示例所需的软件包:
sudo apt-get install python3-venv
python3 -m venv /tmp/coral-venv
/tmp/coral-venv/bin/pip install --upgrade pip
/tmp/coral-venv/bin/pip install tflite-runtime opencv-python-headless验证 Python 能否加载 Edge TPU delegate:
/tmp/coral-venv/bin/python -c "from tflite_runtime.interpreter import load_delegate; print(load_delegate('libedgetpu.so.1.0'))"该命令应打印一个 TensorFlow Lite delegate 对象。首次访问时它还可能触发设备从 1a6e:089a 到 18d1:9302 的切换。
下载测试资源
创建一个工作目录,下载 Google 配套提供的 Edge TPU 与 CPU 模型以及示例图片:
mkdir -p /tmp/coral-test
cd /tmp/coral-test
curl -fL -o model.tflite \
https://raw.githubusercontent.com/google-coral/test_data/master/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite
curl -fL -o model_cpu.tflite \
https://raw.githubusercontent.com/google-coral/test_data/master/mobilenet_v2_1.0_224_inat_bird_quant.tflite
curl -fL -o labels.txt \
https://raw.githubusercontent.com/google-coral/test_data/master/inat_bird_labels.txt
curl -fL -o parrot.jpg \
https://raw.githubusercontent.com/google-coral/test_data/master/parrot.jpgparrot.jpg 是 Google 公开 google-coral/test_data 仓库中的示例图片,并非为本教程拍摄的照片。Edge TPU 模型已针对该加速器编译,而 model_cpu.tflite 是其不使用 Edge TPU 的 TensorFlow Lite 对应版本。
运行最小 Edge TPU 推理
将以下内容保存为 /tmp/coral-test/inference.py:
import cv2
from tflite_runtime.interpreter import Interpreter, load_delegate
delegate = load_delegate("libedgetpu.so.1.0")
interpreter = Interpreter(
model_path="model.tflite",
experimental_delegates=[delegate],
)
interpreter.allocate_tensors()
input_info = interpreter.get_input_details()[0]
image = cv2.cvtColor(cv2.imread("parrot.jpg"), cv2.COLOR_BGR2RGB)
height, width = input_info["shape"][1:3]
tensor = cv2.resize(image, (int(width), int(height))).astype(input_info["dtype"])
interpreter.set_tensor(input_info["index"], tensor[None, ...])
interpreter.invoke()
print("Edge TPU inference completed")在工作目录中运行:
cd /tmp/coral-test
/tmp/coral-venv/bin/python inference.py可选性能验证
该基准测试对每条路径先执行 10 次预热调用,再执行 100 次计时调用。它只对 Interpreter.invoke() 计时,包括 delegate 执行和相关的宿主-设备通信;不包括模型/delegate 初始化、图像加载和图像缩放。
CPU 路径使用该模型的不带 Edge TPU 的版本并设置 num_threads=8。Edge TPU 与 CPU 模型来自同一套 Google Coral MobileNet V2 iNaturalist 鸟类测试集,两者接收相同的预处理输入张量。
完整的可选测试脚本可通过 benchmark.py 获取。下载上面的三个资源后,将该文件保存或下载到 /tmp/coral-test/benchmark.py。
运行基准测试:
cd /tmp/coral-test
/tmp/coral-venv/bin/python benchmark.py实测结果
在实测的 RK3576 上的一次运行结果如下:
| 路径 | 平均延迟 | 中位延迟 | P95 延迟 | 推算吞吐量 |
|---|---|---|---|---|
| Coral Edge TPU | 6.202 ms | 6.193 ms | 6.344 ms | 161.23 FPS |
| CPU,8 线程 | 20.700 ms | 20.610 ms | 21.196 ms | 48.31 FPS |
在该次运行中,Coral 路径的平均延迟比八线程 CPU 路径的平均延迟低 3.34x。FPS 值为 1000 / 平均延迟(针对重复的单张图片推理),并不是对完整相机、解码、预处理和显示管线的测量。

这些数值来自单台设备和一套软件配置的测量,并非保证的产品规格。频率调节、热状态、后台活动、运行时选择、模型分区和 USB 拓扑都可能改变结果。
注意: 此可选验证仅比较 Coral Edge TPU 与八线程 CPU TensorFlow Lite 路径。它不比较 Coral 与 RK3576 NPU,因为本测试未使用 RK3576 NPU。因此,Coral 的 4 TOPS 和 RK3576 NPU 的 6 TOPS 峰值指标不能说明或预测该结果。
故障排查
lsusb中没有 Coral 条目:重新连接设备,使用确认完好的线缆,换一个 USB 主机端口,并检查dmesg。- 设备一直停留在
1a6e:089a:先确认libedgetpu.so.1.0能成功加载,然后重新连接加速器并检查dmesg中的固件消息。 lsusb -t显示480M:连接协商到了 USB 2 速度。将加速器移到 USB 3 端口并检查线缆。Failed to load delegate:确认已安装 Edge TPU 运行时,且当前用户可以访问该 USB 设备。- 外壳温度过高:使用标准
libedgetpu1-std运行时并保持通风。最大频率运行时可能变得非常烫。