Модуль setU pNet DNN не был построен с бэкэндом CUDA; переключение на CPU - PullRequest
0 голосов
/ 16 июня 2020

Я хочу запустить свой сценарий python с помощью графического процессора, например, вы видите на этой фотографии , я использовал командную строку: watch nvidia-smi, чтобы показать процессы графического процессора, к сожалению, сценарий python используйте всего 41 МБ емкости графического процессора:

это часть моего кода:

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()

Я попытался добавить эту командную строку для принудительного запуска с помощью графического процессора,

net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA)
net.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA)

то после повторного запуска скрипта он дает мне это сообщение и продолжает запускать скрипт с CPU:

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

1 Ответ

0 голосов
/ 29 июля 2020

Вам нужно будет вручную собрать OpenCV для работы с вашим графическим процессором.

Здесь - отличное руководство о том, как это сделать.

...