DEEP.I - Lab

오프라인 공간의 지능화를 꿈꾸는 딥아이 연구실입니다.

C \ C++

[Darknet] Yolo 구현을 위한 darknet 설치 - yolov4

Jinsoo Kim 2021. 1. 27. 10:28
반응형

1. Cmake 다운로드

cmake download를 검색하여 다운로드 사이트로 이동합니다. (링크 : https://cmake.org/download/)

 

Download | CMake

Current development distribution Each night binaries are created as part of the testing process. Other than passing all of the tests in CMake, this version of CMake should not be expected to work in a production environment. It is being produced so that us

cmake.org

 

[cmake-3.17.0-rc1.tar.gz]를 다운로드합니다. 3.17 버전 이외의 최신 버전을 다운로드하셔도 상관없습니다.

그리고 다운로드한 경로로 접근하여 압축을 해제합니다.

tar -xvzf cmake-3.17.0-rc1.tar.gz

 

압축 해제가 완료된 후에 qt5, SSL패키지를 설치합니다.

 

sudo apt install qt5-default
sudo apt-get install build-essential
sudo apt install libssl-dev

 

다운로드한 cmake 설치 파일의 경로로 이동한 후 bootstrap파일을 실행합니다.

./bootstrap

bootstrap파일이 정상적으로 실행되면 다음 두 명령어를 차례로 입력하여 컴파일을 진행합니다.

make
sudo make install

 

cmake가 정상적으로 다운된 경우 다음과 같이 cmake 버전을 확인할 수 있습니다.

 

2. Opencv 다운로드

설치 전 패키지 업데이트 및 업그레이드를 진행합니다.

sudo apt update
sudo apt upgrade

 

opencv 설치를 위한 패키지를 다운로드합니다.

sudo apt-get install build-essential cmake pkg-config libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev libv4l-dev v4l-utils libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libqt4-dev mesa-utils libgl1-mesa-dri libqt4-opengl-dev libatlas-base-dev gfortran libeigen3-dev python2.7-dev python3-dev python-numpy python3-numpy

 

 

opencv를 다운로드할 폴더를 생성합니다. 이때 폴더의 상위 경로 한글 명인 경우 나중에 오류가 발생합니다.

예를 들어, cmake 설치 파일이 다운로드된 [다운로드] 폴더에 opencv를 다운로드할 폴더를 생성하면 opencv 설정을 진행하는 경우 오류가 생깁니다. 따라서 홈 경로에 설치 폴더를 생성하는 것을 권장합니다.

mkdir opencv && cd opencv

 

 

설치 파일을 다운로드하고 압축을 해제합니다.

wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.4.0.zip
unzip opencv.zip
wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.4.0.zip
unzip opencv_contrib.zip

 

 

[opencv-3.4.0] 폴더에 접근한 후 [build] 폴더를 생성합니다. 

cd opencv-3.4.0
mkdir build && cd build

 

 

darknet 사용 환경에 맞춰 opencv 환경을 설정합니다.

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 INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.0/modules \
-D WITH_V4L=ON \
-D WITH_FFMPEG=ON \
-D WITH_XINE=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D BUILD_opencv_xfeatures2d=OFF \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_GSTREAMER=ON -D WITH_FFMPEG=ON \
../

 

 

cmake 다운로드와 마찬가지로 다음 두 명령어를 입력하여 컴파일을 진행합니다.

make
sudo make install
pkg-config --cflags opencv

 

 

3. Nvidia 그래픽 드라이버 설치

CUDA, CUDNN의 사용을 위해 NVIDIA 그래픽 카드 드라이버 설치를 진행합니다.

[시스템 설정] - [소프트웨어 & 업데이트] - [추가 드라이버]로 진입한 후 NVIDIA 그래픽 카드를 선택하고 [바뀐 내용 적용(A)]을 클릭합니다. 설치가 완료된 후에는 재부팅을 진행합니다.

 

 

4. CUDA 설치

cuda download를 검색하여 다운로드 사이트로 이동합니다.

 

https://developer.nvidia.com/cuda-10.1-download-archive-base?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=debnetwork

 

CUDA Toolkit 10.1 original Archive

Select Target Platform Click on the green buttons that describe your target platform. Only supported platforms will be shown. Operating System Architecture Distribution Version Installer Type Do you want to cross-compile? Yes No Select Host Platform Click

developer.nvidia.com

가장 최신 버전은 10.2이지만, 파이토치(Pytorch)나 텐서플로우(Tensorflow)등의 프레임워크들에서 호환되는 버전은 아직까지 10.1이기 때문에 10.1 버전으로 다운로드합니다.

[Linux] - [x86_64] - [Ubuntu] - [18.04] - [deb (network)]를 선택한 후 [Donwload] 버튼을 클릭합니다.

 

 

파일이 다운로드된 이후에는 CUDA 설치를 명령어로 진행합니다.

sudo dpkg -i cuda-repo-ubuntu1604_10.1.105-1_amd64.deb
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
sudo apt update

 

업데이트 후 데스크탑을 재부팅한 뒤에 다시 명령어를 실행합니다.

sudo apt install cuda

 

만약 설치 과정에서 다음과 같은 오류가 발생하는 경우 다음 명령어로 CUDA를 설치합니다.

sudo apt install cuda --fix-missing

 

 

5. CUDNN 설치

cuda download를 검색하여 다운로드 사이트로 이동하고 [Download CUDNN]를 클릭한 후 로그인합니다.

(링크 : https://developer.nvidia.com/cudnn)

 

체크박스를 클릭하여 라이센스에 동의한 후 설치한 CUDA버전에 맞는 CUDNN 중에서 [cuDNN Library for LINUX]를 다운로드합니다. 다운로드한 후에는 설치 파일의 압축을 해제합니다.

tar -xvzf cudnn-10.2-linux-x64-v7.6.5.32.tgz

 

 

다음 명령어를 실행합니다.

sudo cp -P cuda/include/cudnn.h /usr/local/cuda/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

 

 

설치 완료 후에는 환경변수를 설정합니다.

터미널에서 다음 명령어를 통해 쉘을 실행합니다.

nano ~/.bashrc

가장 마지막 부분에 다음과 같이 입력한 후 저장합니다.

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda

 

 

6. Darknet 설치

깃허브의 darknet은 pjreddie, AlexeyAB 2가지 버전이 있습니다. AlexeyAB버전의 darknet을 다운로드합니다.

(링크 : https://github.com/AlexeyAB/darknet)

git clone https://github.com/AlexeyAB/darknet.git

 

설치된 [darknet] 폴더로 접근한 후 [Makefile]의 설정을 수정합니다.

cd darknet
nano Makefile

 

 

cuda, cudnn, opencv를 사용하기 위해 GPU = 1, CUDNN = 1, OPENCV=1로 수정합니다.

그림처럼 [darknet] 실행파일이 생성되면 cuda, cudnn, opencv가 문제없이 설치된 것입니다.

 

 

마지막으로 darknet을 이용해서 단일 이미지에 대한 object detection을 진행해보겠습니다.

darknet 사용 방법은 다음 포스트에서 상세하게 작성할 예정입니다.

 

먼저 가중치 파일을 다운로드 받습니다.

wget https://pjreddie.com/media/files/yolov3.weights

 

그리고 단일 이미지에 대하여 객체를 탐지하는 명령어를 실행합니다.

./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

 

 

명령어를 실행하면 구축되어 있는 CNN에 대해 Feed-foward가 진행되며 터미널에는 탐지된 객체의 종류, 신뢰도가 출력됩니다.

또한 Makefile의 OPENCV=1로 설정했기 때문에 탐지 결과가 이미지에 표시된 창이 생성됩니다.

 

 

Contact Us

blog : https://deep-eye.tistory.com
mail : deepi.contact.us@gmail.com

Your Best AI Partner DEEP.I
AI 바우처 공급 기업
객체 추적 및 행동 분석 솔루션 | 제조 생산품 품질 검사 솔루션 | AI 엣지 컴퓨팅 시스템 개발

인공지능 프로젝트 개발 외주 및 상담
E-mail: contact@deep-i.ai
Site: www.deep-i.ai
 

딥아이 DEEP.I | AI 기반 지능형 기업 솔루션

딥아이는 AI 기술의 정상화라는 목표를 갖고, 최첨단 딥러닝 기술 기반의 기업 솔루션을 제공하고 있으며, 이를 통해 고도의 AI 기반 객체 탐지, 분석, 추적 기능을 통합하여 다양한 산업 분야에

deep-i.ai

 

반응형