Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python setUpNet DNN模块未使用CUDA后端构建;切换到CPU_Python_Opencv_Gpu - Fatal编程技术网

Python setUpNet DNN模块未使用CUDA后端构建;切换到CPU

Python setUpNet DNN模块未使用CUDA后端构建;切换到CPU,python,opencv,gpu,Python,Opencv,Gpu,我想用GPU运行我的脚本python,就像你看到的,我使用命令行:watch nvidia smi,来显示GPU的进程,不幸的是,脚本python只使用了41Mib的GPU容量: 这是我代码的一部分: import time import math import cv2 import numpy as np labelsPath = "./coco.names" LABELS = open(labelsPath).read().strip().split("\n") np.random.see

我想用GPU运行我的脚本python,就像你看到的,我使用命令行:
watch nvidia smi
,来显示GPU的进程,不幸的是,脚本python只使用了41Mib的GPU容量:

这是我代码的一部分:

import time
import math
import cv2
import numpy as np
labelsPath = "./coco.names"
LABELS = open(labelsPath).read().strip().split("\n")

np.random.seed(42)

weightsPath = "./yolov3.weights"
configPath = "./yolov3.cfg"

net = cv2.dnn.readNetFromDarknet(configPath, weightsPath)
ln = net.getLayerNames()
ln = [ln[i[0] - 1] for i in net.getUnconnectedOutLayers()]
FR=0
vs = cv2.VideoCapture(vid_path)
# vs = cv2.VideoCapture(0)  ## USe this if you want to use webcam feed
writer = None
(W, H) = (None, None)

fl = 0
q = 0
while True:

    (grabbed, frame) = vs.read()

    if not grabbed:
        break

    if W is None or H is None:
        (H, W) = frame.shape[:2]
        FW=W
        if(W<1075):
            FW = 1075
        FR = np.zeros((H+210,FW,3), np.uint8)

        col = (255,255,255)
        FH = H + 210
    FR[:] = col

    blob = cv2.dnn.blobFromImage(frame, 1 / 255.0, (416, 416),
                                 swapRB=True, crop=False)
    net.setInput(blob)
    start = time.time()
    layerOutputs = net.forward(ln)
    end = time.time()
然后,再次运行脚本后,将显示以下消息,并继续使用CPU运行脚本:

 [ WARN:0] global /io/opencv/modules/dnn/src/dnn.cpp (1363) setUpNet DNN module was not built with CUDA backend; switching to CPU

您需要手动构建OpenCV才能使用GPU


这是一个很好的教程,介绍了如何使用GPU。您需要手动构建OpenCV才能使用GPU


这是一个很好的教程,介绍了如何做到这一点。

cuda和cudnn的兼容性图表:

从以下位置检查计算能力版本:

这是7.5

在支持GPU的情况下,对于7.5计算能力,CUDA SDK 11.0–11.2支持3.5–8.6计算能力(开普勒(部分)、麦克斯韦、帕斯卡、沃尔塔、图灵、安培):

检查您支持的NVIDIA硬件。

在我的例子中,我使用的是带有图灵的特斯拉T4,它与cuDNN兼容

所以在编译报告中,您可以看到Cmake将cuDNN可用性返回为“否”:

使用以下方法获取docker映像:

sudo docker nvidia/cuda:11.1-cudnn8-runtime-ubuntu18.04

编译的Opencv Cuda来自:
cuda和cudnn的兼容性图表:

从以下位置检查计算能力版本:

这是7.5

在支持GPU的情况下,对于7.5计算能力,CUDA SDK 11.0–11.2支持3.5–8.6计算能力(开普勒(部分)、麦克斯韦、帕斯卡、沃尔塔、图灵、安培):

检查您支持的NVIDIA硬件。

在我的例子中,我使用的是带有图灵的特斯拉T4,它与cuDNN兼容

所以在编译报告中,您可以看到Cmake将cuDNN可用性返回为“否”:

使用以下方法获取docker映像:

sudo docker nvidia/cuda:11.1-cudnn8-runtime-ubuntu18.04

编译的Opencv Cuda来自:

 [ WARN:0] global /io/opencv/modules/dnn/src/dnn.cpp (1363) setUpNet DNN module was not built with CUDA backend; switching to CPU