首页 > 解决方案 > 如何让 opencv-python 使用我编译的 openBLAS 库,而不是它附带的任何东西?(在树莓派 Linux 上)

问题描述

我分别使用torchvision 和tesseract 创建了一个用于对象检测和OCR 的python 程序(经过微调的预训练模型)。现在,当我在笔记本电脑(使用 i7 7700)上运行它时,处理一张图像大约需要 4-5 秒,我对此很满意。
我想做的是在我的 Raspberry PI 4 上运行该程序(具有 4GB 内存,并运行 64 位 Raspbian)。在尝试了几个库的版本之后,我设法将其中一些设置为旧版本(torch~=1.8.0,torchvision~=0.9.0,opencv-python~=4.5.3.56,numpy~ =1.21.1, matplotlib~=3.4.2, Pillow~=8.3.1, pytesseract~=0.3.8)。现在,同样的程序在 PI 上运行每张图像大约 60 秒,最让我困惑的是反复发送垃圾邮件OpenBLAS Warning : Detect OpenMP Loop and this application may hang. Please rebuild the library with USE_OPENMP=1 option.. 现在这让我感到困惑,因为我以前从未需要从源代码构建任何东西,但经过一番谷歌搜索后,我发现 OpenCV 可能是问题所在,特别是它使用的 OpenBLAS 库。因此,为了使用 USE_OPENMP=1 构建 OpenBLAS 库,我下载了 OpenBLAS 存储库并按照此处给出的指南进行操作。
事情是,现在这个库已经构建并安装了,我猜,/opt/OpenBLAS我的系统上有一个新文件夹bininclude并且lib子文件夹。但是,每当我运行我的 python 脚本时,它仍然需要大约 60 秒并且发送相同的消息,所以我想这还没有完全解决它。那么,如何让 opencv-python 使用这个新编译的 OpenBLAS?我是否必须自己编译它,如果是,如何编译?我还没有设法在其指南中找到如何使用“自定义” OpemBLAS 构建它。最后,如果 OpenCV 不是问题,那么 OpenBLAS 警告还源于何处?

谢谢你的时间:D

只是一个小更新,我试过运行export OMP_NUM_THREADS=1,警告消失了,程序在 45-50 秒内运行 1 张图像。但这仍然不够快,所以我尝试了设置export OMP_NUM_THREADS=2,但这会降低性能并返回警告。

标签: pythonlinuxopencvraspbianopenblas

解决方案


推荐阅读