본문 바로가기

딥러닝 공부

Pytorch를 위한 Jetson nano OS 설치 및 환경설정_3 CUDA 가속 활성화 OPENCV 설치

https://iambeginnerdeveloper.tistory.com/216

 

Jetson Nano | JetPack 설치, pytorch 설치, OpenCV with CUDA(opencv cuda 가속화 설정)

◾ JetPack이란? NVIDIA JetPack SDK는 종단 간 가속 AI 애플리케이션을 구축하기 위한 가장 포괄적인 솔루션으로, JetPack은 Nvidia Jetson 모듈에서 하드웨어 가속 AI-at-the-edge 개발을 위한 전체 개발 환경을

iambeginnerdeveloper.tistory.com

opecv 설치를 위해서 위의 블로그 포스팅을 따랐습니다!

 

우선 앞의 pytorch를 설치를 완료했으면, 학습에 사용할 CUDA 가속 활성화를 위해 기존의 opencv를 삭제하고 새롭게 opencv를 설치하겠다.

 

자신의 jetson nano가 CUDA가 활성화 되었는지 확인하는 방법은

sudo -H pip3 install -U jetson-stats
jtop

jtop 실핼시 현재 jetson nano 상태를 GUI로 볼 수 있는데, INFO 탭에 OpenCV 옆에 compiled CUDA가 NO로 되있는 걸 볼 수 있다.

opencv를 재설치한 후 찍은 사진이다

 

 

어쨌든 opencv 설치를 해보자.

 

 

0. 기존 opencv 삭제

jtop을 통해서 opencv CUDA가 비활성화 되어있는 분만 진행해주세요.

sudo apt-get remove libopencv*
sudo apt-get autoremove
sudo find /usr/local -name "*opencv*" -exec rm {} \;

pkg-config --modversion opencv
pkg-config --modversion opencv4

--> opencv가 정상적으로 삭제가 되었다면 설치된게 없다고 뜰텐데, 그러면 Ok

1. swap 공간 설정

opencv를 설치하는 과정에서 상당히 많은 자원이 필요한데, jetson nano의 RAM은 기껏해야 4기가이기 때문에 SD카드에 swap 공간을 설정해줍니다.

 

0. apt 업데이트 (했다면 안 해도 Ok)
sudo apt-get update
sudo apt-get upgrade

1. 텍스트 편집기, swap 파일 수정을 위한 패키지 설치
sudo apt-get install nano (vi, vim 같은 다른 편집기를 사용하면 pass)
sudo apt-get install dphys-swapfile

sudo nano /sbin/dphys-swapfile
--> 파일 내 상수 값 수정
CONF_SWAPSIZE=4096
CONF_SWAPFACTOR=2
CONF_MAXSWAP=4096
-> 나는 버릇처럼 등호 양 옆을 띄는 버릇이 있는데, 그렇게 하면 적용이 안 되니 조심하자

sudo nano /etc/dphys-swapfile
-->파일 내 상수 값 수정
CONF_SWAPSIZE=4096
CONF_SWAPFACTOR=2
CONF_MAXSWAP=4096

sudo reboot

-> sd 카드 용량이 너무 적지 않다면 swap 공간을 다시 바꿀 필요는 없다고 한다.

 

2. 필요 패키지 설치

sudo apt-get update

sudo apt-get install -y build-essential cmake git unzip pkg-config
sudo apt-get install -y libjpeg-dev libpng-dev libtiff-dev
sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install -y libgtk2.0-dev libcanberra-gtk*
sudo apt-get install -y python3-dev python3-numpy python3-pip
sudo apt-get install -y python3-dev python3-numpy libtbb2 libtbb-dev
sudo apt-get install -y libxvidcore-dev libx264-dev libgtk-3-dev
sudo apt-get install -y libtbb2 libtbb-dev libdc1394-22-dev
sudo apt-get install -y libv4l-dev v4l-utils
sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt-get install -y libavresample-dev libvorbis-dev libxine2-dev
sudo apt-get install -y libfaac-dev libmp3lame-dev libtheora-dev
sudo apt-get install -y libopencore-amrnb-dev libopencore-amrwb-dev
sudo apt-get install -y libopenblas-dev libatlas-base-dev libblas-dev
sudo apt-get install -y liblapack-dev libeigen3-dev gfortran
sudo apt-get install -y libhdf5-dev protobuf-compiler
sudo apt-get install -y libprotobuf-dev libgoogle-glog-dev libgflags-dev

-> 좀 많다. opencv를 여러 번 설치하면서 느낀 거지만, opencv 설치는 정말 귀찮다.

 

3. opencv zip file 다운

wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.0.zip

unzip opencv.zip
unzip opencv_contrib.zip

 

 

4. build 폴더 생성 및 빌드

# 압축 해제 후 생성 된 opencv-4.5.0 폴더 안으로 이동
cd opencv-4.5.0

# build 폴더 생성 후 이동
mkdir build
cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ # 아까 압축 해제 한 opencv_contrib 폴더의 경로로 적어야 함.
-D EIGEN_INCLUDE_PATH=/usr/include/eigen3 \
-D WITH_OPENCLAMDBLAS=OFF \
-D WITH_GTK=OFF \
-D WITH_OPENCL=OFF \
-D WITH_CUDA=ON \
-D CUDA_FAST_MATH=ON \
-D OPENCV_DNN_CUDA=ON \
-D CUDA_ARCH_PTX="" \
-D WITH_CUDNN=ON \
-D WITH_CUBLAS=ON \
-D ENABLE_FAST_MATH=ON \
-D ENABLE_NEON=ON \
-D WITH_QT=OFF \
-D WITH_OPENMP=ON \
-D WITH_OPENGL=ON \
-D BUILD_JASPER=ON \
-D BUILD_TIFF=ON \
-D WITH_FFMPEG=ON \
-D WITH_GSTREAMER=ON \
-D WITH_TBB=ON \
-D BUILD_TBB=ON \
-D WITH_EIGEN=ON \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_VTK=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_OPENCV_WORLD=ON \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_OPENCV_PYTHON_TESTS=OFF \
-D INSTALL_TESTS=OFF \
-D INSTALL_C_EXAMPLES=OFF \
-D BUILD_EXAMPLES=OFF ..

 

 

5. make

# 현재 시스템 코어 수 확인
nproc

# 코어 수를 -j 뒤에 적으면 됨!
make -j4  
->시간이 꽤나 오래 걸림. 대신 중간에 끊어도 이후에 이어서 설치가 가능하니까 큰 부담은 갖지 않아도 될듯 하다

sudo rm -rf /usr/include/opencv4/opencv2

sudo make install

--> 설치가 완료되면 /etc/ld.so.conf.d/ 파일에 저장된 내용 출력해서 /usr/local/lib 포함하는 파일이 있는지 확인을 해야 됨

cat /etc/ld.so.conf.d/*

# 만약 '/usr/local/lib'이 출력되지 않았다면 아래 명령어 실행
sudo sh -c 'echo '/usr/local/lib' > /etc/ld.so.conf.d/opencv.conf'
#공유 라이브러리 정보를 갱신
$ sudo ldconfig

 

 

 

이러면 설치 끝!