python - 如何让 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
我的系统上有一个新文件夹bin
,include
并且lib
子文件夹。但是,每当我运行我的 python 脚本时,它仍然需要大约 60 秒并且发送相同的消息,所以我想这还没有完全解决它。那么,如何让 opencv-python 使用这个新编译的 OpenBLAS?我是否必须自己编译它,如果是,如何编译?我还没有设法在其指南中找到如何使用“自定义” OpemBLAS 构建它。最后,如果 OpenCV 不是问题,那么 OpenBLAS 警告还源于何处?
谢谢你的时间:D
只是一个小更新,我试过运行export OMP_NUM_THREADS=1
,警告消失了,程序在 45-50 秒内运行 1 张图像。但这仍然不够快,所以我尝试了设置export OMP_NUM_THREADS=2
,但这会降低性能并返回警告。
解决方案
推荐阅读
- react-native - 'fetch' 未定义.eslint(no-undef) 在 react-native
- cordova - 使用 Cordova FCM 构建失败 + 原因:Dex 无法解析版本 52 字节代码
- python - 如果在Django ORM中使用group by没有特定年份的值,如何获取列表中的所有值并按年份分组并将0放在列表中?
- angular - 需要在 Observable 订阅中使用超时来获取准确的数据
- react-native - 在 React Native 应用程序和 Expo 中使用 Google Maps 等原生模块
- angular - groupBy 成键和值
- shell - shell中的bc回显浮点结果?
- c++ - 使用蒙特卡洛方法估计 Pi,循环似乎提前终止
- javascript - Jquery Datatable 排序不适用于 html 元素
- php - 当用户在输入字段文本框中键入文字时,仅将占位符文本向上移动