Opencv Gpu 사용 | Python용 Gpu로 Opencv를 설치하고 빌드하는 방법 | Vs 코드 | Nvidia Cuda 및 Opencv 4.5.2 10021 명이 이 답변을 좋아했습니다

당신은 주제를 찾고 있습니까 “opencv gpu 사용 – Python용 GPU로 OpenCV를 설치하고 빌드하는 방법 | VS 코드 | NVIDIA Cuda 및 OpenCV 4.5.2“? 다음 카테고리의 웹사이트 https://you.tfvp.org 에서 귀하의 모든 질문에 답변해 드립니다: https://you.tfvp.org/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 Nicolai Nielsen – Computer Vision \u0026 AI 이(가) 작성한 기사에는 조회수 24,774회 및 좋아요 362개 개의 좋아요가 있습니다.

opencv gpu 사용 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 Python용 GPU로 OpenCV를 설치하고 빌드하는 방법 | VS 코드 | NVIDIA Cuda 및 OpenCV 4.5.2 – opencv gpu 사용 주제에 대한 세부정보를 참조하세요

In this Computer Vision Tutorial, we are going to Install and Build OpenCV with GPU for Python. We are going to use NVIDIA Cuda to run our OpenCV programs on an NVIDIA GPU. We will go over the installation process for all the required programs and files. We will then use CMake to do the configuration of the OpenCV source files and then build them with GPU support later on. At the end of the video, I’ll show how we can include the OpenCV library with GPU support in Visual Studio Code and see how we can verify that everything is set up correctly.
————————————————————————————————————————-
Video for Installation and C++: https://youtu.be/-GY2gT2umpk
OpenCV Source Code: https://github.com/opencv/opencv/tree/4.5.2
OpenCV Contrib: https://github.com/opencv/opencv_contrib/tree/4.5.2
Visual Studio 2019: https://visualstudio.microsoft.com/downloads/
Anaconda 3: https://www.anaconda.com/products/individual
CMake: https://cmake.org/download/
NVIDIA Cuda: https://developer.nvidia.com/cuda-downloads
NVIDIA cuDNN: https://developer.nvidia.com/rdp/cudnn-download
cuDNN Installation Guide: https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#install-windows
Cuda Wikipedia: https://en.wikipedia.org/wiki/CUDA
Command to Install: cmake –build \”C:\\your_path\\build\” –target INSTALL –config Release

The code example is available on my GitHub: https://github.com/niconielsen32
————————————————————————————————————————-
Join this channel to get access to exclusive perks:
https://www.youtube.com/channel/UCpABUkWm8xMt5XmGcFb3EFg/join
Join the public Discord chat here: https://discord.gg/5TBkPHHZA5

Time Stamps:
0:00 – Overview
2:30 – Download OpenCV Source
3:37 – Anaconda and Python
7:33 – CMake Configuration
19:34 – Verify Installation and VSCode Setup Python

I’ll be doing other tutorials alongside this one, where we are going to use C++ for Computer Vision and Artificial Intelligence. The purpose of this tutorial and channel is to build an online coding library where different programming languages and computer science topics are stored in the YouTube cloud in one place.
Feel free to comment if you have any questions about the things I’m going over in the video or just in general, and remember to subscribe to the channel to help me grow and make more videos in the future. 🙂
Tags for the video:
#OpenCV #opencvGPU #NVIDIA #Cuda #ComputerVision #OpenCVpython #Python

opencv gpu 사용 주제에 대한 자세한 내용은 여기를 참조하세요.

딥러닝을 위한 cuda 지원 opencv 설치 및 활용 방법 (with …

… opencv 4.2 버전부터는 라이브러리 자체에서 NVIDIA GPU 가속 기술인 cuda를 지원하고 있습니다. 하지만 막상 opencv에서 cuda 가속을 사용하려면 …

+ 여기에 보기

Source: ellun.tistory.com

Date Published: 7/3/2021

View: 7225

OpenCV + CUDA 직접 빌드하기 (Windows/Linux 종합)

이번 기회에 opencv 빌드에 필요한 내용들을 다시 한번 정리해 둔다. … 빌드한 opencv를 여러 컴퓨터나 GPU에서 사용할 예정이라면 지원할 GPU …

+ 여기에 표시

Source: darkpgmr.tistory.com

Date Published: 2/25/2022

View: 8497

Build OpenCV 4.5.1 with CUDA (GPU) Support on Windows …

Build OpenCV 4.5.1 with CUDA (GPU) Support on Windows 10 (Python 3.8) … 6.3 다운받은 두 파일을 동일한 폴더에 압축해제 (이후 설정에도 사용 …

+ 여기에 표시

Source: yunwoong.tistory.com

Date Published: 4/6/2021

View: 6188

Visual Studio 2019에서 CUDA를 적용한 OpenCV 빌드하기

이번 영상에서는 OpenCV에서 GPU 가속을 사용하기 위해 OpenCV를 빌드하는 방법을 다룹니다. 사용중인 NVIDIA 그래픽카드에 맞는 CUDA Toolkit와 …

+ 더 읽기

Source: webnautes.tistory.com

Date Published: 8/11/2021

View: 7404

해봤어요 – 이번 영상에서는 OpenCV에서 GPU 가속을 사용하기 …

이번 영상에서는 OpenCV에서 GPU 가속을 사용하기 위해 OpenCV를 빌드하는 방법을 다룹니다. 사용중인 NVIDIA 그래픽카드에 맞는 CUDA Toolkit와 cuDNN을 설치하고 …

+ 여기에 표시

Source: www.facebook.com

Date Published: 4/25/2021

View: 7051

처리 속도 향상을 위해 OpenCV CUDA를 활용한 도로 영역 검출

NVIDIA GeForceGTX 560Ti모델의 그래픽 카드를 사용하여 기존 방식보다 3.09배 빠른 처리 속도를 가짐을 실험. 을 통해 검증한다. 주제어 : GPU,CUDA,OpenCV CUDA, …

+ 더 읽기

Source: koreascience.kr

Date Published: 9/17/2022

View: 2933

[vc++] cmake로 opencv + cuda library 만들기 – 다음블로그

CUDA Toolkit 설치 https://developer.nvia.com/cuda-downloads CUDA Toolkit … D:/opencv/opencv_4.5.2/opencv_contrib-master/modules 로 설정.

+ 더 읽기

Source: blog.daum.net

Date Published: 11/29/2021

View: 1245

[CUDA] Visual Studio 2015, OpenCV , CUDA 연동하기

비주얼 스튜디오에 직접 연동하였고, CMAKE는 사용하지 않았다. (수정. CMAKE를 사용하지 않고 환경 설정을 할 경우 gpu 인식을 하지 못한다고 한다.

+ 여기에 자세히 보기

Source: eehoeskrap.tistory.com

Date Published: 6/3/2022

View: 1853

주제와 관련된 이미지 opencv gpu 사용

주제와 관련된 더 많은 사진을 참조하십시오 Python용 GPU로 OpenCV를 설치하고 빌드하는 방법 | VS 코드 | NVIDIA Cuda 및 OpenCV 4.5.2. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

Python용 GPU로 OpenCV를 설치하고 빌드하는 방법 | VS 코드 | NVIDIA Cuda 및 OpenCV 4.5.2
Python용 GPU로 OpenCV를 설치하고 빌드하는 방법 | VS 코드 | NVIDIA Cuda 및 OpenCV 4.5.2

주제에 대한 기사 평가 opencv gpu 사용

  • Author: Nicolai Nielsen – Computer Vision \u0026 AI
  • Views: 조회수 24,774회
  • Likes: 좋아요 362개
  • Date Published: 2021. 5. 29.
  • Video Url link: https://www.youtube.com/watch?v=HsuKxjQhFU0

딥러닝을 위한 cuda 지원 opencv 설치 및 활용 방법 (with Python + Windows 10)

728×90

opencv는 c++ 기반의 영상, 이미지 처리 오픈소스 라이브러리로 많이 활용되고 있는데요.

몇 년전부터 딥러닝 기술이 많이 이루어지면서 대용량 데이터 학습 및 처리를 위해 속도 향상을 위해 GPU의 중요성이 올라가고 있어서, opencv 4.2 버전부터는 라이브러리 자체에서 NVIDIA GPU 가속 기술인 cuda를 지원하고 있습니다.

하지만 막상 opencv에서 cuda 가속을 사용하려면 단순히 인터넷이나 서버에서 라이브러리를 다운받아 쓰는 게 아니라, 사용자의 하드웨어 및 개발환경에 맞춰서 라이브러리를 생성하는 빌드(build) 작업을 해주어야 하는데,

이 과정이 꽤 번거로울 뿐 아니라 시간도 엄청 오래 걸리고(2시간 이상) 사용자 컴퓨터에 따라 인터넷을 보고 따라해도 잘 안되는 경우가 많아서 여간 스트레스가 아닙니다.

저도 윈도우 컴 2개와 리눅스 컴 하나로 시도했는데도 다 중간에 에러가 뜨거나 파일이 생성되야 하는데 안나오거나 하는 등 문제가 있어서 장장 1주일 넘게 설치했다 지웠다를 반복하고 나서야 겨우 성공했네요.

그래서 이번에는 윈도우 환경에서 cmake를 통해 opencv를 빌드하는 방법 중에 제일 간편하고 시간이 적게 걸리는 방법을 설명드리고, python에서 opencv 코드로 cuda 가속을 적용하는 것 까지 해보도록 하겠습니다.

이번 글 작성을 위해 참고하였고 opencv 빌드 방법에 대해 잘 소개되어 있는 두 개 자료를 먼저 소개합니다.

– https://jamesbowley.co.uk/build-opencv-with-cuda-in-windows/

윈도우에서 opencv cuda 빌드 관련 가장 종합적인 내용을 알려주는 사이트입니다.

여기서는 터미널과 ninja를 활용해 좀 더 쉽고 빠르게 opencv 빌드할 수 있는 방법을 소개하고 있어서 이번 글에서 가장 많이 참고하였습니다.

더불어 이 사이트에서는 opencv 빌드가 어려운 사람들을 위해 여러 파이썬 및 cuda 버전에 따라 opencv를 미리 빌드해놓은 파일들을 제공하고 있어서 본인 환경에 맞는 버전이 있다면 수동으로 빌드작업 할 필요없이 여기서 바로 다운받아서 사용해도 됩니다.

– https://www.youtube.com/watch?v=Gfl6EyIhFvM&t=2739s

파일 다운로드부터 차근차근 보면서 opencv 빌드를 따라할 수 있는 우리나라 유튜브 강의입니다.

우리나라 말로 되어있는 것 중에는 제일 친절하게 설명되어 있는 것 같습니다.

1. 사전 설치 프로그램

C++ 뿐만 아니라 파이썬 버전으로 opencv cuda 지원 라이브러리 빌드를 위해 사전에 설치되어야 하는 프로그램입니다. 저는 파이썬으로 opencv를 활용하는 것을 보여드리지만, 만약 파이썬을 사용하지 않으시면 2번, python 또는 anaconda 설치가 필요없습니다.

1) Cuda toolkit 및 cudnn : GPU 모델 및 드라이버 호환성 확인 후 적절한 버전을 설치합니다.

2) Python (또는 anaconda) : python은 64비트 버전으로 설치하며, anaconda가 아닌 python 환경을 활용할 경우 numpy 패키지를 추가로 설치합니다.

3) CMake : 소프트웨어 빌드 및 패키지 제작 도구로 사용자 환경에 맞는 opencv 패키지 빌드 세팅을 위해 활용. 아무 최신 버전(3.21)을 활용해도 무방할 것으로 보임. (테스트는 3.18버전으로 진행함). msi 확장자로 된 windows용 binary distribution 파일을 다운로드 후 설치합니다.

※ https://cmake.org/download/

4) Microsoft visual studio : 2019 버전을 추천하며, 무료버전인 community 버전으로 설치하며, 구성요소 중 ‘C++를 사용한 데스크톱 개발’을 선택한 후 설치합니다.

※ https://visualstudio.microsoft.com/ko/downloads/

5) Opencv 소스 파일 : 아래 링크 두 개에 들어가서 각각 opencv 소스코드와 opencv_contrib 소스코드를 각각 같은 버전으로 다운받습니다. 첫번째 링크 들어가면 다운받을 수 있는 파일이 여러개 있는데 하단에 ‘source code'(zip) 이라고 되어있는 것을 받으면 되고, opencv_contrib의 경우 해당 버전의 zip 파일을 받으면 됩니다.

※ https://github.com/opencv/opencv/releases

※ https://github.com/opencv/opencv_contrib/releases

1)~4)까지 프로그램 설치를 완료하고, 5) 소스 파일을 내려받고나면,

예를 들어 위와 같이 빌드 작업을 위해 아무 경로에 ‘opencv’ 등과 같이 폴더를 하나 생성하고, 그 안에 opencv, opencv_contrib 압축파일을 이동시킨 다음 각각 파일명 폴더에 압축을 풀면 일단 빌드 작업을 위한 준비가 모두 끝납니다.

2. 빌드 파일 생성

opencv 빌드파일 생성은 위에서 설치했던 cmake 프로그램을 이용합니다.

cmake를 이용하는 방법은 GUI 환경 또는 터미널에서 명령어를 입력하는 방법 둘 다 가능한데,

차근차근 따라하기에는 GUI 방식이 좋긴하지만, 빠르게 다른 사람이 해놓은 세팅을 복붙해서 쓰기에는 명령어 방식이 더 좋기 때문에 저는 복붙해서 쓸 수 있게 명령줄 방식을 활용하도록 하겠습니다.

(GUI 활용방법은 위의 동영상 강의에서 친절히 알려줍니다.)

“C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat” set “openCvSource=C:/opencv/opencv-4.5.0” set “openCVExtraModules=C:/opencv/opencv_contrib-4.5.0/modules” set “openCvBuild=%openCvSource%/build” set “buildType=Release” set “generator=Ninja” set “pathToPython=C:/Users/OOOO/AppData/Local/Programs/Python/Python37” set “pyVer=37” “C:\Program Files\CMake\bin\cmake.exe” -B”%openCvBuild%/” -H”%openCvSource%/” -G”%generator%” -DCMAKE_BUILD_TYPE=%buildType% -DOPENCV_EXTRA_MODULES_PATH=”%openCVExtraModules%/” ^ -DINSTALL_TESTS=ON -DINSTALL_C_EXAMPLES=ON -DBUILD_EXAMPLES=ON ^ -DBUILD_opencv_world=ON ^ -DWITH_CUDA=ON -DCUDA_TOOLKIT_ROOT_DIR=”C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.1″ -DCUDA_FAST_MATH=ON -DWITH_CUBLAS=ON -DCUDA_ARCH_BIN=8.6 -DWITH_NVCUVID=ON ^ -DWITH_OPENGL=ON ^ -DWITH_MFX=ON ^ -DBUILD_opencv_python3=ON -DPYTHON3_INCLUDE_DIR=%pathToPython%/include -DPYTHON3_LIBRARY=%pathToPython%/libs/python%pyVer%.lib -DPYTHON3_EXECUTABLE=%pathToPython%/python.exe -DPYTHON3_NUMPY_INCLUDE_DIRS=%pathToPython%/lib/site-packages/numpy/core/include -DPYTHON3_PACKAGES_PATH=%pathToPython%/Lib/site-packages/ -DOPENCV_SKIP_PYTHON_LOADER=ON

윈도우 명령 프롬프트(cmd)에 들어가셔서 위의 코드를 복사해서 실행하면 소스 파일이 생성되는데요.

여기서 몇 가지 경로나 옵션을 본인의 컴퓨터 환경에 맞게 고쳐서 쓰면 됩니다.

상단의 set 부분은 경로 등을 설정하는 부분이고, 하단의 ‘-D’ 로 시작하는 옵션들은 opencv 빌드 시 포함할 옵션들입니다. 위의 명령줄에는 cuda 가속 지원을 위한 ‘-DWITH_CUDA=ON’, opencv 파이썬 패키지 생성을 위한 ‘DBUILD_opencv_python3=ON’ 등이 세팅되어 있습니다.

위의 코드에서 사용자에 따라 고칠 부분은 다음과 같습니다.

1) #1~#3, #7, #12 : 비주얼 스튜디오 설치경로, opencv 소스파일 경로, 파이썬 설치 경로, cuda 설치 경로로 본인의 설치 경로에 맞게 고쳐줍니다.

2) #8 : 파이썬 버전으로 7번째 줄에서 설정된 경로에 있는 파이썬 버전을 입력합니다. 예를들어 3.7버전인 경우 ’37’, 3.6버전인 경우 ’36’과 같이 입력합니다.

3) #12 : 중간에 ‘-DCUDA_ARCH_BIN=8.6’ 이라는 부분이 있는데, 여기에서는 본인 컴퓨터에 설치된 그래픽카드의 기종을 확인한 후 모델에 해당하는 그래픽카드 버전을 입력합니다.

그래픽카드 모델별 버전은 아래 위키피디아 사이트에서 확인할 수 있고, 위키 문서에서 아래로 내리다보면 ‘GPUs Supported’ 항목에 아래와 같은 커다란 표가 있습니다. 여기서 컴퓨터에 설치된 Nvidia 그래픽카드 모델을 찾고 해당되는 줄의 맨 왼쪽 칸에 해당하는 숫자(6.1, 7.2, 8.6 등)를 ‘-DUCDA_ARCH_BIN=00’ 에 넣어주면 됩니다.

https://en.wikipedia.org/wiki/CUDA

경로와 버전 수정이 완료되면 해당 코드를 복사하여, 명령프롬프트에 붙여넣고 실행하면 아래와 같은 화면이 출력되는데, 맨 아래에 ‘Configuring Done’, ‘Generating Done’, ‘Build files have been written to : 경로’ 와 같은 안내 메시지가 나오면 정상적으로 빌드 파일이 생성된 것입니다.

빌드 파일은 아래 경로와 같이 ‘C:/opencv/opencv-4.5.0/build’ 에 생성된 것을 알 수 있습니다.

3. Visual Studio Ninja를 활용한 opencv 패키지 빌드

2번 과정에서 생성된 빌드 파일은 visual studio 솔루션 형태로 생성되어 있어서, 비주얼 스튜디오로 솔루션 파일을 열어서 ‘솔루션 빌드’를 실행하면 됩니다… 만 이번과 같이 cuda 가속 기능이 포함된 경우 빌드 시간이 짧게는 2시간에서 길게는 5시간까지로 매우 오래 걸립니다.

그래서 이번에는 비주얼 스튜디오에서 직접하는 대신, cmake가 지원하는 서드파티 빌드 시스템인 ninja를 활용해서 빌드해보겠습니다. ninja로 빌드할 경우 저의 경우 1시간 미만(30~40분 정도) 소요되었고, 현재 어느정도까지 진행 중인지 확인이 편리해서 괜찮은 방법이라고 생각합니다.

“C:\Program Files\CMake\bin\cmake.exe” –build %openCvBuild% –target install

ninja로 빌드하려면 명령 프롬프트에서 위의 명령줄을 치고 실행하면 바로 빌드가 진행됩니다.

빌드 진행 중에는 위와 같이 경고나 에러발생 내역이 뜨는데, 반복적으로 뜨는 warning은 무시하셔도 되나, 중간에 빨간색으로 ‘FAILED’ 가 뜨면 즉시 작업이 중단되니 에러내용을 확인하고 경로가 잘못됐거나 파일이 빠져있는 지 등은 체크한 후 다시 빌드를 진행해야 합니다.

위의 에러 메시지의 경우 빌드 경로에 한글이 포함되어 있어서(‘opencv_임시’) 발생한 것으로, 경로를 영문으로 수정하고 다시 실행하니 정상적으로 빌드가 되었습니다.

4. 빌드 후 후속 설정

opencv 빌드가 완료된 후 opencv 작동 여부를 아래 커맨드로 확인할 수 있습니다.

“%openCvBuild%\install\x64\vc16\bin\opencv_perf_cudaarithm.exe” –gtest_filter=Sz_Type_Flags_GEMM.GEMM/29

정상적으로 GPU 인식 및 cuda 가속이 작동될 경우 위와 같이 GPU 모델과 cuda 버전이 표시되고, 초록색 글씨로 RUN, OK 표시가 나옵니다.

그 다음에는 윈도우에 opencv 환경변수를 설정합니다.

명령 프롬프트에서 ‘systempropertiesadvanced’ 입력 후 엔터키를 치거나, 제어판 – 시스템 설정 – 고급 탭으로 간 후,

우측 하단 ‘환경 변수’ 클릭 후 시스템 변수에서 ‘새로 만들기’를 클릭합니다.

맨 아래 그림과 같이 변수 이름을 ‘OPENCV_DIR’로 지정하고, 변수값은 ‘(opencv 빌드 경로)\install’ 로 지정 후 확인 버튼을 누릅니다.

그 다음에는 시스템 변수 중에 ‘path’ 항목 선택 후 편집 버튼을 클릭하고, 아래의 우측과 같은 화면에서 ‘새로 만들기’ 버튼 클릭 후 ‘%OPENCV_DIR%\x64\vc16\bin’ 을 입력하고 확인 버튼을 눌러 닫습니다.

마지막으로 opencv 빌드 과정에서 생성된 python 패키지 생성여부를 확인합니다.

– 파이썬용 패키지 파일은 cv2.cp37-win_amd64.pyd 파일로 아래 두 폴더에 저장됩니다.(동일한 파일임) (파이썬 3.8버전으로 빌드한 경우 파일명 중간이 cp38로 바뀜)

① (opencv 빌드 폴더)\lib\python3

② (python 또는 anaconda 폴더)\lib\site-packages

기본 python 환경으로 구동할 경우 그대로 활용하시면 되고, 가상환경으로 사용하실 경우 아래와 같이 pyd 파일을 가상환경의 lib\site-packages 폴더로 복사하면 됩니다.

만약 기존에 설치된 opencv-python(site-packages 내 cv2 폴더) 패키지가 있다면 충돌 방지를 위해 삭제하시는 것이 좋겠습니다.

5. python에서 opencv cuda 가속 설정

이제 python에서 cv2 패키지를 임포트하고 cuda 작동여부와 cuda 가속을 위한 코드를 테스트해봅니다.

import cv2 print(cv2.__version__) count = cv2.cuda.getCudaEnabledDeviceCount() print(count) >> 4.5.0 1

먼저 위의 코드와 같이 cv2를 임포트하고 cv2.cuda.getCudaEnabledDeviceCount() 함수를 실행하여 cuda 지원되는 장치가 있는 지 확인합니다. 일반적인 컴퓨터에는 그래픽카드가 1개가 설치되어 있으므로 1 이라고 뜨면 정상적으로 지원하는 것입니다.

net = cv2.dnn.readNet(path+”model/atron_yolov3_210127.weights”, path+”custom/atron_yolov3_all.cfg”, ) net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA) net.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA)

그 다음으로 cv2.dnn.readnet() 등과 같이 딥러닝 모델을 적용할 때 cuda 가속을 지원하게 하려면 위의 코드와 같이 net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA), 그리고 net.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA) 두 줄을 추가하면 cuda 가속 전 보다 훨씬 빠르게 모델이 적용되는 것을 확인할 수 있습니다.

다크 프로그래머 :: OpenCV + CUDA 직접 빌드하기 (Windows

최근에 opencv에 있는 dnn을 한번 써보려고 직접 소스를 받아서 빌드(build)해 보았다. 역시나 엄청난 삽질의 연속이고 할 때마다 이것 저것 해결책을 검색하느라 많은 시간을 소모한다 (삽질은 누구나 한다..).

그동안 opencv 빌드를 한두 번 해본 것이 아닌데도 매번 이렇다. 이게 다 앉았다 돌아서면 잊어버릴 나이인데도 기록을 잘 하지 않았기 때문이다. 이번 기회에 opencv 빌드에 필요한 내용들을 다시 한번 정리해 둔다. 먼저, windows 빌드부터 적고 linux 빌드는 끝에서 잠깐 설명한다.

1. Windows에서 OpenCV+CUDA 빌드

준비사항 (Requirements)

opencv git에는 주요 핵심 모듈들만 들어있기 때문에 opencv의 모든 기능을 사용하기 위해서는 opencv contrib도 같이 다운로드 받는다. cmake는 가급적 가장 최신 버전을 사용하는게 좋고, CUDA는 자신의 그래픽카드(GPU)를 지원하는 버전으로 다운로드 한다(https://en.wikipedia.org/wiki/CUDA#GPUs_supported에서 확인). cuDNN은 사용할 CUDA 버전에 맞는 것을 다운로드한다. VTK는 opencv의 viz 기능을 이용할 경우에만 다운로드 받는다.

CUDA와 cuDNN 설치

CUDA는 설치 파일만 실행하면 알아서 설치된다. 단, 중간에 설치 옵션을 물어보는데 나처럼 성질이 까칠한 사람은 빠른설치(권장) 옵션이 아닌 사용자 정의 옵션을 선택할 것이다. 이 때, 다른 것은 다 제외시키더라도 development, runtime, visual studio integration는 꼭 선택해 준다. 그리고 driver도 같이 선택해 주는게 좋겠다. (다른 것들은 설치 안해도 관계없다)

cuDNN은 설치파일이 아니고 단순 압축파일이다. 압축을 풀어서 CUDA가 설치된 폴더에 파일들만 복사해 주면 된다. cuDNN 압축을 풀면 bin, include, lib\x64 3개의 폴더가 나온다. 만일 CUDA가 설치된 폴더 위치가 CUDA_ROOT = “C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3″라 하면 bin에 있는 파일들은 CUDA_ROOT\bin 폴더에, include에 있는 파일들은 CUDA_ROOT\include 폴더에, 그리고 lib\x64에 있는 파일들은 CUDA_ROOT\lib\x64 폴더에 복사해 준다.

VTK 빌드

opencv를 빌드할 때 가장 피곤한 부분이 VTK를 빌드하는 것이다. VTK는 opencv의 viz를 사용할 때만 필요하기 때문에 viz를 사용하지 않는다면 바로 다음의 OpenCV 빌드로 넘어가면 된다. 개인적으로는 어쩔 수 없이 viz를 사용해야 하는데 opencv를 빌드할 때마다 VTK 쪽에서 문제를 일으킨다. 그리고 VTK는 빌드(컴파일+링크) 시간도 오래 걸린다. 빌드는 CMake(사용법은 https://darkpgmr.tistory.com/102 참조)로 하면 되는데, VTK 자체는 별 문제없이 빌드되지만 항상 opencv와 연결할 때 문제가 생긴다. CMake로 프로젝트를 생성할 때 BUILD_SHARED_LIBS를 제외하고 대부분 기본설정을 사용한다.

BUILD_SHARED_LIBS = OFF (체크 해제)

opencv에 static으로 링크할 생각이므로 BUILD_SHARED_LIBS는 OFF(체크해제)로 설정한다. 만일, 이 옵션을 ON시키면 수많은(약 120개) dll 파일들이 생성되고, opencv를 사용할 때 이 dll 파일들을 항상 같이 가지고 다녀야 하는 불상사가 발생한다.

OpenCV 빌드 (main + contrib을 하나의 world 파일로)

목표는 opencv의 모든 기능(contrib 포함)을 하나의 파일(opencv_worldxxx.dll, lib)로 빌드하는 것이다. 그 방법은 비교적 간단하다.

opencv_contrib\modules\ 밑에 있는 모든 내용을 opencv\modules\로 이동시킨다. –> 요즘은 이렇게 안해도 OPENCV_EXTRA_MODULES_PATH 만 설정하면 알아서 하나로 합쳐주는지는 잘 모르겠다..

opencv 빌드용 폴더(e.g. opencv_build)를 하나 만들고 cmake를 이용해서 필요한 설정을 한 후 프로젝트를 생성한다.

opencv_build\OpenCV.sln을 열어서 ALL_BUILD 프로젝트를 빌드한다.

마지막으로 INSTALL 프로젝트를 빌드한다 (ALL_BUILD로 생성된 include, lib, dll 파일들을 한 곳에 모아주는 역할). 이 때, build만 하고 절대로 rebuild를 하면 안된다. 자신도 모르게 전체 프로젝트를 rebuild하는 불상사가 발생할 수 있다.

cmake gui에서 빌드 설정은 개인 취향껏 하면 되지만, 중요한 것들을 정리해 보면 다음과 같다.

BUILD_SHARED_LIBS = ON (static으로 빌드할 것이면 OFF)

BUILD_WITH_STATIC_CRT = OFF

BUILD_opencv_world = ON

OPENCV_ENABLE_NONFREE = ON

OPENCV_EXTRA_MODULES_PATH = (contrib + main을 하나로 합쳤기 때문에 필요가 없음. 공백으로 그대로 둠)

(contrib + main을 하나로 합쳤기 때문에 필요가 없음. 공백으로 그대로 둠) CPU_BASELINE = AVX (https://www.intel.co.kr/content/www/kr/ko/support/articles/000005779/processors.html 참조)

(https://www.intel.co.kr/content/www/kr/ko/support/articles/000005779/processors.html 참조) CPU_DISPATCH = (공백으로 둠)

OPENCV_DNN_CUDA = ON

WITH_CUDA = ON

WITH_CUDNN = ON

WITH_CUBLAS = ON

WITH_CUFFT = ON

CUDA_FAST_MATH = ON

CUDA_ARCH_BIN = 6.1;7.5;8.6 (https://en.wikipedia.org/wiki/CUDA#GPUs_supported에서 GPU별 compute capability 숫자 참조)

기타 개인적으로 설정하는 옵션들 (나머지는 기본값 사용)

BUILD_PACKAGE = OFF

BUILD_PERF_TESTS = OFF

BUILD_TESTS = OFF

BUILD_opencv_apps = OFF

VTK_DIR = “…” (VTK의 빌드 폴더 root)

※ CPU_BASELINE

opencv cmake 옵션들 중 CPU_BASELINE은 사용할 CPU 명령어 셋을 선택하는 것으로서 SSE1 < SSE2 < SSE3 < SSE4 < AVX < AVX2 < AVX-512 순으로 향상된(빠른) 명령어 셋을 의미한다. 명령어 셋은 컴퓨터(CPU)에서 지원을 해야만 사용 가능하기 때문에 빌드한 opencv를 여러 컴퓨터에서 사용하고자 한다면 낮은 버전(SSE4 등)을 CPU_BASELINE으로 설정하고, 자신만 사용할 것이라면 자신 컴퓨터에서 지원하는 최대 명령어 셋을 CPU_BASELINE으로 설정하면 된다. CPU 버전 별 지원 명령어 셋은 https://en.wikipedia.org/wiki/Advanced_Vector_Extensions를 참조한다 (인텔의 경우 https://www.intel.co.kr/content/www/kr/ko/support/articles/000005779/processors.html). 요즘 대부분의 PC는 AVX2까지는 지원하기 때문에 공용 빌드의 경우에는 AVX나 AVX2 정도로 설정하면 적당할 듯 싶다. ※ CUDA_ARCH_BIN CUDA_ARCH_BIN에는 사용할 그래픽카드(GPU)의 compute capability 값을 적어준다. GPU별 compute capability 값은 https://en.wikipedia.org/wiki/CUDA#GPUs_supported를 참조한다 (예를 들어, RTX 2080은 7.5, RTX 3080은 8.6). 빌드한 opencv를 여러 컴퓨터나 GPU에서 사용할 예정이라면 지원할 GPU compute capability 값을 모두 적어주면 된다. 단, 여러 값을 적을수록 빌드 시간은 엄청나게 늘어나기 때문에 필요한 정도만 적는 것이 좋다 (지금 몇 시간째 빌드 중인데 끝날 기미가 안보인다..) ※ 참고 사항 (빌드시간 단축) WITH_CUDA, OPENCV_DNN_CUDA을 활성화시키면 opencv 빌드시간이 정말 오래 걸린다 (몇 시간씩). 따라서, CUDA 쪽을 사용할 것이 아니면 이 옵션은 OFF시키고 빌드하는 것이 좋다. 하지만, CUDA 쪽을 사용해야만 하는 경우 빌드시간을 조금이나마 줄이기 위해 참고할 만한 내용은 다음과 같다. CUDA_ARCH_BIN 개수를 최소화 visual studio에서 Tools/Options/Projects and Solutions/Build and Run/maximum number of parallel project builds 값을 자신 컴퓨터 CPU의 논리 프로세서 수로 설정 (작업관리자 - 성능 탭에서 확인 가능) visual studio에서 debug 버전과 release 버전을 하나씩 빌드 (Build/Batch Build... 기능을 이용해서 debug, release를 같이 빌드할 경우에는 빌드 시간이 증가하는 것으로 보임). 디스크 입출력 속도가 중요하므로 SSD 등에서 빌드 (내 경우는 아예 전용 파티션을 하나 생성해서 사용함) OpenCV + VTK 문제 해결 (OpenCV 4.5.2 기준) VTK 때문에 opencv와 vtk를 몇 번을 다시 빌드하고 지우고 했는지 모르겠다. 현재 VTK 홈페이지에서는 VTK 9.0.1, 8.2.0, 7.1.1의 3가지 버전을 다운로드 받을 수 있으며 각 버전별 문제 및 해결 방법은 다음과 같다. [VTK 9.0.1 + OpenCV] opencv 4.5.2의 경우 cmake 설정창에서 VTK_DIR을 VTK 빌드 폴더로 설정하고 configure를 실행하면 TARGET opencv_viz를 찾을 수 없다는 CMake Error가 발생한다(get_property could not find TARGET opencv_viz). 단, 이 에러는 BUILD_opencv_world = ON 설정시에만 나타나고, OFF시에는 발생하지 않는다. 즉, opencv_viz를 개별 dll로 빌드할 경우에는 문제가 발생하지 않는다. BUILD_opencv_world = ON을 유지하고 싶은 경우에 한 가지 해결책은 opencv_world에서 viz만 제외시키는 것이다 (viz를 제외한 다른 모든 모듈들은 opencv_world로 통합). 부분적 해결책: https://github.com/opencv/opencv/blob/master/cmake/OpenCVModule.cmake#L848을 아래와 같이 변경 if(BUILD_opencv_world AND OPENCV_MODULE_${the_module}_IS_PART_OF_WORLD AND NOT "${the_module}" STREQUAL "opencv_viz") [VTK 8.2.0 + OpenCV] opencv의 cmake 설정창에서 VTK_DIR을 VTK 빌드 폴더로 설정한 후 configure를 실행하면 "VTK is not found. Please set -DVTK_DIR in CMake to VTK build directory, or to VTK install subdirectory with VTKConfig.cmake file"라는 에러메시지와 함께 VTK 설정이 실패한다. 분명히 VTK 빌드 폴더를 제대로 지정해 주었음에도 이 에러는 계속 발생한다. cmake에서 VTK를 발견하지 못했다는 것인데, 인터넷 검색으로는 도무지 해결이 안되어서 결국 cmake 파일들의 내용을 모두 살펴보고 해결책을 찾았다. 해결책: opencv 소스에서 opencv/cmake/OpenCVDetectVTK.cmake파일의 L1~L15를 아래와 같이 주석처리 (단, 9.x.x 대의 VTK 버전을 사용할 경우에는 주석 처리하면 안됨) # VTK 9.0 #if(NOT VTK_FOUND) # find_package(VTK 9 QUIET NAMES vtk COMPONENTS # FiltersExtraction # FiltersSources # FiltersTexture # IOExport # IOGeometry # IOPLY # InteractionStyle # RenderingCore # RenderingLOD # RenderingOpenGL2 # NO_MODULE) #endif() # VTK 6.x components if(NOT VTK_FOUND) find_package(VTK QUIET COMPONENTS vtkInteractionStyle vtkRenderingLOD vtkIOPLY vtkFiltersTexture vtkRenderingFreeType vtkIOExport NO_MODULE) IF(VTK_FOUND) IF(VTK_RENDERING_BACKEND) #in vtk 7, the rendering backend is exported as a var. find_package(VTK QUIET COMPONENTS vtkRendering${VTK_RENDERING_BACKEND} vtkInteractionStyle vtkRenderingLOD vtkIOPLY vtkFiltersTexture vtkRenderingFreeType vtkIOExport vtkIOGeometry NO_MODULE) ELSE(VTK_RENDERING_BACKEND) find_package(VTK QUIET COMPONENTS vtkRenderingOpenGL vtkInteractionStyle vtkRenderingLOD vtkIOPLY vtkFiltersTexture vtkRenderingFreeType vtkIOExport NO_MODULE) ENDIF(VTK_RENDERING_BACKEND) ENDIF(VTK_FOUND) endif() 원인: opencv/cmake/OpenCVDetectVTK.cmake의 내용은 먼저 VTK 9.x.x를 찾고 실패하면 하위 버전 순서로 VTK를 찾는 것인데, VTK 9.x.x에 실패하면 사용자가 설정한 VTK_DIR 환경변수가 초기화가 되어서 이후 하위 버전 탐색이 정상 실행되지 않는 것으로 추측됨 VTK 7.1.1 버전에서도 동일한 문제가 발생하며 해결책도 동일함 2. Linux에서 OpenCV + CUDA 빌드 (한글 지원 포함) 앞서 설명한 내용들은 윈도우즈 빌드를 대상으로 하지만, 일부 내용들(cmake 설정 등)은 linux 빌드에도 동일하게 적용된다. 리눅스에서의 빌드는 shell script 형태로 간단하게 설명한다. CUDA, cuDNN 설치 여기서는 여러 버전의 CUDA 라이브러리를 시스템에 같이 설치하는 것을 예로 한다 (필요할 때마다 버전을 바꿔가면서 사용할 수 있도록) 1. 시스템 그래픽 드라이버 설치 (최신버전으로 설치됨) $ sudo apt update $ sudo apt install cuda-drivers 설치후 반드시 시스템 재부팅 2. CUDA 라이브러리 설치 (e.g. 10.2, 11.3를 같이 설치하는 경우) $ sudo apt update $ sudo apt install cuda-toolkit-10-2 $ sudo apt install cuda-toolkit-11-3 3. cuDNN 설치 먼저, CUDA 버전에 맞는 cuDNN 파일들을 다운로드한다 (https://developer.nvidia.com/rdp/cudnn-archive) cudnn-10.2-linux-x64-v8.2.0.53.tgz cudnn-11.3-linux-x64-v8.2.0.53.tgz 다음과 같은 설치 script 파일을 생성한 후 실행 (e.g. cudnn_install.sh) $ chmod a+x cudnn_install.sh $ ./cudnn_install.sh #cudnn_install.sh tar -xzvf cudnn-10.2-linux-x64-v8.2.0.53.tgz sudo cp cuda/include/cudnn*.h /usr/local/cuda-10.2/include sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda-10.2/lib64 sudo chmod a+r /usr/local/cuda-10.2/include/cudnn*.h /usr/local/cuda-10.2/lib64/libcudnn* rm -rf cuda tar -xzvf cudnn-11.3-linux-x64-v8.2.0.53.tgz sudo cp cuda/include/cudnn*.h /usr/local/cuda-11.3/include sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda-11.3/lib64 sudo chmod a+r /usr/local/cuda-11.3/include/cudnn*.h /usr/local/cuda-11.3/lib64/libcudnn* rm -rf cuda 시스템의 default CUDA 설정 (10.2를 default로 설정할 경우) $ cd /usr/local $ sudo rm cuda $ sudo ln -s cuda-10.2 cuda 시스템 환경변수 등록 (CUDA 라이브러리 탐색 순서 설정) $ sudo vi /etc/profile.d/cuda.sh # cuda.sh 파일 생성 아래 내용으로 해당 파일 내용을 생성 후 저장 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda-10.2/lib64:/usr/local/cuda-11.3/lib64 OpenCV + CUDA 빌드 CUDA가 준비되면 이제 opencv를 빌드해 보자. Linux에서의 opencv 빌드는 shell script 파일 형식으로 설명한다. 일부 내용은 자신에 맞게 수정한다. # 참고한 사이트 # 1. https://linuxize.com/post/how-to-install-opencv-on-ubuntu-18-04/ # 2. https://webnautes.tistory.com/1030 # 3. https://kkokkal.tistory.com/1325 # 과거 설치된 opencv 버전이 있을 경우 제거 sudo apt purge libopencv* python-opencv sudo apt autoremove # 위험할 수 있으니 내용을 잘 확인하고 실행 (opencv 관련만 삭제하는지..) # update ubuntu system to latest sudo apt update #sudo apt upgrade # 시스템 전체를 업그레이드하는 것임 ( 필요한 경우만 실행 ) # install relevant packages (libfreetype, libharfbuzz는 opencv에서 한글지원 위해서 설치) sudo apt install build-essential cmake git pkg-config libqt4-dev \ libavcodec-dev libavformat-dev libswscale-dev libv4l-dev v4l-utils \ libxvidcore-dev libx264-dev libxine2-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev \ gfortran openexr libatlas-base-dev python3-dev python3-numpy \ libgl1-mesa-dri libqt4-opengl-dev libeigen3-dev \ libfreetype6-dev libharfbuzz-dev # 한글 지원을 위해 필요 # download opencv git clone https://github.com/opencv/opencv.git git clone https://github.com/opencv/opencv_contrib.git # cmake setup (설정은 자신이 원하는대로 수정하거나 추가, 삭제) cd ./opencv mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D WITH_TBB=OFF \ -D WITH_IPP=OFF \ -D WITH_1394=OFF \ -D BUILD_WITH_DEBUG_INFO=OFF \ -D BUILD_DOCS=OFF \ -D BUILD_EXAMPLES=OFF \ -D BUILD_TESTS=OFF \ -D BUILD_PERF_TESTS=OFF \ -D WITH_CUDA=ON \ -D WITH_CUDNN=ON \ -D OPENCV_DNN_CUDA=ON \ -D CUDA_FAST_MATH=ON \ -D CUDA_ARCH_BIN=7.5 \ # 자신 GPU의 compute capability 값 -D WITH_CUBLAS=ON \ -D WITH_CUFFT=ON \ -D WITH_QT=ON \ -D WITH_GTK=OFF \ -D WITH_OPENGL=ON \ -D WITH_V4L=ON \ -D WITH_FFMPEG=ON \ -D WITH_XINE=ON \ -D BUILD_NEW_PYTHON_SUPPORT=ON \ -D INSTALL_C_EXAMPLES=OFF \ -D INSTALL_PYTHON_EXAMPLES=OFF \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ -D OPENCV_ENABLE_NONFREE=ON \ -D BUILD_EXAMPLES=OFF .. # check number of cores of your system nproc # 자신 시스템의 코어 수 확인 # build (modify the core number '12' after option -j accordingly) make -j12 # 자신 시스템 코어 수에 맞게 -j 다음의 숫자를 변경 # install sudo make install # check if it is installed successfully pkg-config --modversion opencv4 설정값 중에서, GPU별 compute capability 값은 https://en.wikipedia.org/wiki/CUDA#GPUs_supported를 참조한다 (예를 들어, RTX 2080은 7.5, RTX 3080은 8.6). 위 내용을 shell script 파일로 만들어서 아래와 같이 실행하면 GPU 지원 opencv가 설치된다 (e.g. opencv_install.sh라는 이름으로 스크립트를 생성했을 경우). 만일 CUDA를 사용하지 않을 경우에는 설정에서 WITH_CUDA부터 WITH_CUFFT까지를 모두 삭제하거나 OFF로 바꾼다. $ nproc # 자신의 시스템 코어 수 확인 $ nvidia-smi # 자신의 GPU 확인 $ vi opencv_install.sh # opencv_install.sh 내용 편집 --> make -j12에서 12를 자신의 시스템 코어 수로 변경 –> CUDA_ARCH_BIN 값을 자신 GPU의 compute capability 값으로 변경 –> 기타 필요한 설정 등을 변경 $ chmod a+x opencv_install.sh # 실행 가능한 파일로 변경 $ ./opencv_install.sh # 스크립트 실행 $ sudo vi /etc/ld.so.conf.d/opencv.conf # opencv conf 파일 생성 –> /usr/local/lib 라인 추가 (opencv 설치된 라이브러리 폴더를 알려주는 것) $ sudo ldconfig -v # 생성한 opencv conf 반영

OpenCV에서 이미지에 한글 출력하기

opencv에서는 기본적으로 cv::putText로 이미지에 한글을 출력하면 글자가 깨진다. 하지만, 위와 같이 libfreetype6-dev, libharfbuzz-dev를 먼저 설치한 후에 opencv를 빌드하면 한글 출력이 가능해진다. 단, linux 빌드의 경우만 해당되며 윈도우즈에서도 한글 출력되도록 빌드해 보고자 했지만 결국 실패하였다. 어쨌든, 한글 출력 사용법 예제는 다음과 같다.

먼저, 한글 폰트를 다운로드해서 시스템에 저장한다. (e.g. test/font/)

예제 코드(참고사이트: https://kkokkal.tistory.com/1325):

#include “opencv2/freetype.hpp”

int main(void)

{

Mat src = imread(“sample.bmp”, IMREAD_COLOR);

// FreeType2 객체 생성

cv::Ptr ft2 = cv::freetype::createFreeType2();

// 글꼴 불러오기

ft2->loadFontData(“test/font/gulim.ttf”, 0);

// 문자열 출력

ft2->putText(src, u8″Hello?”, Point(50, 50), 50, Scalar(255, 255, 255), -1, LINE_AA, false);

ft2->putText(src, u8″안녕하세요!”, Point(50, 120), 50, Scalar(0, 255, 255), -1, LINE_AA, false);

imshow(“src”, src);

waitKey(0);

return 0;

}

☞ 후기

사실 이런 괜한 삽질을 한 이유는 최근 yolo 사이트를 둘러보다가 opencv dnn을 이용해서 yolo를 돌리면 속도가 크게 증가한다는 표를 봤기 때문이다(608×608 이미지의 경우 darknet은 53fps, opencv fp16은 115fps라고 나온다). 직접 빌드해서 돌려보니 내 경우는 opencv가 좀더 빠른 것은 맞지만 그 정도는 아니다 (opencv의 경우, image blob 생성 및 non-max-suppression 시간 등은 제외하고 순수 network forward 시간만 측정한 것 같다). 실제 돌려보면 이미지 입력부터 결과 출력까지 608×608 기준으로 darknet은 42 fps, opencv fp16은 54 fps 정도가 나온다. 416×416 기준으로는 darknet은 75 fps, opencv fp16도 75 fps로 동일하게 나온다. 고해상도로 갈수록 속도가 빨라지는 것 같다. 어쨌든 빨라졌으니 좋은 것이긴 한데, 문제는 opencv dnn 버전은 yolov3, yolov4로는 동작하지만 yolov4-csp 등에서는 동작하지 않는다는 점이다. 윈도우즈 버전으로 테스트한 것이기 때문에 linux에서는 결과가 다를지도 모르겠다. 참고로 fp16은 floating point 데이터 표현 및 연산을 16비트로 처리한다는 의미이다(기본은 32비트). opencv dnn을 이용한 yolo 사용은 YashasSamaga/main.cpp를 참고한다.

darknet yolo opencv dnn fp16 다양한 yolo 버전을 모두 지원(yolo, yolo-csp, yolo-mesh 등)

별도로 darknet을 빌드해서 사용해야 함

yolov3, ylov4 등 기본 버전만 지원

darknet 빌드 없이 opencv 자체에서 yolo 수행

dnn빌드로 opencv dll 파일의 크기가 커짐 (428MB)

속도가 조금 더 빠름 (정확도는 darknet yolo와 동일)

by 다크 프로그래머

Build OpenCV 4.5.1 with CUDA (GPU) Support on Windows 10 (Python 3.8)

기본적인 패키지들을 포함한 개발환경을 구축하기 위해 아나콘다를 설치 1. Anaconda 설치

2. 가상환경 구성 : 해당 가이드에서는 Python 3.8으로 환경구성을 권장 (OpenCV, cuda, cuDNN 버전을 고려하여 Python 3.8로 환경을 구성할 것을 권장함)

(base) C:\> conda create -n vision_py38_env python=3.8 (base) C:\> conda activate vision_py38_env ## numpy 설치 (vision_py38_env) C:\> pip install numpy

3. NVIDIA CUDA 드라이버, CUDA 툴킷 및 cuDNN 설치

3.1 GPU Nvidia driver 설치 : 그래픽드라이버를 검색하여 다운로드 후 설치 진행

3.2 CUDA 설치 : 버전을 선택하여 다운로드 후 설치 진행 (저는 최신버전인 11.2.0 으로 진행)

3.3 cuDNN 설치 : cuDNN 은 zip파일로 다운받아지는데, 압축 풀어 모두 복사 후 ‘C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2’ 경로에 붙여넣기

4. Visual Studio 2019 설치

4.1 link 다음링크에서 Visual Studio Community 2019 Download

4.2 설치파일을 클릭하여 설치 수행

4.3 Visual C++ / python / web development tools 선택

5. CMake 설치

5.1 https://cmake.org/download/ 에서 v3.19.4 다운로드

5.2 ‘add cmake to the system PATH for the current user’ 선택

6. opencv-4.5.1 와 opencv_contrib-4.5.1 다운로드 및 압축풀기

6.1 https://github.com/opencv/opencv/releases 에서 opencv-4.5.1 source code zip 다운로드

6.2 https://github.com/opencv/opencv_contrib/releases 에서 opencv_contrib-4.5.1 source code zip 다운로드 (버전이 opencv 버전과 동일해야함)

6.3 다운받은 두 파일을 동일한 폴더에 압축해제 (이후 설정에도 사용되는 경로이니 지속적으로 사용할 경로에 압축을 해제) – opencv-4.5.1 폴더가 곧 OPENCV_PATH (ex) [ C:\opencv\opencv-4.5.1 ])

7. CMake를 이용한 비쥬얼스튜디오 프로젝트 생성

7.1 CMake 실행

7.2 소스코드 C:\opencv\opencv-4.5.1 입력 및 빌드폴더 C:\opencv\opencv-4.5.1\build 입력

7.3 configure 실행 및 확인누름

7.4 Visual Studio 16 2019 선택후 Finish

8. CMake config에 추가적인 수정

8.1 “INSTALL_PYTHON_EXAMPLES” 선택 (빌드 시간을 최소화하기 위해 불필요한건 체크해제)

8.2 WITH_CUDA, OPENCV_DNN_CUDA, ENABLE_FAST_MATH, CUDA_FAST_MATH 체크 (Search창을 이용)

8.3 OPENCV_EXTRA_MODULES_PATH 항목에 C:/opencv/opencv_contrib-4.5.1/modules 입력 후 다시 configure 실행

8.4 WITH_CUDNN, WITH_CUBLAS 체크 (이미 체크되어 있다면 다음으로 진행)

8.5 그래픽카드 확인 (장치관리자에서 자신의 그래픽카드를 확인)

8.6 CUDA_ARCH_BIN 설정 (중요 – 자신의 그래픽카드에 해당하는 CUDA_ARCH_BIN 을 설정해야 함)

여기 에서 GPU 모델과 호환되는 컴퓨팅 아키텍처 목록을 찾을 수 있습니다.

8.7 Python 관련 설정 (자신이 구성한 가상환경의 경로로 설정)

9. 빌드파일 생성하기

9.1 만약 CMAKE가 에러없이 Configuring done 메시지를 띄웠다면 generate를 클릭

9.2 빌드 폴더로 이동하여 Visual Studio로 OpenCV.sln 파일 열기

9.3 Debug 를 상단에서 Release 로 변경

9.4 Cmake Targets를 확장하여 ALL_BUILD 우클릭 후 Build (컴퓨터의 성능에 따라 오래 걸릴 수 있습니다. 30분 이상)

9.5 완료되면 INSTALL 우클릭 후 Build 클릭

9.6 가상환경에 다음과 같이 구성되었다면 정상적으로 설치 완료

10. 마치며…

Windows에서 환경을 구성하는게 쉽지가 않네요. 그리고 Build하는데 시간이 많이 소요되네요. Ninja로 빌드 시간을 단축 할 수 있다니, 그렇게 해보시는 것도 좋을 듯 싶네요. 고생했지만 성능이 좋아져서 다행입니다.

11. Truble Shooting

“warning: setUpNet DNN module was not built with CUDA backend; switching to CPU” 라고 나온다면 OpenCV 설치가 잘못된 것입니다. pip uninstall opencv-python 수행 후 Build를 통해 설치가 되어야 합니다.

“ModuleNotFoundError: No module named ‘cv2′” 는 Build를 통한 opencv 파일이 아닙니다. pip uninstall opencv-python 수행 후 Build를 통해 설치가 되어야 합니다.

최초에는 Python 3.7로 환경을 구성했는데, Python Library가 자동으로 3.8로 변경되어 문제가 있었는데 Python 3.8환경으로 구성 후 해결되었습니다.

Visual Studio 2019에서 CUDA를 적용한 OpenCV 빌드하기

반응형

이번 영상에서는 OpenCV에서 GPU 가속을 사용하기 위해 OpenCV를 빌드하는 방법을 다룹니다.

사용중인 NVIDIA 그래픽카드에 맞는 CUDA Toolkit와 cuDNN을 설치하고 cmake를 사용하여 OpenCV 빌드 옵션을 설정한 후,

Visual Studio 2019에서 OpenCV 빌드를 진행합니다.

NVIDIA 그래픽카드가 장착된 PC에서만 사용할 수 있는 방법입니다.

다음 글을 참고하였습니다.

Accelerate OpenCV 4.3.0 – build with CUDA and python bindings

반응형

[vc++] cmake로 opencv + cuda library 만들기

1. CUDA Toolkit 설치

https://developer.nvidia.com/cuda-downloads

2. cuDNN 설치

developer.nvidia.com/cudnn

– 로그인후에 다운로드 및 설치

– bin, include, lib 폴더로 구성되어 있는데 CUDA Toolkit이 설치된 경로에 덮어써줌

가령 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2 에 bin, include, lib를 덮어씀

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\inclulde

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\lib

이렇게 3개 폴더가 만들어지는 것임

– cuda bin 폴더 Path 추가

여기서는 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin

3. OpenCV 다운로드

opencv.org/releases/

Windows 최신 파일(현재 4.5.2)을 다운로드함.

설치시 한글명이 폴더에 포함되지 않도록 유의합니다.

4. OpenCV contrib 설치

github.com/opencv/opencv_contrib

OpenCV 설치경로가

D:\opencv\opencv_4.5.2

라면

contrib 설치경로는 아래와 같이 한다

D:\opencv\opencv_4.5.2\opencv_contrib-master

4. CMake 설정

– Browse Source, Browse Build 버튼을 눌러 각각 폴더를 설정

Source code 경로 : D:/opencv/opencv_4.5.2/sources

Build 경로 : D:/opencv/opencv_4.5.2/build

– Configure 버튼 실행하고 컴파일러 버전, x64를 선택함

유의할 점은 CUDA는 X64만 지원하는 것으로 보임. 즉 32bit(Win32) library는 생성 불가한 것으로 보임

(별짓 많이 해봤음. Win32로 설정하면 CMake에서 에러가 발생함. 누군가 Win32 되면 꼭 알려주시길…..)

– 옵션 체크(Static library를 생성하는경우를 가정함, Shared library를 만드려면 BUILD_SHARED_LIBS를 체크상태로 함)

OPENCV_DNN_CUDA : 체크

WITH_CUDA : 체크

OPENCV_EXTRA_MODULES_PATH : D:/opencv/opencv_4.5.2/opencv_contrib-master/modules 로 설정

OPENCV_ENABLE_NONFREE : 체크

BUILD_opencv_world : 체크

(opencv library를 파일 하나로 만들겠다는 의미)

BUILD_SHARED_LIBS : 체크해제

(Static library를 만들겠다는 의도임, VC++ 빌드시 C/C++의 Code Generation의 Runtime Library를 Debug라면 /MTd Release 라면 /MT로 설정함)

BUILD_WITH_STATIC_CRT : 체크해제

CUDA_ROOT_DIR : C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2 로 설정

– Configure 버튼을 한번 더 실행하고 -> Generate 버튼을 클릭하여 프로젝트를 생성

5. D:\opencv\opencv_4.5.2\build 로 이동하여 OpenCV.sln 실행하여 프로젝트 불러옴

6. Visual studio 설정(Static library 기준)

– 3rdparty, applications, dispatched, modules 하위 프로젝트 모두에 대하여 프로젝트 속성의

C/C++ -> Code Generation -> Runtime Library 를 Debug라면 /MTd

Release 라면 /MT로 설정함

– applications 하위 프로젝트에 대하여 프로젝트 속성에서

General -> Configuration Type을 Static library(.lib)로 변경

7. 컴파일(내 컴은 6시간 걸림, 컴을 새로 장만할때가 된건가….)

– opencv library 생성폴더 경로

D:\opencv\opencv_4.5.2\build\lib

– 3rdparty library 생성폴더 경로

D:\opencv\opencv_4.5.2\build\3rdparty\lib

– 유의할점 : vc++ library를 프로젝트에서 사용할때 3rdparty의 ippicv library도 같이 복사하고 library 로드할 것

[CUDA] Visual Studio 2015, OpenCV , CUDA 연동하기

728×90

반응형

opencv_cudaobjdetect300d.lib

opencv_cudawarping300d.lib

opencv_cudaimgproc300d.lib

object tracking 관련 구글링을 하던 도중 써볼만한 코드가 생겨 테스트 해보려고 했는데 “cuda~~” 라는 헤더파일과 라이브러리 파일이 자꾸 없다고 떴다. 뭣도 모르고 opencv에 기본 내장되어있는 파일인줄알고 환경설정만 죽어라 삽질한 결과 CUDA 라는 프로그램을 opencv에 연동해야하고, 아래와 같은 cuda~~로 시작되는 라이브러리나 헤더파일은 그 프로그램에 들어있어서 연동하면 쓸 수 있게 되어있다고 한다. 간단히 말해서 GPU 관련된 클래스를 사용하기 위한 개발환경 설치 단계이다.

한참을 삽질하고 난 뒤에야 알게 된 결과… 조금 더 공부해야겠다는 생각이 들었다.

그 외로 TBB (Intel Threading Building Blocks) 를 설치하여 프로그램 실행 속도를 빠르게 해준다는데 이는 OpenCV 2.4.xxx 버전 이후로부터 병렬처리가 내장되어 나오기 때문에 굳이 설치할 필요가 없었다. 조금만 더 일찍 태어났거나 일찍 공부했다면 프로그램 설정하느라 고생했을텐데 휴~

이제 CUDA를 OpenCV에 연동하는 방법을 설명해보려고 한다.

비주얼 스튜디오에 직접 연동하였고, CMAKE는 사용하지 않았다.

(수정

CMAKE를 사용하지 않고 환경 설정을 할 경우 gpu 인식을 하지 못한다고 한다. -> CMAKE를 이용해야함… 하루동안 삽질하고 알게 된 결과이다. 다시 CMAKE를 이용하여 opencv를 설치하고, CUDA를 연동하는 포스팅을 올리도록 하겠다…)

CMAKE 환경 설정 (참조) : http://darkpgmr.tistory.com/102

0. 설치 환경

윈도우 64bit, Windows 10, OpenCV 2.4.9, 3.0.0, 3.1.0 … (여러가지를 사용하고 있음), Visual Studio 2013

( 앞서 말하지만 Visual Studio 2015 에는 아직 적용이 안된다 )

1. CUDA 설치하기

https://developer.nvidia.com/cuda-downloads

무료 NVIDIA 제품이다.

설치 순서는 Driver, Toolkit, SDK 순으로 설치한다. (최신 버전에서는 알아서 통합 버전으로 다운받아진다.)

자신의 시스템에 맞게 타겟 플랫폼을 설정해준다.

나는 Windows, x86_64, 10(윈도우 10 호환이 된다), exe(local) 을 선택했다.

다운로드 시간이 꽤 걸린다.

아 Visual Studio 2015에 설치가 안된다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ ㅡㅡ

비주얼스튜디오 2013 버전에만 설치가 된단다.

2015에도 되긴 되는데 관리만 된다고 한다. 급한대로 서브 컴퓨터에서 다시 설치하기 시작했다. 그런데 서브 컴퓨터가 용량이 없어서… 더 이상 줄일 수 없어서 내 컴퓨터에 비주얼 2013을 깔기로 했다. 2015를 깔았는데 2013을 깔아도 되는건지…? 안되겠어서 2015를 삭제하고 2013을 다시 깔기로 한다.

노고와 삽질 끝에 Visual Studio 2013 을 설치하고 CUDA 10 을 설치하였다.

2. 프로젝트 설정

일반적인 순서라면 CUDA 설치 후

프로젝트 생성 – 프로젝트 우클릭 – 빌드 종속성 – 사용자 지정 빌드 – CUDA 8.0 을 선택

프로젝트 속성 – 구성 속성 – VC++디렉터리 – 포함 디렉터리

<< 자신의 경로에 맞게 지정 >>

프로젝트 속성 – 구성속성 – VC++디렉터리 – 라이브러리 디렉터리

<< 자신의 경로에 맞게 지정 >>

3. 그 외 설정

소스파일 이름을 .cpp 에서 .cu로 변경 – 마우스 우클릭 – 속성 – 구성 속성 – 항목 형식 CUDA C/C++ 변경

4. 라이브러리 파일 추가

프로젝트 이름 우클릭 – 구성 속성 – 링커 – 라이브러리 입력

<< 자신의 깔려있는 CUDA 라이브러리를 추가 >>

cuda.lib

cudart.lib

5. CUDA 소스 추가 후 프로젝트 설정

타겟 머신을 64 비트로 바꿔준다

GPU Debug information 을 No 로 바꾸어줌

6. 테스트 ( 쿠바 파일로 테스트 해도 되고, 일반 cpp 파일로 테스트 해도 됩니다)

아래는 쿠바 파일입니다.

#include

#include

#include

#include

__global__ void HelloFromGPU(){

printf(“Hello World from GPU~!

“);

}

int main(){

//std::cout << "Hello World from GPU~!!" << std::end; HelloFromGPU << <1,10>> >();

cudaDeviceReset();

return 0;

}

참고자료 1 : http://imdc.tistory.com/132

참고자료 2 : http://m.blog.naver.com/xneokr/220162548226

참고자료 3 : http://museguy.tistory.com/15

728×90

반응형

키워드에 대한 정보 opencv gpu 사용

다음은 Bing에서 opencv gpu 사용 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 Python용 GPU로 OpenCV를 설치하고 빌드하는 방법 | VS 코드 | NVIDIA Cuda 및 OpenCV 4.5.2

  • opencv c++
  • opencv python
  • python opencv
  • opencv gpu
  • opencv gpu c++
  • opencv gpu python
  • gpu opencv
  • opencv cuda
  • opencv cuda c++
  • cuda gpu c++
  • opencv source code
  • build opencv source files
  • cmake configuration
  • cmake opencv
  • cmake opencv c++
  • cmake opencv gpu
  • opencv
  • NVIDIA
  • NVIDIA Cuda
  • NVIDIA cuDNN
  • The Coding Library
  • opencv nvidia
  • cuda opencv
  • cuda c++
  • cuDNN
  • install opencv
  • python
  • build opencv
  • build opencv python
  • install opencv python
  • cuda opencv python

Python용 #GPU로 #OpenCV를 #설치하고 #빌드하는 #방법 #| #VS #코드 #| #NVIDIA #Cuda #및 #OpenCV #4.5.2


YouTube에서 opencv gpu 사용 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 Python용 GPU로 OpenCV를 설치하고 빌드하는 방법 | VS 코드 | NVIDIA Cuda 및 OpenCV 4.5.2 | opencv gpu 사용, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment