Как подключить cuda к visual studio 2019
Что необходимо для работы с CUDA
Для работы с CUDA необходимо иметь:
- графический процессор (видеокарту), поддерживающий архитектуру CUDA;
- драйвер для этого устройства от NVIDIA;
- компилятор языка C;
- комплект средств разработки CUDA (CUDA Toolkit).
Пункты 1-3 у меня были, включая компилятор из набора Visual Studio 2008.
CUDA Toolkit можно скачать здесь. Вместе с ним поставляются многочисленные примеры, которые находятся в папке
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.0
В папке 0_Simple\template находится заготовка для стандартного CUDA-проекта.
Как создавать проекты CUDA в Visual Studio и запускать примеры из книги
В VS при создании нового проекта выбираем тип NVIDIA/CUDA 6.0 и из шаблонов: CUDA Runtime 6.0.
После этого VS формирует заготовку проекта, содержащую единственный исходный файл kernel.cu . Он нам не нужен. Вместо него вставляем пример из книги:
Расширение файла .CU имеет значение! Только в таких файлах можно пользоваться CUDA-расширениями языка C++.
Чтобы настроить подсветку синтаксиса в файлах .CU как в C++, нужно в окне Tools -> Options -> Text Editor -> File Extension указать расширение .cu и в списке Editor: — Microsoft Visual C++. После перезапуска VS получим подсветку синтаксиса.
Для исправления нужно добавить квалификатор __device__ в конструктор структуры:
Решение проблемы "Видеодрайвер nVidia перестал отвечать и был успешно восстановлен"
Обзор возможных способов решения этой проблемы приведен здесь. В моем случае помог следующий рецепт.
Необходимо настроить в системном реестре два параметра:
- TdrLevel – управляет восстановлением. По умолчанию равен "3", что означает „TdrLevelRecover – Recover on timeout”, т. е. автоматическое восстановление по истечению времени задержки ( TdrDelay ). Значение "0" соответствует „TdrLevelOff – Detection disabled”, т. е. отключению детектирования ошибок драйвера.
- TdrDelay – время задержки (в секундах), иначе: время реагирования на бездействие драйвера. Значение по умолчанию равно "2". При отключении детектирования ошибок ( TdrLevel = 0 ) значение TdrDelay игнорируется.
Желательно не отключать проверку ошибок, а увеличить время задержки, установив его равным 3-м или более секундам. Значение подбирается экспериментально: можно начать с 10, и постепенно уменьшать время задержки.
Ключи TdrLevel и TdrDelay устанавливаются в редакторе реестра, в ветке HKLM\System\CurrentControlSet\Control\GraphicsDrivers . Возможно, что их придется создать. Ключи имеют тип REG_DWORD, не забудьте указать галочку «десятичная система счисления» при редактировании параметра.
Изменения в реестре вступят в силу после перезагрузки системы.
В результате получим:
Комментарии
Дмитрий Храмов
Компьютерное моделирование и все, что с ним связано: сбор данных, их анализ, разработка математических моделей, софт для моделирования, визуализации и оформления публикаций. Ну и за жизнь немного.
Установка
Инструменты Visual Studio для сценариев ИИ можно устанавливать в 64-разрядных операционных системах Windows.
Установка Visual Studio Tools for AI
Это расширение работает с Visual Studio 2015 и Visual Studio 2017 выпуска Community или более высокого уровня.
Выберите Сервис > Расширения и обновления.
В диалоговом окне Расширения и обновления выберите Online (Онлайн) с левой стороны.
В поле поиска в правом верхнем углу введите "tools for ai" (средства ИИ).
В результатах выберите Visual Studio Tools for AI (Средства Visual Studio для ИИ).
Подготовка локального компьютера
Перед обучением моделей глубокого обучения на локальном компьютере убедитесь в том, что установлены требуемые компоненты. В их число входят последние версии драйверов и библиотек для GPU NVIDIA (если применимо). Убедитесь также в том, что установлены среда и библиотеки Python, такие как NumPy и SciPy, и соответствующие платформы глубокого обучения, такие как Microsoft Cognitive Toolkit (CNTK), TensorFlow, Caffe2, MXNet, Keras, Theano, PyTorch и Chainer, которые планируется использовать в проекте.
Краткие сведения о программном обеспечении в следующих подразделах взяты с домашних страниц соответствующих продуктов.
Драйвер GPU NVIDIA
Платформы глубинного обучения используют GPU NVIDIA, чтобы повысить скорость, точность и масштаб обучения искусственного интеллекта. Если на компьютере установлены видеоадаптеры NVIDIA, ознакомьтесь со страницей скачивания драйверов NVIDIA или попробуйте обновить операционную систему, чтобы установить последнюю версию драйвера.
CUDA — это платформа параллельных вычислений и модель программирования, разработанная компанией NVIDIA. Она существенно увеличивает производительность вычислений благодаря использованию возможностей GPU. В настоящее время для платформ глубинного обучения требуется набор инструментов CUDA 8.0.
- Перейдите на этот сайт, скачайте и установите CUDA.
- Установите библиотеки CUDA времени выполнения, а затем добавьте путь к двоичным файлам CUDA в переменную среды %PATH% или $Path.
- В Windows путь по умолчанию — "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin".
cuDNN
cuDNN (CUDA Deep Neural Network library, библиотека CUDA для глубинных нейронных сетей) — это GPU-ускоренная библиотека примитивов для глубинных нейронных сетей от NVIDIA. Для новейших платформ глубинного обучения требуется cuDNN v6.
- Перейдите на страницу NVIDIA Developer, чтобы скачать и установить последнюю версию пакета.
- Добавьте каталог, содержащий двоичный файл cuDNN, в переменную среды %PATH% или $Path.
- В Windows можно скопировать файл cudnn64_6.dll в каталог "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin".
Более ранние платформы глубинного обучения, такие как CNTK 2.0 и TensorFlow 1.2.1, требуют библиотеки cuDNN v5.1. Можно одновременно установить несколько версий cuDNN.
Python
Python является основным языком программирования для приложений глубинного обучения. Требуется 64-разрядный дистрибутив Python. Для обеспечения максимальной совместимости рекомендуется версия Python 3.5.4.
Установка Python в Windows
- Мы рекомендуем установить средство запуска Python только для себя и добавить Python в переменную среды %PATH%.
- Обязательно установите pip — систему управления пакетами, которая позволяет устанавливать программные пакеты, написанные на Python, и управлять ими.
Платформы глубинного обучения требуют pip для установки.
Затем необходимо проверить, правильно ли установлен Python 3.5, и обновить систему pip до последней версии, выполнив в терминале следующие команды:
Windows
macOS
Python в Visual Studio
Python полностью поддерживается в Visual Studio благодаря расширениям. Получите дополнительные сведения об установке Инструментов Python для Visual Studio.
NumPy и SciPy
NumPy — это пакет обработки массивов общего назначения, который предназначен для эффективной работы с большими многомерными массивами произвольных элементов и в то же время позволяет работать с небольшими многомерными массивами без значительного снижения быстродействия.
SciPy (произносится "сай пай") — это программное обеспечение с открытым кодом для математических, научных и инженерных вычислений, которое зависит от NumPy. Начиная с версии SciPy 1.0.0 предлагается официальный предварительно собранный пакет wheel для Windows.
Чтобы установить NumPy и SciPy, выполните в терминале следующую команду:
gohlke/pythonlibs/ ) до последних официальных версий пакетов.
Microsoft Cognitive Toolkit (CNTK)
Microsoft Cognitive Toolkit — это единый набор средств глубинного обучения, который описывает нейронные сети как ряд вычислительных шагов в виде направленного графа. CNTK поддерживает языки программирования Python и BrainScript.
В настоящее время CNTK не поддерживает macOS.
Сведения об установке пакета CNTK для Python см. в этой статье.
TensorFlow
TensorFlow — это библиотека ПО с открытым кодом для числовых вычислений с использованием графов потоков данных. Подробные инструкции по установке см. здесь.
Начиная с версии 1.2 TensorFlow больше не предоставляет поддержку GPU в macOS.
Caffe2
Caffe2 — это простая, модульная, масштабируемая платформа глубинного обучения. Она построена на основе платформы Caffe и призвана обеспечить максимальное быстродействие и модульность.
В настоящее время готовый пакет wheel на Python для Caffe2 отсутствует.
Сведения о том, как выполнить сборку на основе исходного кода, см. здесь.
MXNet
Apache MXNet (инкубатор) — это платформа глубинного обучения, призванная обеспечить максимальную эффективность и гибкость. Она позволяет сочетать символическое и императивное программирование для достижения максимальной эффективности и продуктивности.
Чтобы установить MXNet, выполните в терминале следующую команду:
Keras
Keras — это высокоуровневый API для нейронных сетей, написанный на Python, который может работать поверх CNTK, TensorFlow или Theano. Главной целью при его разработке являлось обеспечение быстрого проведения экспериментов. Минимальная задержка на пути от идеи к результату — ключевой фактор успешного исследования.
Чтобы установить Keras, выполните в терминале следующую команду:
Theano
Theano — это библиотека Python, которая позволяет эффективно определять, оптимизировать и вычислять математические выражения с многомерными массивами.
Чтобы установить Theano, выполните в терминале следующую команду:
PyTorch
PyTorch — это пакет Python, который представляет две высокоуровневые возможности:
- тензорные вычисления (как и в случае с NumPy) с эффективным ускорением на базе GPU;
- построение глубинных нейронных сетей на основе ленточной системы autograd.
Чтобы установить PyTorch, выполните в терминале следующую команду:
Windows
Официального пакета wheel пока нет. Можно загрузить сторонний пакет из Anaconda или Калифорнийского университета.
Распакуйте его в домашнем каталоге, например C:\Users\test\pytorch.
Добавьте каталог C:\Users\test\pytorch\Lib\site-packages в переменную среды %PYTHONPATH%.
macOS
Двоичные файлы macOS не поддерживают CUDA. Если требуется CUDA, выполните установку из источника.
Linux
Этот пакет поддерживает как GPU, так и ЦП.
Наконец, установите torchvision в ОС, отличных от Windows:
Chainer
Chainer — это платформа глубинного обучения на основе Python, призванная обеспечить гибкость. Она предоставляет интерфейсы API автоматической дифференциации на основе подхода define-by-run (динамические вычислительные графы), а также высокоуровневые объектно-ориентированные интерфейсы API для построения и обучения нейронных сетей.
Чтобы включить поддержку CUDA, установите CuPy:
В Windows требуется версия 2015 среды Visual Studio или Microsoft Visual C++ Build Tools для компиляции CuPy с использованием CUDA 8.0.
Использование CUDA с Visual Studio 2017
есть ли способ обойти проблему совместимости с VS 2017, или я не могу использовать CUDA?
- если вы хотите установить CUDA 8.0 с Visual Studio 2017 необходимо установить дополнительные компоненты для Visual Studio 2017.
Нажмите в меню Пуск и введите установщик Visual Studio. Откройте Установщик Visual Studio
- скачать CUDA toolkit дистрибутив и извлечь его где-нибудь на вашем диске.
- если бы у вас не было CUDA toolkit установлен, сделайте это сейчас. Если у вас есть только Visual Studio 2017 установлен, снимите флажок Visual Studio integration флажок.
Теперь вы хотите получить "No supported version of visual studio was found" ошибка.
но для успешного создания проектов CUDA toolkit в Visual Studio 2017 вам также необходимо выполнить шаги 5 и 6.
- перейти к CUDAVisualStudioIntegration\extras\visual_studio_integration\MSBuildExtensions
папка в извлеченном дистрибутиве, скопируйте все файлы и вставьте их в
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140\BuildCustomizations:
- на последнем шаге вам нужно будет изменить свой Cuda проекты для распознавания задач сборки NVidia из Visual Studio 2017 . Открой свой .vcxproj файл в текстовом редакторе и найти все вхождения CUDA 8.0.props . Замените макрос в начале строки на $(VCTargetsPath14) чтобы фрагмент XML выглядел следующим образом:
не забудьте отредактировать заказ целевой путь в конце файла:
убедитесь, что дважды проверьте свой путь конифурации!
Если вы используете nvcc из командной строки вы, возможно, не вызываете cl.exe С !
теперь вы можете создать свой проект Cuda из Visual Studio 2017.
части этого решения от блог Олега Тарасова.
на данный момент Microsoft по-прежнему делает VS2015 Update 2 community edition доступным. Вы должны присоединиться к программе "Dev essentials", но она кажется бесплатной.
Я смог загрузить установщик из здесь недавно.
возможно, Вам также придется добавить следующее В свои CMakeLists:
list(APPEND CUDA_NVCC_FLAGS —cl-version=2017)
для того, чтобы получить рабочий компилятор Cuda nvcc в оболочке windows вам нужно сделать следующее
установите правильную версию набора инструментов из отдельного компонента для VS 2017 — VC++ 2017 version 15.4 v.14.11 toolset
запуск в оболочке windows после "c:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 -vcvars_ver=14.11
вы можете скомпилировать nvcc код без ошибок из оболочки Windows
я столкнулся с той же проблемой, используя CUDA 9.1 и VS2017 Enterprise.
после изменения компилятора VC++ на v140 (вместо 141) все работает нормально.
но он не перестает показывать ошибку.
Не знаю почему, но попытка запустить его на VS2015 приводит к ошибкам о том, что v141 не установлен. поэтому из-за какой-то извращенной логики я попытался не использовать v141, где он был установлен. и все сработало!!
оставив это здесь, поскольку это может помочь кому-то еще в той же ситуации. (хотя я действительно не понимаю, почему, как, когда, кто и какие решения.
последнее обновление (исправлено с 06/12/2018) последняя версия Cuda-9.2 и последняя версия Visual Studio-2017.7 не работают вместе. Инструкции, приведенные в решении выше, не работают. Вот что сработало для меня:
перейти к отдельным компонентам. Нажмите на Windows 10 SDK 10.0.15063 Введите описание изображения здесь
Это первая публикация из цикла статей об использовании GPGPU и nVidia CUDA. Планирую писать не очень объемно, чтобы не слишком утомлять читателей, но достаточно часто.
Я предполагаю, что читатель осведомлен, что такое CUDA, если нет, то вводную статью можно найти на Хабре.
Что потребуется для работы:
Создание CUDA проекта:
После установки всего необходимого в VS появиться новый вид проекта для С++ с названием CU-DA WinApp, это именно то, что нам надо. В данном типе проекта доступны дополнительные на-стройки для CUDA, позволяющие настроить параметры компиляции под GPU, например версию Compute Capability в зависимости от типа GPU и т.д.
Обычно я создаю чистый проект (Empty Project), так как Precompiled Headers навряд ли пригодиться для CUDA.
Важно отметить, как собирается CUDA приложение. Файлы с расширением *.cpp обрабатываются компилятором MS C++ (cl.exe), а файлы c расширением *.cu компилятором CUDA (nvcc.exe), который в свою очередь определяет, какой код будет работать на GPU, а какой на CPU. Код из *.cu, работающий на CPU, передается на компиляцию MS C++, эту особенность удобно использовать для написания динамических библиотек, которые будут экспортировать функции, использующие для расчетов GPU.
Далее привожу листинг простой программы на CUDA, который выводит на экран информацию об аппаратных возможностях GPU.
Листинг. Программа CudaInfo.
int main()
int deviceCount;
cudaDeviceProp deviceProp;
//Сколько устройств CUDA установлено на PC.
cudaGetDeviceCount(&deviceCount);
printf( "Device count: %d\n\n" , deviceCount);
for ( int i = 0; i < deviceCount; i++)
//Получаем информацию об устройстве
cudaGetDeviceProperties(&deviceProp, i);
//Выводим иформацию об устройстве
printf( "Device name: %s\n" , deviceProp.name);
printf( "Total global memory: %d\n" , deviceProp.totalGlobalMem);
printf( "Shared memory per block: %d\n" , deviceProp.sharedMemPerBlock);
printf( "Registers per block: %d\n" , deviceProp.regsPerBlock);
printf( "Warp size: %d\n" , deviceProp.warpSize);
printf( "Memory pitch: %d\n" , deviceProp.memPitch);
printf( "Max threads per block: %d\n" , deviceProp.maxThreadsPerBlock);
printf( "Max threads dimensions: x = %d, y = %d, z = %d\n" ,
deviceProp.maxThreadsDim[0],
deviceProp.maxThreadsDim[1],
deviceProp.maxThreadsDim[2]);
printf( "Max grid size: x = %d, y = %d, z = %d\n" ,
deviceProp.maxGridSize[0],
deviceProp.maxGridSize[1],
deviceProp.maxGridSize[2]);
printf( "Clock rate: %d\n" , deviceProp.clockRate);
printf( "Total constant memory: %d\n" , deviceProp.totalConstMem);
printf( "Compute capability: %d.%d\n" , deviceProp.major, deviceProp.minor);
printf( "Texture alignment: %d\n" , deviceProp.textureAlignment);
printf( "Device overlap: %d\n" , deviceProp.deviceOverlap);
printf( "Multiprocessor count: %d\n" , deviceProp.multiProcessorCount);
printf( "Kernel execution timeout enabled: %s\n" ,
deviceProp.kernelExecTimeoutEnabled ? "true" : "false" );
>
return 0;
>
* This source code was highlighted with Source Code Highlighter .
В программе я подключаю библиотеку “cuda_runtime_api.h”. Хотя это делать не обязательно, так она инклюдится автоматически, но без неё не будет работать IntelliSence (хотя все равно периодически косячит).
Заключение
Я думаю, что это самый простой способ для написания CUDA-программ, так как требуется минимум усилий для конфигурирования и настройки среды, единственная проблема только с использованием IntelliSence.
В следующий раз будет рассмотрено использование CUDA для математических вычислений и вопросы работы с память видеокарты.
В данной статье речь пойдет о сборке и установке OpenCV 4 для C/C++, Python 2 и Python 3 из исходных файлов с дополнительными модулями CUDA 10 на ОС Windows.
Я постарался включить сюда все тонкости и нюансы, с которыми можно столкнуться в ходе установки, и про которые не написано в официальном мануале.
Сборка тестировалась для:
- Windows 8.1 + Visual Studio 2017 + Python 2/3 + CUDA 10.0 + GeForce 840m
- Windows 10 + Visual Studio 2019 + Python 2/3 + CUDA 10.0 + GeForce GTX 1060
Что потребуется для установки
В моей сборке использовались следующие инструменты:
- CMake 3.15
- MS Visual Studio 2019 64-бит + средства CMake С++ для Windows
- Python 3.7.3 64-бит + NumPy 64-бит
- Python 2.7.16 64-бит + NumPy 64-бит
- CUDA 10.0
- CuDNN 7.6.2
- OpenCV 4.1.1 и OpenCV-contrib-4.1.1
Установка
Так как установка производится через консольные команды, то следует внимательно и аккуратно выполнять все шаги. Также, при необходимости, меняйте установочные пути на свои.
Для начала необходимо установить требуемое ПО, причем Visual Studio должна быть установлена до CUDA:
Далее загружаем архивы исходников opencv-4.1.1 и opencv-contrib-4.1.1 в желаемое место (в моем случае это C:\OpenCV\).
Создаем папку build/ внутри opencv-4.1.1.
Далее сгенерируем файлы сборки с помощью cmake. Мы будем использовать консольный вариант cmake, так как cmake-gui путает типы некоторых переменных (например, OPENCV_PYTHON3_VERSION) и, как следствие, неправильно генерирует файлы.
Открываем консоль по пути C:\OpenCV\ и прописываем переменные.
Примечание. Для Visual Studio 2017 генератор пишется как «Visual Studio 15 2017 Win64» и без флага -A.
Также можно явно указать питоновские библиотеки для python 2 и python 3 на случай, если сборщик не сможет найти их автоматически.
Примечание. Обратите внимание на то, что библиотека NumPy должна быть той же разрядности, что и OpenCV. Проверить это легко:
Выполняем генерацию файлов сборки с помощью длинной команды ниже. При неудачной генерации или наличии ошибок после выполнения команды, повторную генерацию следует производить вычистив все файлы в build/ и .cache/.
- BUILD_opencv_world – необязательный модуль, содержащий копии всех выбранных в ходе установки библиотек. Удобен при разработке на C++, так как вместо подключения кучи зависимостей opencv можно подключить одну зависимость opencv_world411.lib в проект
- INSTALL_EXAMPLES/INSTALL_TESTS – установка примеров/тестов кода opencv
- CUDA_FAST_MATH, WITH_CUBLAS – дополнительные модули для CUDA, призванные ускорить вычисления
- CUDA_ARCH_PTX – версия PTX инструкций для улучшения производительности вычислений
- OPENCV_EXTRA_MODULES_PATH – путь до дополнительных модулей из opencv-contrib (обязательно для CUDA)
- BUILD_PROTOBUF – для работы некоторых модулей opencv необходим Protobuf (сборщик opencv в любом случае поставит BUILD_PROTOBUF=ON)
Спустя примерно 10 минут в консоле должна появиться информация о сборке и завершающие строки «Configuring done» и «Generating done». Проверяем всю информацию, особенно разделы NVIDIA CUDA, Python 2, Python 3.
Далее собираем решение. На сборку может уйти несколько часов в зависимости от вашего процессора и версии Visual Studio.
После успешной установки создаем системную переменную OPENCV_DIR со значением C:\OpenCV\opencv-4.1.1\build\install\x64\vc15\bin и также добавляем ее в PATH.
Проверим работоспособность OpenCV с модулем CUDA на простом примере умножения матриц.
- Установить тип сборки Release/x64 (для Debug следует собрать OpenCV с флагом Debug)
- Project Properties → C/C++ → General → Добавить строку «C:\OpenCV\opencv-4.1.1\build\install\include» в Additional Include Directories
- Project Properties → Linker → General → Добавить строку « C:\OpenCV\opencv-4.1.1\build\install\x64\vc16\lib» в Additional Library Directories
- Project Properties → Linker → General → Добавить «;opencv_world411.lib» («;opencv_world411d.lib» для Debug) в конец Additional Dependencies
Пример на Python 3
Вывод в консоли
Пример на C++
Вывод в консоли
Удаление
Чтобы удалить OpenCV, нужно выполнить команду.
и удалить системную переменную OPENCV_DIR и убрать путь до OpenCV из PATH.
Заключение
В статье мы рассмотрели установку OpenCV 4 для ОС Windows 10. Данный алгоритм тестировался на Windows 8.1 и Windows 10, но, в теории, может собираться и на Windows 7. За дополнительной информацией можно обратиться к списку источников ниже.
P.S. Напоследок сведем все установочные команды в один .bat файл для тех, кто хочет автоматизировать установку.
В данной статье речь пойдет о сборке и установке OpenCV 4 для C/C++, Python 2 и Python 3 из исходных файлов с дополнительными модулями CUDA 10 на ОС Windows.
Я постарался включить сюда все тонкости и нюансы, с которыми можно столкнуться в ходе установки, и про которые не написано в официальном мануале.
Сборка тестировалась для:
- Windows 8.1 + Visual Studio 2017 + Python 2/3 + CUDA 10.0 + GeForce 840m
- Windows 10 + Visual Studio 2019 + Python 2/3 + CUDA 10.0 + GeForce GTX 1060
Что потребуется для установки
В моей сборке использовались следующие инструменты:
- CMake 3.15
- MS Visual Studio 2019 64-бит + средства CMake С++ для Windows
- Python 3.7.3 64-бит + NumPy 64-бит
- Python 2.7.16 64-бит + NumPy 64-бит
- CUDA 10.0
- CuDNN 7.6.2
- OpenCV 4.1.1 и OpenCV-contrib-4.1.1
Установка
Так как установка производится через консольные команды, то следует внимательно и аккуратно выполнять все шаги. Также, при необходимости, меняйте установочные пути на свои.
Для начала необходимо установить требуемое ПО, причем Visual Studio должна быть установлена до CUDA:
Далее загружаем архивы исходников opencv-4.1.1 и opencv-contrib-4.1.1 в желаемое место (в моем случае это C:\OpenCV\).
Создаем папку build/ внутри opencv-4.1.1.
Далее сгенерируем файлы сборки с помощью cmake. Мы будем использовать консольный вариант cmake, так как cmake-gui путает типы некоторых переменных (например, OPENCV_PYTHON3_VERSION) и, как следствие, неправильно генерирует файлы.
Открываем консоль по пути C:\OpenCV\ и прописываем переменные.
Примечание. Для Visual Studio 2017 генератор пишется как «Visual Studio 15 2017 Win64» и без флага -A.
Также можно явно указать питоновские библиотеки для python 2 и python 3 на случай, если сборщик не сможет найти их автоматически.
Примечание. Обратите внимание на то, что библиотека NumPy должна быть той же разрядности, что и OpenCV. Проверить это легко:
Выполняем генерацию файлов сборки с помощью длинной команды ниже. При неудачной генерации или наличии ошибок после выполнения команды, повторную генерацию следует производить вычистив все файлы в build/ и .cache/.
- BUILD_opencv_world – необязательный модуль, содержащий копии всех выбранных в ходе установки библиотек. Удобен при разработке на C++, так как вместо подключения кучи зависимостей opencv можно подключить одну зависимость opencv_world411.lib в проект
- INSTALL_EXAMPLES/INSTALL_TESTS – установка примеров/тестов кода opencv
- CUDA_FAST_MATH, WITH_CUBLAS – дополнительные модули для CUDA, призванные ускорить вычисления
- CUDA_ARCH_PTX – версия PTX инструкций для улучшения производительности вычислений
- OPENCV_EXTRA_MODULES_PATH – путь до дополнительных модулей из opencv-contrib (обязательно для CUDA)
- BUILD_PROTOBUF – для работы некоторых модулей opencv необходим Protobuf (сборщик opencv в любом случае поставит BUILD_PROTOBUF=ON)
Спустя примерно 10 минут в консоле должна появиться информация о сборке и завершающие строки «Configuring done» и «Generating done». Проверяем всю информацию, особенно разделы NVIDIA CUDA, Python 2, Python 3.
Далее собираем решение. На сборку может уйти несколько часов в зависимости от вашего процессора и версии Visual Studio.
После успешной установки создаем системную переменную OPENCV_DIR со значением C:\OpenCV\opencv-4.1.1\build\install\x64\vc15\bin и также добавляем ее в PATH.
Проверим работоспособность OpenCV с модулем CUDA на простом примере умножения матриц.
- Установить тип сборки Release/x64 (для Debug следует собрать OpenCV с флагом Debug)
- Project Properties → C/C++ → General → Добавить строку «C:\OpenCV\opencv-4.1.1\build\install\include» в Additional Include Directories
- Project Properties → Linker → General → Добавить строку « C:\OpenCV\opencv-4.1.1\build\install\x64\vc16\lib» в Additional Library Directories
- Project Properties → Linker → General → Добавить «;opencv_world411.lib» («;opencv_world411d.lib» для Debug) в конец Additional Dependencies
Пример на Python 3
Вывод в консоли
Пример на C++
Вывод в консоли
Удаление
Чтобы удалить OpenCV, нужно выполнить команду.
и удалить системную переменную OPENCV_DIR и убрать путь до OpenCV из PATH.
Заключение
В статье мы рассмотрели установку OpenCV 4 для ОС Windows 10. Данный алгоритм тестировался на Windows 8.1 и Windows 10, но, в теории, может собираться и на Windows 7. За дополнительной информацией можно обратиться к списку источников ниже.
OpenCV C++ Windows Setup using Visual Studio 2019
OpenCV is the Real-Time Computer Vision library which provides various real-time computer vision, video capturing, image processing, and machine learning functionalities. Using OpenCV with Visual Studio you can build robust applications for object detection, image transformation, video capturing, and analysis with fast C++ computations. Follow the given steps and instructions for your OpenCV C++ Windows Setup:
OpenCV Download and Installation:
Follow the below steps to download and install OpenCV on your local machine:
Step 2: Open the downloaded file. A self-extracting zip will open. Before proceeding with installation go and create a folder named OpenCV inside your C:\ drive. Run the installer and extract the zip file to the created folder C:\opencv
Step 3: Now that you have successfully installed OpenCV. The next step is to add binaries to the system path. Open a command prompt with admin privileges and write the command: setx -m OPENCV_DIR C:\opencv\build\x64\vc15 This will add OPENCV_dir as a system variable.
Step 4: Open Environment Variables Settings. Go to Path and add %OPENCV_DIR%\bin
OpenCV Setup is done here. The next step is to go ahead with the Visual Studio Project Configurations.
Visual Studio Project Configuration:
Step 1: Start a new Visual Studio project, and choose the C++ Console App template.
Step 2: After the Project has been created change the Debug to x64 platforms since we are using the x64 version at C:\opencv\build\x64\vc15
Step 3: Inside the Project, tab Open the Properties.
Step 4: Inside Configuration properties select VC++ Directories. The next step is to edit the included directories and library directories to add the OpenCV include directories and library directories. First Select Include Directories then Click on edit. A new window Pops up. Click on Add a new line which is a yellow colored button and enter the path for OpenCV include directories C:\opencv\build\include
Similarly for Library Directories Select Library directories and repeat the above steps. The only change will be the Library Directories path for OpenCV directories i.e. C:\opencv\build\x64\vc15\lib
After this is done go to Linker/Input inside the Project Properties and edit the Additional Dependencies to include the OpenCV DLL opencv_world450d.lib inside our linker.
Apply all the changes made and close the properties. Your OpenCV setup is done. Now you are ready to build amazing apps using OpenCV in C++. You have to repeat all these property changes every time you start a new OpenCV project with Visual Studio 2019.
Установка OpenCV 3 в Windows
Большинство мануалов в интернетах предлагают собрать opencv самостоятельно. Это процесс не быстрый да и требует некоторых умений.
Гораздо проще воспользоваться готовой сборкой библиотеки.
Обратите внимание, что так Вы не сможете использовать статическую библиотеку. В поставке для Windows таковые отсутствуют. Их можно только собрать самостоятельно.
Но какая нам разница. Мы будем пользоваться собранной DLL, которую не нужно собирать.
Как установить OpenCV в Windows
Теперь идем в Мой компьютер — Свойства — Дополнительные параметры системы — Переменные среды
Создаем переменную OPENCV_DIR:
Теперь добавляем opencv в системный путь. Редактируем переменную PATH:
Как создать проект Visual Studio с OpenCV
Создаем новый проект — Win32 Console Application.
Жмем Finish, можно конечно понастраивать, но мы этого делать не будем.
Идем в настройки проекта — Project — Properties.
Переключаем в верхней части окна Platforms в положение All Platforms.
Выбираем в левом столбце C/C++ — General.
Добавляем путь к заголовкам opencv — Additional Include Directories.
Переходим в настройки компановщика — Linker — General.
Здесь указываем путь к файлам lib opencv.
Добавляем DLL opencv как зависимость.
Переходим в Linker — Input и добавляем в поле Additional Dependencies:
или debug версию
Теперь в каталог с исходными файлами кладем любимую картинку.
Для теста используем такую программу.
Эта программа в качестве параметра использует параметр командной строки — имя файла изображения.
Укажем его. Переходим в Project Properties — Debugging.
Указываем имя файла в строке Command Arguments.
Радуемся. Мы собрали наше первое 64 битное Windows приложение OpenCV в Visual Studio.
In Part 1 we have created first app for Computer Vision in C++ Visual Studio 2019 streaming live video from IP Camera and detecting objects but perfomance on CPU about 1–2 FPS is not acceptible for real time processing.
Let’s add GPU acceleration with CUDA technology in our project and compare how it works on sample video.
- Install latest Nvidia driver for your graphics card
- Install CUDA toolkit and cuDNN dll’s — here is full guide:
Installation Guide :: NVIDIA Deep Learning cuDNN Documentation
This cuDNN 8.0.4 Installation Guide provides step-by-step instructions on how to install and check for correct…
3. Now you need to build OpenCV from source with CUDA support (it’s a long story) or just download ready builds for your version. This guy doing great job:
Extract both DEBUG and RELEASE archives to separate folders in C:\opencvcuda:
4. Change system PATH variable and add dependencies to your project:
Add to PATH:
Add to Visual Studio project properties separately for DEBUG and RELEASE configs. Example for RELEASE:
Linker / Input / Additional Dependencies
Now we can run our project with OpenCV CUDA backend:
I have changed YOLOv4 models to full and input sample video in FullHD res to compare perfomance:
and also you can set CONFIDENCE_THRESHOLD = 0.3 parameter to filter detected objects.
CPU only Intel Core i5 9400f:
GPU Geforce RTX 2060 OC:
We have significant acceleration from 1–2 FPS to 22 FPS* that’s awesome!
*Update 1: Use DNN_TARGET_CUDA_FP16 instead of DNN_TARGET_CUDA it will increase rate from 25 FPS to 50–60 FPS
And what about testing again live video from IP camera with minimal settings?
We can set back tiny models and low res and even smaller input res for DNN:
blobFromImage(frame, blob, 0.00392, Size(inpWidth, inpHeight), Scalar(), true, false, CV_32F);
Width, Height of network’s input image 608 you can change to 416 or 320 it will increase rate but also decrease quality of detection.
What a dramatic change to 125–166 FPS*!
*Update 1: Use DNN_TARGET_CUDA_FP16 instead of DNN_TARGET_CUDA it will increase rate to 166–333 FPS
So using CUDA is a must for Computer Vision projects and next you can compare different DNN frameworks or detection quality settings.
Читайте также: