1. 그래픽 카드 드라이버 설치
$ ubuntu-drivers devices
470을 recommended 하고 있으므로 470설치합니다.
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
$ sudo apt-get install nvidia-driver-470
$ reboot
비밀번호 8자리를 설정합니다.
$ sudo reboot
그러면 위와 같은 화면이 나옵니다.
Enroll MOK -> View Key 0 -> ESC 클릭 -> Continue -> password: 아까 설정한 비밀번호 -> OK -> reboot
$ nvidia-smi
470 드라이버설치된것과 동시에 cuda 11.4가 설치 됩니다.
2. cuda-10.2 설치
기존 cuda삭제
$ sudo apt-get --purge remove "*cublas*" "cuda*"
$ sudo autoremover
$ reboot
했는데
음... 제거되는 게 없다고 뜨는 데 nvidia-smi를 입력했을 때 cuda는 11.4버전이다.
$ find / -name "cuda*" > out
$ less out
로 찾아봐도 11.4버전은 안보인다. 그래서 그냥 재설치하였습니다.
https://developer.nvidia.com/cuda-toolkit-archive
공식 사이트에 접속합니다.
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
$ sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
$ sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub
$ sudo apt-get update
명령어 중에 맨 마지막 줄 빼고 입력합니다.
# CUDA 10.2 설치 (명령어 중 맨 마지막 줄은 cuda-10-2를 꼭 붙여야함 아니면 여러개 설치되는 걸로 알고 있습니다)
$ sudo apt-get -y install cuda-10-2
$ sudo gedit ~/.bashrc
가장 아래에 다음을 추가
export PATH=$PATH:/usr/local/cuda-10.2/bin
export CUDADIR=/usr/local/cuda-10.2
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.2/lib64
값만 넣지말고 실제로 경로에 들어가 파일명 맞는지 확인합니다. cuda-10.2버전이 아니라면 버전명과 폴더명이 다를 수도 있습니다.
$ sudo reboot
$ nvidia-smi
위와 같이 cuda버전이 10.2가 된 것을 확인할 수 있습니다.
이제와서 보니깐 드라이버 440을 깔아야 RTX 2060 SUPER를 제대로 인식하는 것 같다. 처음 알았네
3. cudnn 8.0.3 설치
https://developer.nvidia.com/cudnn
공식 다운로드 사이트에 접속하고 로그인을 합니다.
cuDNN header 파일들을 local/cuda/cuda-10.2/include 폴더에 붙여 넣어주는 명령어입니다.
sudo cp ./cuda/include/* /usr/local/cuda-10.2/include
cuDNN Library 파일들을 local/cuda/cuda-10.2/include 폴더에 붙여 넣어주는 명령어입니다.
sudo cp -P ./cuda/lib64/* /usr/local/cuda-10.2/lib64
라이브러리 실행 권한을 부여합니다.
sudo chmod a+r /usr/local/cuda-10.2/lib64/libcudnn*
cudnn 버전을 확인합니다.
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
8.0.3버전에 맞게 표시가 됩니다.
4. opencv 4.5.1 빌드
위의 블로그를 참고하여 opencv4.2버전 이상인 4.5버전을 사용하여 cuda 가속을 사용할려고 했다. 전부 다하고 결과만 따졌을 때는 적용이 안됬다. 그러므로 4. opencv 4.5.1 빌드 부분은 하거나 말거나 마음대로 하시라!
-기존 버전 확인
pkg-config --modversion opencv
삭제 명령어
$ sudo apt-get purge libopencv* python-opencv
$ sudo apt-get autoremove
$ sudo find /usr/local/ -name "*opencv*" -exec rm -i {} \;
패키지 업데이트
$ sudo apt-get update
$ sudo apt-get upgrade
opencv 관련 패키지
- build-essential: C/C++ 컴파일러와 관련 라이브러리, make 같은 도구들이 포함
- cmake: 컴파일 옵션이나 빌드된 라이브러리에 포함시킬 OpenCV 모듈 설정 등을 위해 필요 (나는 앞에서 미리 깔아서 이건 안했음)
- pkg-config: 프로그램 컴파일 및 링크시 필요한 라이브러리에 대한 정보를 메타파일(확장자가 .pc 인 파일)로부터 가져오는데 사용됨. 터미널에서 특정 라이브러리를 사용한 소스코드를 컴파일시 필요한 컴파일러 및 링커 플래그를 추가하는데 도움이 됨.
- libjpeg-dev, libtiff5-dev, libpng-dev : 특정 포맷의 이미지 파일을 불러오거나 기록하기 위해 필요
- libavcodec-dev, libavformat-dev, libswscale-dev, libxvidcore-dev, libx264-dev, libxine2-dev: 특정 코덱의 비디오 파일을 읽어오거나 기록하기 위해 필요
- libv4l-dev, v4l-utils: Video4Linux 패키지는 리눅스에서 실시간 비디오 캡처를 지원하기 위한 디바이스 드라이버와 API 포함
- libgstreamer1.0-dev, libgstreamer-plugins-base1.0-dev: 비디오 스트리밍을 위한 라이브러리
- libgtk2.0-dev: highgui 모듈을 사용하여 자체적으로 윈도우 생성하여 이미지나 비디오를 보여줄 수 있음. 윈도우 생성 등의 GUI를 위해 gtk 또는 qt를 선택해서 사용 가능. 여기서는 gtk2를 지정함 (다른 가능한 패키지: libgtk-3-dev, libqt4-dev, libqt5-dev)
3.2.0 - mesa-utils, libgl1-mesa-dri, libgtkgl2.0-dev, libgtkglext1-dev: OpenGL 지원하기 위해 필요
- libatlas-base-dev, gfortran, libeigen3-dev: OpenCV 최적화하기 위해 필요
- python2.7-dev, python3-dev: OpenCV-Python 바인딩 위해 필요
- python-numpy, python3-numpy: numpy는 매트릭스 연산 등을 빠르게 처리 가능
$ sudo apt-get install build-essential cmake (#이거는 앞에서 cmake 깔아서 안함.)
$ sudo apt-get install pkg-config
$ sudo apt-get install libjpeg-dev libtiff5-dev libpng-dev
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev
$ sudo apt-get install libv4l-dev v4l-utils
$ sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
$ sudo apt-get install libgtk2.0-dev
$ sudo apt-get install mesa-utils libgl1-mesa-dri libgtkgl2.0-dev libgtkglext1-dev
$ sudo apt-get install libatlas-base-dev gfortran libeigen3-dev
$ sudo apt-get install python2.7-dev python3-dev python-numpy python3-numpy
이제 opencv를 빌드하자.
먼저 디렉터리를 생성한다.
$ mkdir opencv
$ cd opencv
그 후 opencv와 opencv-contrib를 다운받는다.
$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.1.zip
$ unzip opencv.zip
$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.1.zip
$ unzip opencv_contrib.zip
다음으로 opencv 디렉터리 안으로 이동해서 빌드할 디렉터리 생성.
$ cd opencv-4.5.1
$ mkdir build
$ cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_ENABLE_NONFREE=OFF \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib-4.5.1/modules \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON \
-D BUILD_DOCS=OFF \
-D BUILD_SHARED_LIBS=ON \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D PYTHON_DEFAULT_EXECUTABLE=$(which python3) \
-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.2 \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D WITH_CUDA=ON \
-D WITH_CUBLAS=ON \
-D WITH_CUDNN=ON \
-D CUDNN_LIBRARY=/usr/local/cuda-10.2/lib64/libcudnn.so.8.0.3 \
-D CUDNN_INCLUDE_DIR=/usr/local/cuda-10.2/include \
-D CUDA_FAST_MATH=1 \
-D OPENCV_DNN_CUDA=ON \
-D CUDA_ARCH_BIN=7.5 \
-D CUDA_ARCH_PTX=7.5 \
-D WITH_VTK=ON \
-D WITH_OPENCL=ON \
-D OPENCV_SKIP_PYTHON_LOADER=ON \
-D PYTHON_EXECUTABLE=~/anaconda3/envs/yolov8/bin/python3 \
-D PYTHON3_INCLUDE_DIR=~/anaconda3/envs/yolov8/include/python3.7m \
-D PYTHON3_NUMPY_INCLUDE_DIRS=~/anaconda3/envs/yolov8/lib/python3.7/site-packages/numpy/core/include \
-D PYTHON3_PACKAGES_PATH=~/anaconda3/envs/yolov8/lib/python3.7/site-packages \
-D PYTHON3_LIBRARY=~/anaconda3/envs/yolov8/lib/libpython3.7m.so \
-D PYTHON_LIBRARIES=~/anaconda3/envs/yolov8/lib/python3.7 ../
---------------------------------------------------------------------------------------------------------------------------------------------------------------
-D PYTHON_DEFAULT_EXECUTABLE=$(which python3) 이거는 python(for build) 메뉴가 python2로 설정되어 있어서 입력해주었다.
-빨간색글씨는 사용자의 PC에 맞는 파일 경로에 맞게 수정해야함.
-주황색 줄은 자신의 GPU에 맞게 바꿔야함.
https://en.wikipedia.org/wiki/CUDA
이를 확대하면
GeForce GTX Titan X의 경우 Maxwell이며 5.2이다.
-D CUDA_ARCH_BIN=7.5 \
-D CUDA_ARCH_PTX=7.5 \
그러면 여기서 7.5대신에 5.2로 바꿔야한다.
이렇게 cmake 명령어를 다 입력하면
이러니깐
-- Configuring done
-- Generating done
이런식으로 화면이 떠야 ok이다. 아닐 경우 cmake 명령어 구문에 이상이 있다는 의미이다. 파일 경로 등을 수정해야한다.
통과가 되면
$ cat /proc/cpuinfo | grep processor
를 실행시켜 cpu의 코어 수를 확인합니다.
필자의 코어 수는 4개이므로
$ time make -j4
를 눌러 빌드합니다.
$ sudo make install
$ cat /etc/ld.so.conf.d/*
를 입력해서 /usr/local/lib가 있는지 확인한다. 있으면 $ sudo ldconfig를 해주면 완료입니다.
5. ubuntu 18.04 ros melodic 설치
https://brownboard.tistory.com/20
저번에 정리해둔게 있다.
1) Setup your sources.list
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
2) Set up your keys
$ sudo apt install curl
$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
3) ROS 설치
$ sudo apt update
$ sudo apt install ros-melodic-desktop-full
4) Environment setup
$ echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
5) Dependencies for building packages
$ sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
$ sudo apt install python-rosdep
$ sudo rosdep init
$ rosdep update
9.node 테스트
'STUDY > YOLO' 카테고리의 다른 글
ubuntu 프젝과정 최종정리 (0) | 2022.06.06 |
---|---|
우분투 opencv 정리 (0) | 2022.06.04 |
ubuntu에서 살아남기 yolo_cuda편 (0) | 2022.05.30 |
우분투 그래픽드라이버 cuda cudnn (0) | 2022.05.28 |
우분투 yolo 환경구축 (0) | 2022.05.28 |
댓글