首页 > 解决方案 > 在 GPU 上具有 Cuda 低 FPS 的 OpenCV Python

问题描述

我已经用 Cuda for Python 构建了 OpenCV,并且正在使用以下几行来使用 GPU。

net = cv2.dnn.readNetFromCaffe(proto_file, weights_file)
net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA)
net.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA)

但是,我使用 GPU 的 FPS 约为 1.8,而使用 CPU 时约为 0.8。在任务管理器中,我的 GPU 利用率显示为大约 5%。我的 GPU 是 Nvidia GeForce MX130。如何提高我的 GPU 利用率,从而提高我的 FPS?为了验证我的 OpenCV 安装是否允许 GPU 处理,我使用了以下语句和相应的输出。

cv2.cuda.getCudaEnabledDeviceCount()

输出 1。

cv2.getBuildInformation()

输出:'\nOpenCV 4.4.0 的一般配置 =====================================\n版本控制:未知\n\n 额外模块:\n 位置(额外):G:/opencv_contrib-4.4.0/opencv_contrib-4.4.0/modules\n 版本控制(额外):未知\n\n 平台:\ n 时间戳:2021-09-24T15:28:43Z\n 主机:Windows 10.0.19043 AMD64\n CMake:3.21.1\n CMake 生成器:Visual Studio 16 2019\n CMake 构建工具:C:/Program Files (x86 )/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin/MSBuild.exe\n MSVC:1929\n\n CPU/HW 功能:\n 基线:SSE SSE2 SSE3\n 请求:SSE3\n 已调度代码生成:SSE4_1 SSE4_2 FP16 AVX AVX2 AVX512_SKX\n 请求:SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX\n SSE4_1(17 个文件):+ SSSE3 SSE4_1\n SSE4_2(2 个文件):+ SSSE3 SSE4_1 POPCNT SSE4_2\n FP16(1 个文件): SSE4_1 POPCNT SSE4_2 FP16 AVX\n AVX(5 个文件):+ SSSE3 SSE4_1 POPCNT SSE4_2 AVX\n AVX2(31 个文件):+ SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2\n AVX512_SKX(7 个文件):+ SSSE3 SSE4_2 POPCNT SSE46 FMA3 AVX AVX2 AVX_512F AVX512_COMMON AVX512_SKX\n\n C/C++:\n 作为动态库构建?:是\n C++ 标准:11\n C++ 编译器:C:/Program Files (x86)/Microsoft Visual Studio/2019/Community /VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe(版本 19.29.30133.0)\n C++ 标志(发行版):/DWIN32 /D_WINDOWS /W4 /GR /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /fp:fast /EHa /wd4127 /wd4251 /wd4324 /wd4275 /wd4512 /wd42589 /MPO DNDEBUG \n C++ 标志(调试):/DWIN32 /D_WINDOWS /W4 /GR /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /fp:fast /EHa /wd4127 /wd4251 /wd434512 /wd42578 /wd42578 /w /MP /MDd /Zi /Ob0 /Od /RTC1 \n C 编译器:C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/ cl.exe\n C 标志(发行版):/DWIN32 /D_WINDOWS /W3 /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /fp:fast /MP /MD /O2 /Ob2 /DNDEBUG \n C 标志(调试):/DWIN32 /D_WINDOWS /W3 /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /fp:fast /MP /MDd /Zi /Ob0 /Od /RTC1 \n 链接器标志(发布):/machine:x64 / INCREMENTAL:NO \n 链接器标志(调试):/machine:x64 /debug /INCREMENTAL \n ccache:NO\n 预编译头文件:NO\n 额外依赖项:cudart_static.lib nppc.lib nppial.lib nppicc.lib nppicom.lib nppidei.lib nppif.lib nppig.lib nppim.lib nppist.lib nppisu.lib nppitc.lib npps.lib cublas.lib cudnn.lib cufft.lib -LIBPATH:C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10 .1/lib/x64\n 3rdparty 依赖项:\n\n OpenCV 模块:\n 待构建:aruco bgsegm bioinspired calib3d ccalib core cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev datasets dnn dnn_objdetect dnn_superres dpm face features2d flann fuzzy gapi hfs highgui img_hash imgcodecs imgproc intensity_transform line_descriptor ml objdetect optflow phase_unwrapping photo plot python3 quality rapid reg rgbd saliency shape stereo stitching Structured_light superres surface_matching 文本跟踪 ts video videoio videostab world xfeatures2d ximgproc xobjdetect xphoto\n 已禁用:-\n 因依赖项而禁用:-\n 不可用:alphamat cnn_3dobj cvv freetype hdf java js julia matlab ovis python2 python2 sfm viz\n 应用程序:测试 perf_tests应用程序\n 文档:否\n 非自由算法:否\n\n Windows RT 支持:否\n\n GUI:\n Win32 UI:是\n VTK 支持:否\n\n 媒体 I/O:\n ZLib:构建(ver 1.2.11)\n JPEG: build-libjpeg-turbo (ver 2.0.5-62)\n WEBP: build (ver encoder: 0x020f)\n PNG: build (ver 1.6.37)\n TIFF: build (版本 42 - 4.0.10)\n JPEG 2000:构建 Jasper(版本 1.900.1)\n OpenEXR:构建(版本 2.3.0)\n HDR:是\n SUNRASTER:是\n PXM:是\n PFM : 是\n\n 视频 I/O:\n DC1394: 否\n FFMPEG:是(预构建的二进制文件)\n avcodec: YES (58.54.100)\n avformat: YES (58.29.100)\n avutil: YES (56.31.100)\n swscale: YES (5.5.100)\n avresample: YES (4.0.0)\n GStreamer:否\n DirectShow:是\n Media Foundation:是\n DXVA:是\n\n 并行框架:并发\n\n 跟踪:是(使用英特尔 ITT)\n\n其他第三方库:\n 英特尔 IPP:2020.0.0 Gold [2020.0.0]\n 位于:G:/opencv-gpu-build/3rdparty/ippicv/ippicv_win/icv\n 英特尔 IPP IW:来源 (2020.0. 0)\n 在: G:/opencv-gpu-build/3rdparty/ippicv/ippicv_win/iw\n Lapack:NO\n Eigen:NO\n Custom HAL:NO\n Protobuf:build (3.5.1)\n\n NVIDIA CUDA:YES (ver 10.1, CUFFT CUBLAS FAST_MATH)\n NVIDIA GPU 拱门:50\n NVIDIA PTX 拱门:\n\n cuDNN:是(版本 7.6.5)\n\n OpenCL:是(NVD3D11)\n 包含路径:G:/ opencv-4.4.0/opencv-4.4.0/3rdparty/include/opencl/1.2\n 链接库:动态加载\n\n Python 3:\n 解释器:G:/python-projects/human-pose-estimation/ venv/Scripts/python.exe(版本 3.9.6)\n 库:C:/Users/tmakp/AppData/Local/Programs/Python/Python39/libs/python39.lib(版本 3.9.6)\n numpy:G:/python-projects/human-pose-estimation/venv/Lib/site-packages/numpy/core/include (ver 1.21.2)\n 安装路径:G:/python-projects/human-pose-estimation/ venv/Lib/site-packages/cv2/python-3.9\n\n Python(用于构建):G:/python-projects/human-pose-estimation/venv/Scripts/python.exe\n\n Java:\ n ant:否\n JNI:否\n Java 包装器:否\n Java 测试:否\n\n 安装到:G:/opencv-gpu-build/install\n---------- -------------------------------------------------- -----\n\n'/python-projects/human-pose-estimation/venv/Lib/site-packages/cv2/python-3.9\n\n Python(用于构建):G:/python-projects/human-pose-estimation/venv/Scripts /python.exe\n\n Java:\n ant:否\n JNI:否\n Java 包装器:否\n Java 测试:否\n\n 安装到:G:/opencv-gpu-build/install\ n------------------------------------------------ ----------------\n\n'/python-projects/human-pose-estimation/venv/Lib/site-packages/cv2/python-3.9\n\n Python(用于构建):G:/python-projects/human-pose-estimation/venv/Scripts /python.exe\n\n Java:\n ant:否\n JNI:否\n Java 包装器:否\n Java 测试:否\n\n 安装到:G:/opencv-gpu-build/install\ n------------------------------------------------ ----------------\n\n'/opencv-gpu-build/安装\n---------------------------------------- -------------------------\n\n'/opencv-gpu-build/安装\n---------------------------------------- -------------------------\n\n'

标签: pythonopencvgpunvidia

解决方案


推荐阅读