이 글은 아래 링크의 글을 나의 환경에 맞게 재구성한 것이다.
따라서 왠만하면 아래 글을 따라가는 것이 에러가 적을 것이다.
REF : https://iambeginnerdeveloper.tistory.com/216?category=1062303
1. swap memory 설정
jetson nano에서 yolo를 실행하기 위해서는 기존 자원으로는 부족하다. 따라서 swap memory 설정을 통해 하드디스크의 일부를 메모리로 스왑하는 작업을 해야 한다.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install nano
sudo apt-get install dphys-swapfile
# /sbin/dphys-swapfile 파일 open
sudo nano /sbin/dphys-swapfile
## Swap파일의 값이 다음과 같도록 값을 추가하거나, 파일 내 주석을 해제
CONF_SWAPSIZE=4096
CONF_SWAPFACTOR=2
CONF_MAXSWAP=4096
# 값을 수정 후 [Ctrl] + [X], [y], [Enter]를 눌러 저장하고 닫으면 됨.
# /etc/dphys-swapfile 파일 open
sudo nano /etc/dphys-swapfile
# Swap파일의 값이 다음과 같도록 값을 추가하거나, 파일 내 주석을 해제
CONF_SWAPSIZE=4096
CONF_SWAPFACTOR=2
CONF_MAXSWAP=4096
# 값을 수정 후 [Ctrl] + [X], [y], [Enter]를 눌러 저장하고 닫으면 됨.
# 재부팅
sudo reboot
2. CUDA 버전 확인 후 삭제
# 기존 cuda 버전 확인
pkg-config --modversion opencv
# 기존에 설치 된 cuda가 있다면 버전이 뜰 것.
# 설치 된 cuda가 없다면 'No package 'opencv' found' 출력 됨.
# 기존에 설치 된 cuda 버전 및 의존 패키지 삭제
sudo apt-get remove libopencv*
sudo apt-get autoremove
sudo find /usr/local -name "*opencv*" -exec rm {} \;
3. 추가 패키지 설치
sudo apt-get update
# sudo apt-get upgrade -> 이건 자주 안하는 걸 권장한다 함..
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
4. opencv zip 다운로드 & opencv 설치
# 홈 디렉토리 이동
cd ~
# opencv, opencv_contrib 설치
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
5. cmake 로 빌드
→ 아래 cmake 빌드 옵션 설정에서 본인의 경로를 잘
→ cmakelist.txt 파일이 없다는 에러가 뜨면 build 하고 있는 상위 경로에 cmakelist.txt 파일이 있는지 확인 해야 한다.
# 압축 해제 후 생성 된 opencv-4.5.0 폴더 안으로 이동
cd opencv-4.5.0
# build 폴더 생성 후 이동
mkdir build
cd build
# cmake 빌드 옵션 설정
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-4.5.0/modules/ \
-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 ..
6. Build
# 현재 시스템 코어 수 확인
nproc
# 코어 수를 -j 뒤에 적으면 됨!
make -j4 # 이 과정이 2시간 정도 소요 됨.
sudo rm -rf /usr/include/opencv4/opencv2
sudo make install
→ 설치 후 /etc/ld.so.conf.d/ 파일에 저장된 내용 출력해서 /usr/local/lib 포함하는 파일이 있는지 확인을 해야 함.
cat /etc/ld.so.conf.d/*
위의 명령어를 쳤을 때 아래 결과가 나오면 성공한 것이다.
# Multiarch support
/usr/local/lib/aarch64-linux-gnu
/lib/aarch64-linux-gnu
/usr/lib/aarch64-linux-gnu
/usr/lib/aarch64-linux-gnu/tegra-egl
/usr/lib/aarch64-linux-gnu/tegra
/usr/local/cuda-10.2/targets/aarch64-linux/lib
/usr/lib/aarch64-linux-gnu/fakechroot
/usr/lib/aarch64-linux-gnu/libfakeroot
# libc default configuration
/usr/local/lib
# SPDX-FileCopyrightText: Copyright (c) 2013-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: LicenseRef-NvidiaProprietary
#
# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
# property and proprietary rights in and to this material, related
# documentation and any modifications thereto. Any use, reproduction,
# disclosure or distribution of this material and related documentation
# without an express license agreement from NVIDIA CORPORATION or
# its affiliates is strictly prohibited.
/usr/lib/tegra
/usr/lib/aarch64-linux-gnu/tegra
/opt/nvidia/vpi1/lib64
그리고 jtop 을 쳤을 때 7INFO 탭에서 openCV: 4.5.0 with CUDA: YES 가 나온다면 성공적으로 설치된 것이다.
만약 위의 2개의 조건이 만족되지 않는다면 아래 명령어를 치면 된다.
# 만약 '/usr/local/lib'이 출력되지 않았다면 아래 명령어 실행
sudo sh -c 'echo '/usr/local/lib' > /etc/ld.so.conf.d/opencv.conf'
#공유 라이브러리 정보를 갱신
$ sudo idconfig
7. 설치 확인
7.1. jtop 으로 cuda 가속 되었는지 확인 :
만약 jtop 이 설치되어 있지 않다면 아래 링크에서 설치하면 된다.
https://iambeginnerdeveloper.tistory.com/217
Jetson Nano | jetson-stats, jtop 설치, jtop install
jetson nano의 stat들을 TUI(Text User Interface)형태로 사용할 수 있는 명령어가 있다. jetson-stats로 jtop이라는 명령어를 사용하면 된다. 설치 방법은 아래와 같다. # 이미 했다면 생략ㅇㅇ sudo apt-get update sud
iambeginnerdeveloper.tistory.com
7.2. python3 에서 import 가능한지 확인