Глоссарий

OpenCV

Открой для себя мощь OpenCV, главной библиотеки с открытым исходным кодом для компьютерного зрения в реальном времени, обработки изображений и инноваций, основанных на искусственном интеллекте.

Обучай модели YOLO просто
с помощью Ultralytics HUB.

Узнай больше

OpenCV, сокращение от Open Source Computer Vision Library, - это мощная и универсальная библиотека с открытым исходным кодом, широко используемая в искусственном интеллекте (ИИ) и машинном обучении (МОО). Она предоставляет обширный набор инструментов и алгоритмов, специально разработанных для задач компьютерного зрения (CV) в реальном времени, обработки изображений и анализа видео. Для специалистов по машинному обучению OpenCV служит незаменимым набором инструментов для работы с визуальными данными, позволяя решать задачи от базовой загрузки и манипулирования изображениями до сложного понимания сцен. Его открытый исходный код, поддерживаемый OpenCV.org, способствует формированию большого сообщества и постоянному развитию, что делает его краеугольной технологией в этой области. Она легко доступна на различных платформах, включая Windows, Linux, macOS, Android и iOS, и предлагает интерфейсы для таких языков, как Python, C++, Java и MATLAB.

Актуальность в области искусственного интеллекта и машинного обучения

OpenCV играет важную роль в конвейере ИИ и МЛ, особенно при работе с визуальными данными. Он предоставляет фундаментальные инструменты для предварительной обработки данных- важнейшего шага, предшествующего подаче изображений или видео в модели машинного обучения. Общие этапы предварительной обработки, выполняемые OpenCV, включают изменение размера, преобразование цветового пространства (например, BGR в RGB, что часто необходимо для моделей, обученных на конкретных цветовых порядках), подавление шума с помощью фильтров типа гауссова размытия, а также применение различных преобразований для улучшения качества изображения или извлечения соответствующих характеристик. Такая предварительная обработка существенно влияет на производительность моделей глубокого обучения (DL).

OpenCV часто используется в связке с такими популярными ML-фреймворками, как PyTorch и TensorFlow для создания комплексных CV-приложений. В то время как эти фреймворки сосредоточены на построении и обучении нейронных сетей, OpenCV занимается вводом/выводом, манипуляциями и часто постобработкой визуальных данных, например, рисованием ограничительных рамок или масок сегментации, предсказанных такими моделями, как Ultralytics YOLO. Эффективность обработки видеопотоков в реальном времени делает его незаменимым в приложениях, требующих немедленного визуального анализа, например, при выводе в реальном времени данных для обнаружения объектов или оценки позы.

Ключевые особенности и возможности

OpenCV предлагает огромное количество функций (более 2500 алгоритмов), охватывающих как классические техники компьютерного зрения, так и поддерживающих современные интеграции глубокого обучения. Ключевые возможности включают в себя:

  • Ввод/вывод изображений и видео: Чтение и запись различных форматов изображений(JPEG, PNG, TIFF) и видео(AVI, MP4).
  • Обработка изображений: Основные операции, такие как изменение размера, обрезка(см. руководство по обрезке объектов), поворот, преобразование цветового пространства, фильтрация и морфологические преобразования.
  • Обнаружение и описание особенностей: Реализация таких алгоритмов, как SIFT, SURF (собственный, в последних версиях часто заменяется на ORB ) и FAST, для определения ключевых точек на изображениях.(Документация по OpenCV Feature Detection).
  • Обнаружение объектов: Хотя сам он не занимается обучением моделей, он предоставляет инструменты для запуска предварительно обученных детекторов (например, каскадов Хаара для обнаружения лиц) и обработки результатов DL-моделей (например, рисование коробок из YOLO11 предсказания).
  • Анализ видео: Включает в себя инструменты для анализа движения, такие как оптический поток, вычитание фона и алгоритмы отслеживания объектов(см. режим отслеживания).
  • Калибровка камеры и 3D-реконструкция: Функции для понимания геометрии камеры и реконструкции 3D-сцен(Camera Calibration Guide).
  • Модуль машинного обучения: Включает в себя реализацию некоторых классических алгоритмов ML, таких как Support Vector Machines (SVM) и K-Nearest Neighbors (KNN), хотя для задач глубокого обучения обычно используются специальные фреймворки. Он также предлагает функциональные возможности для загрузки и запуска моделей, экспортированных в такие форматы, как ONNX.(Документация по экспорту моделей).

OpenCV в сравнении с родственными концепциями

Полезно отличать OpenCV от смежных терминов:

  • Компьютерное зрение (КВ): КВ - это широкая научная область, занимающаяся тем, что позволяет машинам интерпретировать визуальную информацию. OpenCV - это инструмент или библиотека, используемая для реализации CV-приложений, а не сама область.
  • Обработка изображений: В первую очередь она направлена на манипулирование изображениями (например, повышение контрастности, удаление шума). OpenCV предоставляет обширные функции обработки изображений, но также включает в себя задачи более высокого уровня, такие как распознавание объектов и понимание сцены, которые относятся к компьютерному зрению.
  • ML-фреймворки (PyTorch, TensorFlow): Эти фреймворки предназначены в первую очередь для построения, обучения и развертывания нейронных сетей и других ML-моделей. OpenCV дополняет их, предоставляя необходимые инструменты для работы с визуальными данными до того, как они попадут в модель (препроцессинг), и после вывода (визуализация, постобработка). Хотя OpenCV обладает некоторыми возможностями ML, это не является его основным направлением по сравнению с этими специализированными фреймворками. Ultralytics HUB, например, использует такие фреймворки, как PyTorch , для обучения моделей и может использовать OpenCV неявно или явно для обработки данных.

Применение в реальном мире

Универсальность OpenCV делает его повсеместно используемым в многочисленных AI/ML-приложениях:

  1. Автономные транспортные средства: В самоуправляемых автомобилях и передовых системах помощи водителю (ADAS) OpenCV часто используется для первичной обработки данных с камер и LiDAR. Среди задач - определение полосы движения, распознавание препятствий с помощью сопоставления признаков или определения контуров, распознавание дорожных знаков (часто обработанные изображения подаются на классификатор), а также сшивание изображений для систем объемного обзора. Например, необработанные кадры с камеры могут быть предварительно обработаны (исправлены искажения, скорректирована яркость) с помощью OpenCV, прежде чем они будут переданы в модель глубокого обучения, такую как YOLOv8 для обнаружения автомобилей и пешеходов.(Ознакомься с технологией Waymo).
  2. Анализ медицинских изображений: OpenCV помогает загружать различные форматы медицинских изображений (например, DICOM, часто с помощью других библиотек), повышать контрастность изображений для лучшей видимости аномалий, сегментировать области интереса (например, опухоли или органы) с помощью таких методов, как пороговые или водораздельные алгоритмы, а также регистрировать изображения, полученные в разное время или с помощью различных методов. Эти предварительно обработанные данные затем часто анализируются специализированными ML-моделями для постановки диагноза или планирования лечения.(ИИ в радиологии - RSNA).

Другие области применения включают робототехнику(Integrating Computer Vision in Robotics), видеонаблюдение(Security Alarm Systems), дополненную реальность, контроль качества в производстве и сельское хозяйство (например, мониторинг здоровья растений). В документацииUltralytics приведено множество примеров, когда функции OpenCV можно использовать для предварительных или последующих этапов обработки в сочетании с моделями YOLO .

Читать полностью