树莓派4B部署Google Coral Edge TPU模型失败问题排查求助
我来帮你梳理这个问题——从你给出的报错和环境信息来看,RuntimeError: Mmap of '/home/pi/object-detector/model' failed这个错误核心是系统没法通过内存映射加载指定的模型资源,咱们从你提到的几个方向逐一分析,再给出排查和解决步骤:
可能的触发原因
- 模型路径错误(最可能):你命令里指定的
--model /home/pi/object-mask-detector/model看起来是个目录,但DetectionEngine需要的是具体的.tflite模型文件。内存映射(mmap)只能处理文件,没法直接映射目录,这是这类报错最常见的诱因。 - 模型文件问题:如果你的
mobilenet_v2_1.0_224_quant_edgetpu.tflite下载不完整、损坏,或者不是专门为Edge TPU编译的量化模型,也会导致加载失败。 - 内存/系统配置问题:虽然树莓派4B内存充足,但Raspbian Stretch默认的内存分配(比如GPU内存占比)或者虚拟内存设置不足,也可能触发mmap失败。
- TPU硬件/驱动问题:如果Edge TPU没被系统识别、驱动未正确安装,加载模型时也可能出现异常,但这类情况的报错通常会更偏向“找不到设备”,不过还是需要排查。
如何验证Edge TPU是否正常工作?
给你几个简单可靠的检测方法:
- 检查设备是否被识别:
运行命令:lsusb,正常情况下会看到Google Inc. Coral Edge TPU这条记录,说明硬件连接没问题。 - 运行官方基础测试:
执行以下命令测试驱动和TPU基础功能:
如果输出“All tests passed”,说明TPU驱动和基础功能正常;如果提示“No Edge TPU found”,那就是驱动或硬件连接有问题。python3 -m edgetpu.test.inference_test - 用官方示例模型做推理测试:
下载官方的mobilenet_v2_1.0_224_quant_edgetpu.tflite模型,然后运行官方示例脚本:
能正常输出物体检测结果,就说明TPU完全可以正常工作。python3 -m edgetpu.detection.engine --model mobilenet_v2_1.0_224_quant_edgetpu.tflite --input your_test_image.jpg
针对性解决步骤
按照优先级从高到低来:
- 修正模型路径(最优先):
把命令里的模型路径改成具体的.tflite文件,比如:
先通过python3 detect_object_video_edge.py --model /home/pi/object-mask-detector/model/mobilenet_v2_1.0_224_quant_edgetpu.tflite --labels /home/pi/object-detector/model/object_labels.txtls /home/pi/object-mask-detector/model/确认这个.tflite文件确实存在。 - 校验模型文件完整性:
重新从Coral官方仓库下载对应模型,对比文件大小和官方提供的哈希值,确保没有下载中断导致的文件损坏。 - 调整树莓派内存配置:
运行sudo raspi-config,进入Performance Options->Memory Split,把GPU内存调整为128MB(默认可能是64MB,足够的GPU内存能避免内存映射冲突),重启树莓派后再测试。 - 重新安装Edge TPU驱动:
如果TPU检测失败,卸载现有驱动后重新安装:
安装完成后重启设备,再用sudo apt-get remove --purge libedgetpu1-std sudo apt-get install libedgetpu1-stdlsusb和基础测试验证。
你的报错回溯(方便后续排查参考)
pi@raspberrypi:~/object-detector $ python3 detect_object_video_edge.py --model /home/pi/object-mask-detector/model --labels /home/pi/object-detector/model/object_labels.txt
[INFO] parsing class labels...
[INFO] loading Coral model...
Traceback (most recent call last):
File "detect_object_video_edge.py", line 29, in
model = DetectionEngine(args["model"])
File "/usr/lib/python3/dist-packages/edgetpu/detection/engine.py", line 73, in init
super().init(model_path)
File "/usr/lib/python3/dist-packages/edgetpu/basic/basic_engine.py", line 92, in init
self._engine = BasicEnginePythonWrapper.CreateFromFile(model_path)
RuntimeError: Mmap of '/home/pi/object-detector/model' failed.
内容的提问来源于stack exchange,提问作者mevada.ravikumar

