Как работать с DNN модуль не был построен с бэкэндом CUDA; переключение на предупреждение процессора в C ++?

Я пытаюсь запустить YOLOv3 в Visual Studio 2019 с использованием CUDA 10.2 с cuDNN v7.6.5 в Windows 10 с использованием NVidia GeForce 930M. Вот часть кода, который я использовал.

#include <fstream>
#include <sstream>
#include <iostream>
#include <opencv2/dnn.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>

using namespace cv;
using namespace dnn;
using namespace std;

int main()
{
    // Load names of classes
    string classesFile = "coco.names";
    ifstream ifs(classesFile.c_str());
    string line;
    while (getline(ifs, line)) classes.push_back(line);

    // Give the configuration and weight files for the model
    String modelConfiguration = "yolovs.cfg";
    String modelWeights = "yolov3.weights";

    // Load the network
    Net net = readNetFromDarknet(modelConfiguration, modelWeights);
    net.setPreferableBackend(DNN_BACKEND_CUDA);
    net.setPreferableTarget(DNN_TARGET_CUDA);

    // Open the video file
    inputFile = "vid.mp4";
    cap.open(inputFile);

    // Get frame from the video
    cap >> frame;

    // Create a 4D blob from a frame
    blobFromImage(frame, blob, 1 / 255.0, Size(inpWidth, inpHeight), Scalar(0, 0, 0), true, false);

    // Sets the input to the network
    net.setInput(blob);

    // Runs the forward pass to get output of the output layers
    vector<Mat> outs;
    net.forward(outs, getOutputsNames(net));
}

Хотя я добавляю $ (CUDNN) \ include; $ (cudnn) \ include; в Дополнительные каталоги включения как в C / C ++, так и в Linker, добавил CUDNN_HALF; CUDNN; в C / C ++> Определения препроцессора и добавил cudnn.lib; в Linker> Input, я все равно получаю это предупреждение:

Модуль DNN не был построен с бэкэндом CUDA; переключение на CPU

и он работает на CPU вместо GPU, может ли кто-нибудь помочь мне с этой проблемой?


person AbdelAziz AbdelLatef    schedule 08.04.2020    source источник
comment
Этот вопрос касается создания модуля OpenCV, а не CUDA и не CUDNN. Вот почему я удалил теги. Здесь нет вопросов программирования, связанных с CUDA или CUDNN.   -  person talonmies    schedule 06.01.2021


Ответы (2)


Я решил это с помощью CMake, но сначала мне пришлось добавить этот opencv_contrib затем перестроите его с помощью Visual Studio. Убедитесь, что эти WITH_CUDA, WITH_CUBLAS, WITH_CUDNN, OPENCV_DNN_CUDA, BUILD_opencv_world отмечены флажком. в CMake.

person AbdelAziz AbdelLatef    schedule 20.04.2020
comment
Модуль DNN не был построен с переключением бэкэнда Cuda на CPU. Я пробовал его при обнаружении объектов pyimage yolo. - person rakshit ks; 04.06.2020
comment
@rakshitks Попробуйте проверить эти параметры в CMake WITH_CUDA, WITH_CUBLAS, WITH_CUDNN, OPENCV_DNN_CUDA, BUILD_opencv_world - person AbdelAziz AbdelLatef; 04.06.2020
comment
да, все есть, но все же, когда я запускаю файл, возникает та же проблема. - person rakshit ks; 05.06.2020
comment
@rakshitks Каковы характеристики вашей машины? а какая операционная система? а какой компилятор вы используете? - person AbdelAziz AbdelLatef; 06.06.2020
comment
Процессор i7 8 ГБ оперативной памяти 2 ГБ графическая карта - person rakshit ks; 06.06.2020
comment
@rakshitks, даже я пробовал с поиском pyimage, у меня это тоже не сработало. Выдает ошибку отсутствия libcodec.so ... Пожалуйста, обновите, если у вас есть какое-либо разрешение - person Varad More; 22.06.2020

Примерно неделю назад у меня была похожая проблема, но я использовал Python и Tensorflow. Хотя языки были разными по сравнению с C ++, я получил ту же ошибку. Чтобы исправить это, я удалил CUDA 10.2 и перешел на CUDA 10.1. Из того, что я обнаружил, может быть проблема зависимости с CUDA, или в вашем случае OpenCV еще не создал поддержку для последней версии CUDA.

ИЗМЕНИТЬ

После некоторых дополнительных исследований, похоже, проблема связана с Opencv, а не с CUDA. Ссылаясь на этот поток github, если вы установили Opencv с помощью cmake, удалите версию bin архива ниже 7 в файле конфигурации, затем перекомпилируйте / переустановите Opencv. Однако, если это не сработает, другой вариант - удалить CUDA arch bin версии ‹5.3 и перестроить.

person Aaron Jones    schedule 08.04.2020
comment
Вы полностью удалили CUDA 10.2, используя их графический интерфейс, и перезапустили? Перед установкой CUDA 10.1? - person Aaron Jones; 09.04.2020
comment
Да без разницы - person AbdelAziz AbdelLatef; 09.04.2020
comment
@AbdelAzizAbdelLatef Я внес некоторые правки, надеюсь, они помогут. - person Aaron Jones; 09.04.2020
comment
Я использую Windows и устанавливаю OpenCV без cmake, поэтому у меня это не работает. - person AbdelAziz AbdelLatef; 11.04.2020