树莓派4运行YOLOv5 detect.py时出现Fusing Layers Illegal instruction错误
解决树莓派上YOLOv5推理出现
Illegal instruction错误 问题本质
该错误是因为树莓派的ARM架构CPU不兼容PyTorch或YOLOv5中针对x86平台编写的优化指令,在执行层融合步骤时触发了CPU不支持的指令集操作。
解决方案
1. 安装树莓派适配的PyTorch版本
默认pip安装的PyTorch是针对x86架构编译的,需替换为ARM架构预编译包:
- 卸载现有PyTorch:
pip3 uninstall -y torch torchvision torchaudio - 根据树莓派型号安装适配版本(以Raspberry Pi 4/ARM64为例):
(32位系统需找对应armv7l的预编译包)pip3 install torch==1.12.0 torchvision==0.13.0 --extra-index-url https://download.pytorch.org/whl/cpu
2. 禁用YOLOv5的层融合
错误发生在Fusing layers...阶段,直接跳过该步骤:
- 打开
detect.py,注释掉层融合代码:# model.fuse() # 注释此行以跳过层融合 - 若版本支持,也可直接在推理命令中添加参数:
python3 detect.py --source data/images --weights yolov5s.pt --conf 0.25 --no-fuse
3. 降级YOLOv5到兼容性更好的版本
v6.2版本的层融合逻辑对ARM设备兼容性较差,切换到更早的稳定版本:
cd yolov5 git checkout v5.0 pip3 install -r requirements.txt # 重新安装对应版本依赖
4. 禁用CPU线程优化
通过环境变量关闭可能引发冲突的线程优化:
export ATEN_CPU_THREADING_ENABLE=0 python3 detect.py --source data/images --weights yolov5s.pt --conf 0.25 --device cpu
内容的提问来源于stack exchange,提问作者Maitha Alnaqbi
相关产品推荐
相关产品推荐

