>

Пакеты Conan>

opencv-dnn-ml

opencv-dnn-ml

OpenCV-dnn-ml — это объединение двух модулей библиотеки OpenCV (Open Source Computer Vision Library): dnn (Deep Neural Networks) и ml (Machine Learning). Модуль dnn предоставляет инфраструктуру для загрузки и запуска предобученных моделей глубокого обучения из популярных фреймворков, а также для выполнения инференса на различных бэкендах. Модуль ml включает классические алгоритмы машинного обучения, такие как метод опорных векторов, деревья решений, бустинг и кластеризацию. Вместе они образуют мощный инструментарий для решения широкого круга задач компьютерного зрения и анализа данных.

Особенности

  • модуль dnn поддерживает загрузку моделей из TensorFlow, PyTorch, Caffe, Darknet, ONNX и других фреймворков;
  • возможность выполнения инференса на CPU, GPU (CUDA, OpenCL) и специализированных бэкендах (Intel OpenVINO, ARM NPU);
  • модуль ml содержит реализации классических алгоритмов машинного обучения с единообразным API;
  • предобученные модели для задач классификации, детекции, сегментации и распознавания лиц доступны в OpenCV Model Zoo;
  • инструменты для предобработки изображений (приведение размера, нормализация) в связке с модулем imgproc.

Основные компоненты

Объединённый модуль состоит из двух частей, которые дополняют друг друга: классические методы машинного обучения и современные подходы на основе глубоких нейронных сетей (подробнее с документацией можно ознакомиться здесь).

Глубокие нейронные сети

Модуль dnn позволяет загружать модели, обученные в различных фреймворках, и выполнять инференс без необходимости устанавливать эти фреймворки. Он также предоставляет средства для оптимизации и запуска моделей на гетерогенном оборудовании.

Основные возможности модуля dnn:

  • cv::dnn::readNet() — загрузка модели из файлов (например, .pb, .onnx, .caffemodel, .weights);
  • cv::dnn::blobFromImage() — преобразование изображения в формат входного тензора (blob) с нормализацией и изменением размера;
  • cv::dnn::Net::forward() — прямой проход (инференс) для получения выходных данных;
  • поддержка различных бэкендов и целевых устройств через cv::dnn::setPreferableBackend() и cv::dnn::setPreferableTarget();
  • cv::dnn::NMSBoxes() — Non-Maximum Suppression для постобработки детекций;
  • работа с моделями для классификации, детекции (YOLO, SSD, Faster R-CNN), сегментации (Mask R-CNN, U-Net) и оценки позы.

Поддерживаемые форматы и бэкенды

Модуль dnn поддерживает множество форматов моделей и позволяет выбирать оптимальный бэкенд для выполнения инференса в зависимости от доступного оборудования.

Основные форматы моделей:

  • ONNX (.onnx) — открытый формат обмена нейросетями;
  • TensorFlow (.pb, .pbtxt) — замороженные графы TensorFlow 1.x;
  • Caffe (.prototxt, .caffemodel) — модели Caffe;
  • Darknet (.cfg, .weights) — модели YOLO;
  • Torch (.net) — старый формат Torch7;
  • OpenVINO (.xml, .bin) — оптимизированный формат Intel.

Поддерживаемые бэкенды:

  • DNN_BACKEND_DEFAULT — авто-выбор (обычно OpenCV);
  • DNN_BACKEND_OPENCV — собственная реализация на CPU;
  • DNN_BACKEND_INFERENCE_ENGINE — Intel OpenVINO;
  • DNN_BACKEND_HALIDE — экспериментальный бэкенд на Halide;
  • DNN_BACKEND_CUDA — NVIDIA CUDA (требуется сборка с CUDA);
  • DNN_BACKEND_OPENCL — OpenCL;
  • DNN_BACKEND_VKCOM — Vulkan (экспериментально).

Классическое машинное обучение

Модуль ml предоставляет реализацию классических алгоритмов машинного обучения с единообразным интерфейсом, основанным на классах cv::ml::StatModel. Это позволяет легко обучать модели и использовать их для предсказаний.

Основные алгоритмы модуля ml:

  • SVM (метод опорных векторов)cv::ml::SVM для задач классификации и регрессии;
  • Деревья решенийcv::ml::DTrees для классификации и регрессии;
  • Случайный лесcv::ml::RTrees (ансамбль деревьев);
  • Бустингcv::ml::Boost (AdaBoost и другие);
  • k-ближайших соседейcv::ml::KNearest;
  • Нейронные сетиcv::ml::ANN_MLP (многослойный перцептрон);
  • Логистическая регрессияcv::ml::LogisticRegression;
  • EM-алгоритмcv::ml::EM для кластеризации;
  • Нормализация и PCAcv::PCA, cv::LDA для снижения размерности.

Обучение и оценка моделей

Модуль ml предоставляет удобные методы для обучения моделей на пользовательских данных и оценки их качества. Все модели следуют общей парадигме: train(), predict(), save(), load().

Основные функции обучения:

  • cv::ml::TrainData::create() — создание структуры данных для обучения из матриц признаков и ответов;
  • StatModel::train() — обучение модели на подготовленных данных;
  • StatModel::calcError() — вычисление ошибки на валидационной выборке;
  • StatModel::predict() — предсказание для новых данных;
  • StatModel::save() и StatModel::load() — сохранение и загрузка обученной модели в формате XML/YAML/JSON.

Интеграция с модулями OpenCV

Модули dnn и ml тесно интегрируются с другими модулями OpenCV, такими как core (базовые структуры), imgproc (обработка изображений) и video (работа с видео). Это позволяет создавать законченные пайплайны компьютерного зрения.

Примеры интеграции:

  • Извлечение признаков с помощью imgproc (HOG, SIFT) и передача их в классификатор из ml;
  • Предобработка кадров видео (масштабирование, цветокоррекция) перед подачей в нейросеть из dnn;
  • Использование dnn для детекции объектов и ml для классификации выделенных областей;
  • Визуализация результатов инференса с помощью функций рисования из imgproc.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "opencv-dnn-ml/4.9.0@aurora",
    )    

Процесс локальной сборки описан в документации.

opencv-dnn-ml

OpenCV: Open Source Computer Vision Library
Лицензия
Apache License 2.0
Версия
Автор
Daniil Markevich <d.markevich@omp.ru>
Домашняя страница
Скачать
armv7
9.12 Mb
MD5: b88a9eaeeb99dcbc841f01d48bc19834
Updated: 03.09.2025, 16:24:03
armv8
9.76 Mb
MD5: fd685a0ba9f8a71fefd95c154eccdb34
Updated: 03.09.2025, 16:23:40
x86_64
24.4 Mb
MD5: f19bcbf380a6fcff72155cb4a5924026
Updated: 03.09.2025, 16:24:18
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.