(해당 글은 qengineering을 기반으로 작성하였습니다.)
Jetson Nano에서 GPU 즉, CUDA를 사용하기 위해서는
OpenCV를 설치해야합니다.
가장 오래 걸리는 작업 (3~4시간) 이므로 유의해주세요!
YOLOv5에서 원하는 최소 사양은 OpenCV 4.1.2 지만,
저는 OpenCV 4.5.0 을 설치해보겠습니다.
OpenCV 설치 전 공간을 비워줘야 합니다.
(간편한 복붙을 위해 $는 생략하겠습니다.)
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install nano
sudo apt-get install dphys-swapfile
sudo nano /sbin/dphys-swapfile
CONF_SWAPSIZE=
⏩CONF_SWAPSIZE=4096
(4096)
CONF_MAXSIZE=2048
⏩CONF_MAXSIZE=4096
(2048→4096)
변경 후 Ctrl+X
> Y
> Enter
sudo nano /etc/dphys-swapfile
#CONF_SWAPSIZE=
⏩CONF_SWAPSIZE=4096
(주석 제거, 4096)
#CONF_SWAPFACTOR=2
⏩CONF_SWAPFACTOR=2
(주석 제거)
#CONF_MAXSIZE=2048
⏩CONF_MAXSIZE=4096
(주석 제거, 4096)
변경 후 Ctrl+X
> Y
> Enter
sudo reboot
free -m
wget https://github.com/Qengineering/Install-OpenCV-Jetson-Nano/raw/main/OpenCV-4-5-0.sh
sudo chmod 755 ./OpenCV-4-5-0.sh
./OpenCV-4-5-0.sh
rm OpenCV-4-5-0.sh
sudo /etc/init.d/dphys-swapfile stop
sudo apt-get remove --purge dphys-swapfile
sudo rm -rf ~/opencv
sudo rm -rf ~/opencv_contrib
free -m
sudo sh -c "echo '/usr/local/cuda/lib64' >> /etc/ld.so.conf.d/nvidia-tegra.conf"
sudo ldconfig
sudo apt-get install build-essential cmake git unzip pkg-config zlib1g-dev
sudo apt-get install libjpeg-dev libjpeg8-dev libjpeg-turbo8-dev
sudo apt-get install libpng-dev libtiff-dev libglew-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install libgtk2.0-dev libgtk-3-dev libcanberra-gtk*
sudo apt-get install python-dev python-numpy python-pip
sudo apt-get install python3-dev python3-numpy python3-pip
sudo apt-get install libxvidcore-dev libx264-dev libgtk-3-dev
sudo apt-get install libtbb2 libtbb-dev libdc1394-22-dev libxine2-dev
sudo apt-get install gstreamer1.0-tools libgstreamer-plugins-base1.0-dev
sudo apt-get install libgstreamer-plugins-good1.0-dev
sudo apt-get install libv4l-dev v4l-utils v4l2ucp qv4l2
sudo apt-get install libtesseract-dev libxine2-dev libpostproc-dev
sudo apt-get install libavresample-dev libvorbis-dev
sudo apt-get install libfaac-dev libmp3lame-dev libtheora-dev
sudo apt-get install libopencore-amrnb-dev libopencore-amrwb-dev
sudo apt-get install libopenblas-dev libatlas-base-dev libblas-dev
sudo apt-get install liblapack-dev liblapacke-dev libeigen3-dev gfortran
sudo apt-get install libhdf5-dev libprotobuf-dev protobuf-compiler
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install qt5-default
cd ~
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
mv opencv-4.5.0 opencv
mv opencv_contrib-4.5.0 opencv_contrib
rm opencv.zip
rm opencv_contrib.zip
cd ~/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D EIGEN_INCLUDE_PATH=/usr/include/eigen3 \
-D WITH_OPENCL=OFF \
-D WITH_CUDA=ON \
-D CUDA_ARCH_BIN=5.3 \
-D CUDA_ARCH_PTX="" \
-D WITH_CUDNN=ON \
-D WITH_CUBLAS=ON \
-D ENABLE_FAST_MATH=ON \
-D CUDA_FAST_MATH=ON \
-D OPENCV_DNN_CUDA=ON \
-D ENABLE_NEON=ON \
-D WITH_QT=OFF \
-D WITH_OPENMP=ON \
-D BUILD_TIFF=ON \
-D WITH_FFMPEG=ON \
-D WITH_GSTREAMER=ON \
-D WITH_TBB=ON \
-D BUILD_TBB=ON \
-D BUILD_TESTS=OFF \
-D WITH_EIGEN=ON \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D BUILD_opencv_python3=TRUE \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=OFF ..
make -j4
sudo rm -r /usr/include/opencv4/opencv2
sudo make install
sudo ldconfig
make clean
sudo apt-get update
Terminal 접속
> Python3 실행 python3
> import cv2
> cv2.__version__
> 버전 확인 후 exit()
으로 python3 종료
sudo -H pip install -U jetson-stats
sudo reboot
sudo jtop
7번을 누른뒤
OpenCV 버전 및 YES 확인
Make 파일을 만들어서 설치하는 방법은 매우 까다롭습니다.
Qengieneering에서 좋은 파일을 만들어 놨으니
파일이 다운안되지 않는 이상 무조건!! Script 방식을 이용
OpenCV CUDA (GPU)를 사용하려면
꼭 공간을 비우고
3시간 이상의 여유를 가지고
Script 방식으로 설치하자!