我用yolo5 onnx模型推理,他就提示这个,完全调用不了 GPU
然后我就查资料,听说要构建,然后我就跟着教程一步步构建,也构建完成了,但是不知道,怎么应用在python 上面 CV gpu加速,教程都是c++得
已经用 cmake 构建完成了
但教程只说了如何c++用,可我不会c++ 想在python上面使用
就想请教,py如何实现yolov5 调用opencv gpu加速
有教程说直接 python pip就行,但我还是没成功 一直提示图一
warning: setUpNet DNN module was not built with CUDA backend; switching to CPU
原因是OPENCV在安装的时候,没有安装支持CUDA的版本,所以需要重新编译安装OPENCV
解决办法:
1、下载opencv 4.4.0以及相应版本的opencv_contrib
2、修改cmakelist,在opencv\modules\dnn\CMakeLists.txt文件中添加
add_definitions(-DHAVE_CUDA=1)
这是一篇实例参考,期望对你有所帮助。链接:https://www.jianshu.com/p/2ec17797a924
【推荐理由,其中讲解了多处参数的设置选择】
python下有两种做法,一种是你cmake的是cpp的dll,就是你目前的opencv_world454.dll,然后python的ctypes库调用调用这个dll,ctypes库调用不能直接传递python对象的,需要转化为c/C++语言接口对应的类型,但是这个代码啥的都麻烦,你得知道底层的opencv的c++接口,以及对应的参数类型,这样你才能调用推理。
第二种做法,跟第一种差不多,不过将预处理,推理和后处理代码全部放在c++层,也就是你说的c++的教程,你只需要封装一下这些教程的接口,输入图片和返回检测结果,封装变成dll,然后使用python调用封装好的接口。
最后一种就是你cmake的时候应该勾选python,我估计你要的是这个。这种方法编译出来的python库可以直接import path/to/cv2,这里的cv2路径就是你编译结果路径。这样python代码不动。你目前的cmake是c++的dll,也就是只能走前面两个的路线。
ps:既然你都用python了,那直接走torch或者onnxruntime-gpu啊,这些都是编译好的cuda,不需要你再手动搞