问题描述
利用opencv-python的dnn模块调用yolo3模型进行目标检测的时候,根据网上的教程,加入GPU加速,也就是加入如下的两行代码:
net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA);
net.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA);
但是在运行之后,出现了这样的提示:
warning: setUpNet DNN module was not built with CUDA backend; switching to CPU
原因分析:
这说明GPU没被用上,原因是OPENCV在安装的时候,没有安装支持CUDA的版本,所以需要重新编译安装OPENCV。
解决方案:
安装OPENCV的教程可以参考这一个:https://blog.csdn.net/qq_37975595/article/details/109179388链接。注意,选择opencv4.4.0以上的版本!!我用的是4.4.0。本来我安装的是4.3.0,解决了一天的bug也没安装上!!!最后换了4.4.0,一下就装上了!
注意注意,cmake 这一步就是编译选项,我当时采用的是这个:
cmake -DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.4.0/modules .. \
-DWITH_CUDA=1 \
-DCUDA_ARCH_BIN=7.5 \
-DENABLE_FAST_MATH=1 \
-DCUDA_FAST_MATH=1 \
-DWITH_CUBLAS=1 \
-DOPENCV_GENERATE_PKGCONFIG=1 \
..
其中-DWITH_CUDA=1
这句话就是选择了有CUDA版本的opencv。
-DCUDA_ARCH_BIN=7.5
这个一定一定要选择跟你电脑显卡相匹配的数字,不然GPU还是不能用,还得重新编译安装。如果不匹配,会出现这样的报错:文章来源:https://www.toymoban.com/news/detail-583024.html
error: (-216:No CUDA support) OpenCV was not built to work with the selected device. Please check CUDA_ARCH_PTX or CUDA_ARCH_BIN in your build configuration. in function 'initCUDABackend'
此问题的解决参考了该博主的博客:https://blog.csdn.net/qq_34717531/article/details/108735629文章来源地址https://www.toymoban.com/news/detail-583024.html
到了这里,关于warning: setUpNet DNN module was not built with CUDA backend; switching to CPU错误解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!