본문 바로가기

Back/Deep Learning

[YOLOv4][Darknet] 빌드 및 예시

0. 학습 환경.

  • 나의 오랜 벗, 낡은 노트북
    • cpu : i3 - 7100
    • vga : 1050 4GB (아마도, 모바일)
    • ram : 16G
    • HDD, (Ubuntu 설치되어있는)
  • Software
    • UBUNTU 20.04 LTS 
    • CUDA : 11.0
    • cuDNN: 8.2
    • OPENCV: 4.40
    • Anaconda, 및 기다 라이브러리들

참고)

2021.05.11 - [Python/환경설정] - [Ubuntu] 20.04x , OPENCV 설치

 

[Ubuntu] 20.04x , OPENCV 설치

뻘짓과 뻘짓을 반복하며 기록 1.환경 cuda 11.0 cudnn 8.2 Ubuntu 20.041 Anaconda python 2.라이브러리 설치 - 기존 패키지 업그래이드 $ sudo apt update $ sudo apt upgrade - 필요한 패키지 설치 sudo apt-get..

hidden-loca.tistory.com

 


사전 의문점.

  1. OPENCV 빌드시 CUDA를 설정하지 않고 사용했기에 문제가 생길것 같음.
  2. VRAM이 적어(4GB) 작동할지 안할지..

 

1. Darknet Cloning

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

git을 통해 받아오면 /darknet 폴더와 함께 생성된다.

 

2. Makefile 설정 변경

sed -i 's/OPENCV=0/OPENCV=1/' Makefile
sed -i 's/GPU=0/GPU=1/' Makefile
sed -i 's/CUDNN=0/CUDNN=1/' Makefile
sed -i 's/CUDNN_HALF=0/CUDNN_HALF=1/' Makefile

위에서부터 OPENCV, GPU, CUDNN, CUDNN_HALF 설정을 켜준다. 

CPU만 사용할 경우의 설정도 있으나, CPU로 학습하는것은 사람의 인내심으로 할게 못되니 GPU, 그것도 NVIDIA GPU 사용하자.

더불어 ARCH 에서 각 그래픽카드에 맞게 설정을 해줘야 한다.

ARCH= -gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=[sm_50,compute_50] \
-gencode arch=compute_52,code=[sm_52,compute_52] \
-gencode arch=compute_61,code=[sm_61,compute_61]

OS := $(shell uname)

# GeForce RTX 3070, 3080, 3090
# ARCH= -gencode arch=compute_86,code=[sm_86,compute_86]

# Kepler GeForce GTX 770, GTX 760, GT 740
# ARCH= -gencode arch=compute_30,code=sm_30

# Tesla A100 (GA100), DGX-A100, RTX 3080
# ARCH= -gencode arch=compute_80,code=[sm_80,compute_80]

# Tesla V100
# ARCH= -gencode arch=compute_70,code=[sm_70,compute_70]

# GeForce RTX 2080 Ti, RTX 2080, RTX 2070, Quadro RTX 8000, Quadro RTX 6000, Quadro RTX 5000, Tesla T4, XNOR Tensor Cores
# ARCH= -gencode arch=compute_75,code=[sm_75,compute_75]

# Jetson XAVIER
# ARCH= -gencode arch=compute_72,code=[sm_72,compute_72]

# GTX 1080, GTX 1070, GTX 1060, GTX 1050, GTX 1030, Titan Xp, Tesla P40, Tesla P4
# ARCH= -gencode arch=compute_61,code=sm_61 -gencode arch=compute_61,code=compute_61

# GP100/Tesla P100 - DGX-1
# ARCH= -gencode arch=compute_60,code=sm_60

# For Jetson TX1, Tegra X1, DRIVE CX, DRIVE PX - uncomment:
# ARCH= -gencode arch=compute_53,code=[sm_53,compute_53]

# For Jetson Tx2 or Drive-PX2 uncomment:
# ARCH= -gencode arch=compute_62,code=[sm_62,compute_62]

# For Tesla GA10x cards, RTX 3090, RTX 3080, RTX 3070, RTX A6000, RTX A40 uncomment:
# ARCH= -gencode arch=compute_86,code=[sm_86,compute_86]

Make 파일 뒤쪽에 붙어 있으니, 뒤쪽에 \ 넣고 붙여 넣어주면 될 것.

 

3. Make

Make 중간에 나오는 갖가지 warning은 일단 넘어가자.

 

4. TEST

wget https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.weights

사전 가중치를 받아온다. coco dataset 기반의 가중치이며 다음과 같이 확인해 볼 수 있다.

./darknet detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights twice.jpg

darknet 폴더의 predict.jpg에 바운드된 이미지가 생성되면 성공.

 

 

QNA

Q) 윈도우에서도 가능한가요?

A) 가능합니다. 다만 C++빌드를 위해서 비주얼스튜디오를 설치하고 환경변수 잡고 Cmake 다루고 등등 신경 써야 될게 많아 Ubuntu로 진행, 또한 colab과 같이 사용하다 보니 환경맞추기가 더 편했습니다.

 

다음글) 학습자료 구성 및 생성.