본문 바로가기
설치

Windows 10 + CUDA + Python + OpenCV DNN + OpenVINO + VTK 설치하기

by j2b2 2023. 4. 10.

https://www.youtube.com/watch?v=Gfl6EyIhFvM

위의 영상을 따라 하면 큰 어려움 없이 설치할 수 있다.

OpenCV 홈페이지(https://opencv.org/)에서 배포하는 미리 컴파일된 라이브러리를 사용하다가 이진화 과정에서 sauvola, niblack, wolf, nick 알고리즘을 사용하려면 extra 모듈이 필요하다고 해서 시작했는데 생각보다 오래 걸렸다.
CUDA를 사용하면 DNN에서 속도가 빨라진다. 하지만 GPU로 메모리 복사가 있어서 그만큼의 시간이 추가된다. 이는 OpenVINO도 동일하다.
영상에서는 OpenVINO를 사용하지 않을 거면 제외해도 괜찮다고 하지만, inference에서 NVIDIA GPU를 사용하지 못하는 환경도 있다. 이 경우 Intel 내장 그래픽이 장착된 CPU를 사용하면 GPU 가속을 사용할 수 있다. 예를 들어 YOLOv5도 OpenVINO를 inference에서 활용할 수 있다고 한다. https://github.com/ultralytics/yolov5/issues/5533

설치 순서는 영상과 같고, 2022년 5월 12일 기준으로 변경된 부분을 위주로 글을 쓴다.

사전 다운로드
Windows 10 https://www.microsoft.com/ko-kr/software-download/windows10
Visual Studio 2019 https://visualstudio.microsoft.com/ko/vs/older-downloads/#visual-studio-2019-and-other-products
CUDA 11.2 https://developer.nvidia.com/cuda-toolkit-archive
cuDNN 8.1.1 https://developer.nvidia.com/rdp/cudnn-archive
CMake 3.23.1 https://cmake.org/download/
Python 3.9.7 (Anaconda3 2021.11버전) https://www.anaconda.com/
OpenVINO 2021.4.2 LTS https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/download-previous-versions.html?operatingsystem=window&distributions=webdownload&version=2021+4.2+LTS&options=offline
OpenCV 4.5.5 https://github.com/opencv/opencv/releases
OpenCV 4.5.5 contrib https://github.com/opencv/opencv_contrib/tags
Eigen 3.4.0 https://eigen.tuxfamily.org/index.php?title=Main_Page
VTK 9.1.0 https://vtk.org/download/
OneAPI 2022.2 https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit-download.html?operatingsystem=window&distributions=webdownload&options=offline
OpenBLAS 0.3.20 https://www.openblas.net/


1. Windows 10
    -> 2022년 5월 12일 기준으로 OpenVINO가 Intel GPU를 Windwos 10에서만 지원한다. 그리고 Windows 11은 Intel CPU 12세대에서 사용하는 것을 추천한다고 나와 있다. https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/system-requirements.html

2. NVIDIA 그래픽 카드 드라이버 최신 업데이트
    -> 영상을 그대로 따라하면 CUDA release 당시의 최신 드라이버가 설치된다.

3. Visual Studio 2019 설치
    -> OpenCV도, CUDA(11.6 이상)도 이제는 Visual Studio 2022를 지원한다. 하지만 Tensorflow가 현재 2.8이 최신이고, Tensorflow 2.8에서는 Visual Studio 2019+CUDA 11.2+CUDNN 8.1.1을 지원한다. https://www.tensorflow.org/install/source_windows?hl=ko#gpu 

 


설치 순서
1. CUDA toolkit 설치 (11.2)
    -> tensorflow CUDA 지원 https://www.tensorflow.org/install/source_windows#gpu
2. cuDNN 설치 (8.1.1)
3. CMake 설치 (3.23.1)
4. Python 설치 (3.9.7)
    -> Deep Learning training을 python으로 할 것이고, 그 과정에서 여러 차례 삽질을 할 예정이므로, Anaconda를 설치한다.
5. OpenVINO 설치 (2021.4.2 LTS)
    -> 이 글을 쓰는 이유이기도 하다. OpenCV+CUDA는 검색으로 여러 글이 나오지만, OpenVINO는 찾기가 어려웠다.
    -> OpenVINO 다운로드 페이지에 가면 선택 장애가 올 수 있는데, 최신버전이 좋다고 2022.1을 설치하면 힘들어진다.

         2022.1은 standard 버전이고 영상을 따라하고 싶다면 2021.4.2 LTS를 설치해야 한다.
    -> 2022년 5월 12일 기준으로 Intel GPU를 Windows 10에서만 지원한다.

         https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/system-requirements.html
6. OneAPI 설치 (2022.2)
    -> TBB, IPP, MKL이 포함된 Intel toolkit. base toolkit을 설치하는 과정에서 여러 가지가 있으나, TBB, IPP, MKL만 설치해도 된다.
7. OpenCV 4.5.5 소스코드 다운로드 (main & extra)
    -> OpenCV 4.5.5 소스코드 링크를 따라가면 OpenCV+OpenVINO+VS2019+AVX2가 적용된 배포판도 있지만, CUDA가 없다. OpenVINO만 사용할 환경에서는 이것을 사용해도 될 듯하다.
8. Eigen 3.4.0 소스코드 다운로드
    -> OpenCV와 같은 레벨의 폴더에 압축을 풀어준다. (C:\opencv\eigen-3.4.0)
9. OpenBLAS 0.3.20 소스코드 다운로드
    -> OpenCV와 같은 레벨의 폴더에 압축을 풀어준다. (C:\opencv\OpenBLAS)
10. VTK 9.1.0 소스코드 다운로드
    -> VTK는 OpenCV 정적으로 먼저 빌드를 해야 하므로 OpenCV와 같은 레벨의 폴더에 압축을 풀어준다. (C:\vtk\VTK-9.1.0)
11. VTK CMake 설정 & VTK.sln 파일 생성
    -> 기본 설정에서 변경한 부분만 정리
    -> BUILD_SHARED_LIBS = off                                      // on으로 하면 VTK 빌드 결과물도 같이 가지고 다녀야 한다.

         https://darkpgmr.tistory.com/184
    -> CMAKE_INSTALL_PREFIX = C:/vtk/build/install       // 빌드 결과물 저장 경로
    -> VTK_BUILD_EXAMPLES = on
    -> VTK_USE_CUDA = on                                                // VTK도 CUDA 지원된다.
    -> 아래 3항목은 VTK build로 검색하다가 발견했다. https://luckygg.tistory.com/125
    -> VTK_MODULE_ENABLE_VTK_RenderingContext2D = YES
    -> VTK_MODULE_ENABLE_VTK_RenderingContextOpenGL2 = YES
    -> VTK_MODULE_ENABLE_VTK_RenderingCore = YES
12. Visual Studio 2019에서 VTK 빌드!!!
    -> i7-10750H, DDR4 2933MHz 16GB, GTX1660Ti, NVMe(순차읽기:3,500MB/s 순차쓰기:2,400MB/s)에서 Debug 약 20분, Release 약 25분이 걸렸다.
13. OpenCV CMake 설정 & opencv.sln 파일 생성
    -> 기본 설정에서 변경한 부분만 정리한다.
    -> BUILD_EXAMPLES = on
    -> BUILD_opencv_world = on
    -> OPENCV_EXTRA_MODULES_PATH = C:/opencv/opencv_contrib-4.5.5/modules
    -> BUILD_PERF_TESTS = off
    -> BUILD_TESTS = off
    -> BUILD_opencv_python_tests = off
    -> WITH_CUDA = on
    -> OPENCV_DNN_CUDA = on
    -> WITH_OPENGL = on
    -> WITH_INF_ENGINE = on
    -> configure를 한번 해줘야 아래 목록들이 나타난다.
    -> CUDA_ARCH_BIN = 7.5                     // GPU에 따라 다르다. https://ko.wikipedia.org/wiki/CUDA
    -> InferenceEngine_DIR = C:/Program Files (x86)/Intel/openvino_2021/deployment_tools/inference_engine/share                                                          // OpenVINO가 변경되면서 경로도 변경됐다.
    -> WITH_NGRAPH = on     // 영상에서는 언급이 없는데 기본 설정(off)으로 빌드하면 inference engine 관련 에러가 발생한다.
    -> 아래는 영상에서 언급이 없었지만 추가한 목록들이다. 다크 프로그래머님 글을 참고했다.

         https://darkpgmr.tistory.com/184
    -> BUILD_WITH_STATIC_CRT = off
    -> BUILD_PACKAGE = off               // on을 하게 되면 빌드 시간이 늘어난다고 한다.
    -> CPU_BASELINE = AVX2             // CPU에서 지원하는 명령어 세트로 설정하면 된다.
    -> CPU_DISPATCH =                       // 공백으로 둔다.
    -> WITH_EIGEN = on
    -> EIGEN_INCLUDE_PATH = C:/opencv/eigen-3.4.0
    -> OpenBLAS_INCLUDE_DIR = C:/opencv/OpenBLAS
    -> WITH_TBB = on
    -> MKL_WITH_TBB = on
    -> MKL_USE_SINGLE_DYNAMIC_LIBRARY = on                 // 기본설정(off)으로 빌드하면 링크 오류 발생

                                                                                                        https://github.com/opencv/opencv/pull/19064
    -> MKL_ROOT_DIR = C:/Program Files (x86)/Intel/oneAPI/mkl/2022.1.0
    -> TBB_DIR = C:/Program Files (x86)/Intel/oneAPI/tbb/2021.6.0/lib/cmake/tbb               // OpenVINO 하위 폴더가 기본으로 잡히는데, 그대로 빌드할 경우 'tbb_debug.lib'파일이 없다는 오류 발생.
    -> TBB_VER_FILE = C:/Program Files (x86)/Intel/oneAPI/tbb/2021.6.0/include/oneapi/tbb/version.h
    -> OPENCV_ENABLE_NONFREE = on
    -> WITH_VTK = on
    -> VTK_DIR = C:/vtk/build
    -> ENABLE_FAST_MATH = on
    -> CUDA_FAST_MATH = on
    -> WITH_CUDNN = on
    -> WITH_CUBLAS = on
    -> WITH_CUFFT = on
    -> configuration option의 자세한 설명은 OpenCV 문서에 나와 있다.

         https://docs.opencv.org/4.5.5/db/d05/tutorial_config_reference.html
14. Visual Studio 2019에서 빌드!!!
    -> i7-10750H, DDR4 2933MHz 16GB, GTX1660Ti, NVMe(순차읽기:3,500MB/s 순차쓰기:2,400MB/s)에서 Debug 약 50분, Release 약 55분이 걸렸다.
15. 환경변수 추가
    -> 변수 이름: OPENCV_DIR
    -> 변수 값: C:\opencv\build\install
    -> Path 추가: %OPENCV_DIR%\x64\vc16\bin
    -> OpenVINO를 실행하는데 필요한 dll 파일들이 흩어져 있다.
    -> C:\Program Files (x86)\Intel\openvino_2021\deployment_tools\inference_engine\bin\intel64\Release
    -> C:\Program Files (x86)\Intel\openvino_2021\deployment_tools\inference_engine\bin\intel64\Debug
    -> C:\Program Files (x86)\Intel\openvino_2021\deployment_tools\ngraph\lib
    -> C:\Program Files (x86)\Intel\openvino_2021\deployment_tools\inference_engine\external\tbb\bin
    -> C:\Program Files (x86)\Intel\oneAPI\mkl\2022.1.0\redist\intel64

 

 


2023.01.29 추가

OpenCV 4.7.0. + Python 3.9.13 +OpenVINO 2022.3 LTS + CUDA 11.4.4 + cuDNN 8.2.4 + VTK 9.2.5를 적용한 새글보기