C# - Emgu CV dnn module - Failed to parse NetParameter file

public static void DetectObjects(Bitmap image)
    {
        Mat blob = DnnInvoke.BlobFromImage(image.ToMat());
        _netModel.SetInput(blob);
        Mat output = _netModel.Forward();

        MessageBox.Show(output.ToString());
    }

    private static Net _netModel = DnnInvoke.ReadNetFromDarknet("C:/Users/user/Downloads/yolov4-tiny.cfg.txt, C:/Users/user/Downloads/yolov4-tiny.weights");

Этот код бросает исключение CvException: OpenCV: Failed to parse NetParameter file: C:/Users/user/Downloads/yolov4-tiny.cfg.txt, C:/Users/user/Downloads/yolov4-tiny.weights

Для решения проблемы пытался использовать советы вроде этих: https://stackoverflow.com/questions/55792523/failed-to-parse-netparameter-file (Использовать абсолютный путь, скачать новые файлы darknet'а), изменений не последовало.

Также была просмотрена эта страница: https://github.com/cansik/yolo-hand-detection/issues/6, на ней тоже предлагали использовать абсолютные пути, но кроме этого спросили, не забыли ли скачать некую "модель", а позже вопрос закрыли, перед этим написав что да, действительно забыли скачать. Я не совсем понимаю что подразумевается под этой моделью что её можно было забыть скачать, может и я тоже её не скачал..

Как итог должна получится функция получающая на вход изображение и отдающая как результат список координат найденных объектов.


Ответы (1 шт):

Автор решения: S.H.

Судя по используемой в коде терминологии, речь идёт о DNN - deeplearning neural network, то есть нейронной сети глубокого обучения.

В таком случае, модель - это такой "конфиг сети", то есть набор данных, который описывает её архитектуру, конфигурацию и используемые алгоритмы обучения. Как я понял из кода, Вы ожидаете загрузить "модель с весами", то есть, уже "предобученную" нейронку.

Если Вы хотите в этом разобраться - попробуйте прочитать что нить о распознавнии на основе нейронок. Также, Вы можете исправить воопрос, написав подробнее, какую задачу решает Ваш код.

→ Ссылка