CUDA와 CUDNN설치후 openCV를 수동으로 설치후 weights파일이 적용된 아니면 적용이 안된 python파일을 실행시켜도
nvidia-smi의 running processes에 추가가 되지 않는 모습이었다... CUDA/CUDNN/openCV의 버전 호환도 맞췄고, gpu에 따른
CUDA_ARCH_BIN도 맞췄는데 왜안될까... 라고해서 CUDA/CUDNN/openCV 설치만 주구장창 10일 가량 했던거 같다..
물론 나의 잘못이지만 python에서 import cv2를 한 후 버전확인 한 버전과 pkg-config --modversion opencv4의 버전이 다르다는것은 내가 CUDA를 적용한 openCV를 파이썬이 적용을 하지 못한것... 따라서 openCV설치 전의 AMI이미지를 저장해뒀기에 처음부터 다시 시작하기로 하였다..(사실 심볼릭 링크가 깨져서 이것저것 지우고 다시깔다가 apt가 안돼서 다시함 ㅎㅎ 비밀~~)
(재설치 10회 이상하여 멘탈이 안좋아 사진은 없습니다....)
CUDA11.4,NDIVIA-DRIVER-470 설치
계속 nvidia-driver를
sudo apt-get install nvidia-driver-470
이렇게 설치한 후 CUDA버전을 맞춰서 설치를 진행 하였지만.
nvidia-driver를 설치한후 CUDA를 설치하지않았는데 nvidia-smi로 확인을 해 보면 CUDA의 버전이 지멋대로 적용이 돼있었다..
CUDA를 설치할때 같이 설치되는 ndivia-driver로 설치 하였다.
이 링크에서 .run파일을 다운받고 설치를 진행해 준다.
중간에 체크박스 화면이 보이겠지만 example 등과같은건 설치하지말고 ndivia-driver와 그밑의 cuda tool만 설치를 진행하면 된다.
설치가 완료가 된다면
sudo vi ~/.bashrc
export PATH=$PATH:/usr/local/cuda-11.4/bin
export CUDADIR=/usr/local/cuda-11.4
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.4/lib64
:wq!로 저장을 한뒤
source ~/.bashrc 로 저장을 하고 재부팅을 하면된다.
이후
nvcc -V
nvidia-smi
로 cuda버전이 일치함을 볼 수 있을것이다.
CUDNN8.2.4설치
https://developer.nvidia.com/rdp/cudnn-download#a-collapse714-92
여기서 간단한 회원 가입후 자신이 원하는 버전의 cudnn을 다운받아 ubuntu환경으로 옮겨주면 된다.
(저는 노트북에 설치후 scp를 이용하여 옮겼습니다)
scp -i "키페어 위치" "옮길 파일의 위치" "ec2접속주소":/home/ubuntu
이후 deb는 dpkf or tgz는 tar -xvf 등으로 파일을 풀게 된다면 cuda의 폴더가 생성될것이다.
cd cuda/ 파일의 위치로 옮긴 후
sudo cp include/cudnn* /usr/local/cuda-11.4/include
sudo cp -P lib64/libcudnn* /usr/local/cuda-11.4/lib64/
sudo chmod a+r /usr/local/cuda-11.4/lib64/libcudnn*
//-P를 같이 해줘야 심볼릭 링크가 깨지지 않고 복사해줌.
하면 cudnn설치 완료
CUDNN버전 확인
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
nvidia-smi를 확인하면 GPU가 OFF로 되어 있을 수 있다.
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/optimize_gpu.html
이 가이드를 참고하여 자신이 사용하는 인스턴스에 맞게 GPU를 활성화 해주면 된다.
여기까지 하면 openCV 설치를 위한 CUDA CUDNN설치가 완료됐다.~~ 칭찬해~~
openCV설치
혹시 설치된 openCV가 있는지 확인,삭제
pkg-config --modversion opencv4 //확인
//만약 openCV가 설치되어있다면
sudo apt-get purge libopencv* python-opencv4
//확인하기
sudo find /usr/local/ -name "*opencv*" -exec rm {} \;
//만약 남아 있다면 아래로 지우기
sudo rm -rf '경로'
//다시 확인하기
sudo find /usr/local/ -name "*opencv*" -exec rm {} \;
//다시 opencv 확인
pkg-config --modversion opencv4
git clone하여 opencv, opencv_contrib다운받기
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
CUDA_ARCH_BIN을 위해 자신의 gpu capability확인해서 넣어주세용
https://en.wikipedia.org/wiki/CUDA
cd ./opencv
mkdir build && cd build
//cmake해주기
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_CUDA_ENABLED=ON \
-D CUDA_FAST_MATH=ON \
-D CUDA_ARCH_BIN=7.5\ #자신의 gpu에 맞는 capability확인하기
-D CUDA_ARCH_PTX=7.5 \
-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=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_EXTRA_MODULES_PATH=/home/ubuntu/opencv_contrib/modules \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_PYTHON3_INSTALL_PATH=/usr/local/lib/python3.6/dist-packages \
-D PYTHON3_EXCUTABLE=/usr/bin/python3 \
-D PYTHON3_INCLUDE_DIR=/usr/include/python3.6 \
-D PYTHON3_NUMPY_INCLUDE_DIRS=**/usr/lib/python3/dist-packages/numpy/core/include** \
-D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages \
-D PYTHON3_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6.so \
// 자신 시스템의 코어 수 확인
nproc
// 빌드 (modify the core number '12' after option -j accordingly)
make -j12 # 자신 시스템 코어 수에 맞게 -j 다음의 숫자를 변경
// install
sudo make install
// 설치된 opencv확인 저 같은경우는 4.7.0
pkg-config --modversion opencv4
-D PYTHON3_EXCUTABLE=/usr/bin/python3 \
-D PYTHON3_INCLUDE_DIR=/usr/include/python3.6 \
-D PYTHON3_NUMPY_INCLUDE_DIRS=**/usr/lib/python3/dist-packages/numpy/core/include** \
-D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages \
-D PYTHON3_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6.so \
이 경로를 잘 파악해서 넣어주는것이 중요합니다!!!
이후 python3 ~~.py를 실행하고 nvidia-smi를 확인하니 프로세스에 잘 넣어지고 gpu사용량도 쭉쭉 올라가는것이 보입니다..
여러분들도 혹시 저랑 같은 문제를 직면한다면 다지우고 처음부...ㅌ..읍읍.. ㅋㅋ 조금이나마 도움이 됐으면 좋겠습니다!!
많은도움주신 분
https://darkpgmr.tistory.com/184
OpenCV + CUDA 직접 빌드하기 (Windows/Linux 종합)
최근에 opencv에 있는 dnn을 한번 써보려고 직접 소스를 받아서 빌드(build)해 보았다. 역시나 엄청난 삽질의 연속이고 할 때마다 이것 저것 해결책을 검색하느라 많은 시간을 소모한다 (삽질은 누구
darkpgmr.tistory.com
'캡스톤디자인(졸업작품)' 카테고리의 다른 글
위협 행동 실시간 감지 시스템 ) -완- 후기 (0) | 2023.06.06 |
---|---|
위협 행동 실시간 감지 시스템 ) Swift Uikit 어플 만들기 3 - AVkit, Firebase연동 연습 (0) | 2023.02.11 |
위협 행동 실시간 감지 시스템 ) Swift Uikit 앱 만들기 2 - 탭바, 웹뷰 (0) | 2023.02.07 |
위협 행동 실시간 감지 시스템 ) Swift Uikit 어플 만들기 1 - 탭바, 웹뷰 (0) | 2023.02.07 |