Как стать автором
Обновить

Как быстро поднять OpenCV with CUDA для Python и С++ без компиляции 2.5 часа


Маленькая предыстория … хотя СТОП, нет времени, надо дальше «пилить» :).


Задачи руководства:


            Ускорить внедрения поддержки NVIDIA CUDA для OpenCV и использования с Python или С++.


Решаема проблема:


Компиляция OpenCV с CUDA, может занимать более 2.5 часов.


Решение


Версии пакетов:


Данная реализация проверялась на следующих версиях пакетов:


Таблица версий пакетов:


  Пакет Версия
1 ОС Win 7 x64 SP1, Win 10
2 NVIDIA CUDA, cuDNN 9.2, 10.x 9.2
3 OpenCV 4.4.x
4 Python 3.7

1. Сделать архив папки pythonsite-package/cv2 ( просто чтобы был на всякий)


2. В неё распаковать архив rls_python_opencv_cuda.7z



            Содержит следующие файлы:


                        1. opencv_world440.dll


                        2. opencv_img_hash440.dll


3. cv2.cp37-win_amd64.pyd




 Рис. 1. Содержание архива rls_python_opencv_cuda.7z


             Удивляет размер библиотеки, но что удивительно всё это добро жмётся в ~50 МБ.


3. Распаковать CUDA_bin_v9.2.7z в любую папку и прописать в PATH системы


К папке CUDA/bin и CUDA/libvnn


Примечание: Важно,  CUDA_bin_v9.2.7z можно и не качать, если у вас установлена одна из версий CUDA( проверить какая версия подходит для какой карты можно по [3]). Содержит в себе папку к откомпилированными библиотеками CUDA, качать релизы других версий можно по ссылке [4] .


Поэтому данный шаг можно и пропустить


4. Затем прописать в вашем коде, там где открывается модель сети следующее:


net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA)


net.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA)


            или качаем готовый пример [5]


Возможные трудности:


            На нескольких машинах была такая ошибка при запуске python приложения


«CUDA driver version is insufficient for CUDA runtime version….».


Которая решалась установкой новых драйверов NVIDIA по ссылке [4].


Ссылки на ресурсы для скачивания откомпилированной сборки:


1.!!! rls_python_opencv_cuda.7z


2. CUDA_bin_v9.2.7z


3. Пример AR по статье [2]


Так же понятно, что данная библиотека подходить не только для программирования для Python? Но так же может быть использована для программирования на С++


Ссылки на литературу, где описывается процесс компиляции:


1. Установка OpenCV + CUDA на Windows 


            (Очень подробно описан процесс, по нему и делал)


2. How to use OpenCV’s “dnn” module with NVIDIA GPUs, CUDA, and cuDNN (Статья AR протокаккомпилитьпод linux )-


3. Поддержка карт и версий CUDA — (кликайте по строке и раскрывается список)


4. CUDA Releases


5. Пример AR по статье [2]


ЗЫ : Если кто то  подобное сделал уже или тоже есть откомпилированные библиотеки под Linux, дайте знать.


ЗЗЫ:   Так же рад буду любой критике (хотя не люблю её, шутка без неё саморазвития нету), только будьте добрее.

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.