본문 바로가기

IT/Deeplearning

[Object Detection / Deeplearning ] YOLO Darknet v2 - [2]

이번 포스팅에서는 YOLO Darknet의 설치 및 실행에 대해서 포스팅하겠습니다.


[Object Detection / Deeplearning] YOLO Darknet v2 - [1]




1. Install


이전 포스팅에서 언급하였던, YOLO Darknet github에서 코드를 다운 받습니다.

다운 받으셨으면 이전 포스팅의 구성처럼 파일 계층이 있을겁니다.


Darknet을 Install하기 위해서는 Makefile을 보시면 됩니다.

설치를 위해서 주로 보셔야하는 옵션은 GPU / CUDNN / OPENCV / OPENMP / DEBUG 입니다.

GPU는 NVIDIA Graphics 카드가 컴퓨터에 설치가 되어있고, CUDA가 설치되었다면 값을 1로 변경해주시면 됩니다.

만약 GPGPU를 이용한 병렬연산을 하지 않겠다하시면 옵션을 0으로 두시면됩니다.

CUDNN도 마찬가지로 CUDA가 설치되어있고, CUDNN까지 설치를 하셨다면 CUDNN 옵션을 1로 변경해주시면 됩니다.

OPENCV옵션은 OpenCV가 컴퓨터에 설치되어있다면 옵션을 1로 주시면 됩니다. 

제가 마지막으로 확인한 OpenCV 버전에 대한 지원은 2.4.x ~ 3.3.0까지 작동하는 것을 확인하였습니다.

OPENMP 옵션은 컴퓨터에 OpenMP가 설치가 되어있다면 1로 변경해주시면 되겠습니다.

DEBUG모드는 제가 사용해보지 않았지만 사용하시려면 옵션값을 1로 주시면 됩니다.


Darknet을 원활하게 실행시키시려면 최소한 OpenCV와 CUDA를 설치하셔서 OPENCV옵션과 GPU옵션을 1로 사용하시길 

추천드립니다.


Makefile




GPU=0
CUDNN=0
OPENCV=0
OPENMP=0
DEBUG=0

ARCH= -gencode arch=compute_30,code=sm_30 \
      -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_20,code=[sm_20,sm_21] \ This one is deprecated?

# This is what I use, uncomment if you know your arch and want to specify
# ARCH= -gencode arch=compute_52,code=compute_52

VPATH=./src/:./examples
SLIB=libdarknet.so
ALIB=libdarknet.a
EXEC=darknet
OBJDIR=./obj/

CC=gcc
NVCC=nvcc 
AR=ar
ARFLAGS=rcs
OPTS=-Ofast
LDFLAGS= -lm -pthread 
COMMON= -Iinclude/ -Isrc/
CFLAGS=-Wall -Wno-unknown-pragmas -Wfatal-errors -fPIC

ifeq ($(OPENMP), 1) 
CFLAGS+= -fopenmp
endif

ifeq ($(DEBUG), 1) 
OPTS=-O0 -g
endif

CFLAGS+=$(OPTS)

ifeq ($(OPENCV), 1) 
COMMON+= -DOPENCV
CFLAGS+= -DOPENCV
LDFLAGS+= `pkg-config --libs opencv` 
COMMON+= `pkg-config --cflags opencv` 
endif

ifeq ($(GPU), 1) 
COMMON+= -DGPU -I/usr/local/cuda/include/
CFLAGS+= -DGPU
LDFLAGS+= -L/usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand
endif

ifeq ($(CUDNN), 1) 
COMMON+= -DCUDNN 
CFLAGS+= -DCUDNN
LDFLAGS+= -lcudnn
endif

OBJ=gemm.o utils.o cuda.o deconvolutional_layer.o convolutional_layer.o list.o image.o activations.o im2col.o col2im.o blas.o crop_layer.o dropout_layer.o maxpool_layer.o softmax_layer.o data.o matrix.o network.o connected_layer.o cost_layer.o parser.o option_list.o detection_layer.o route_layer.o box.o normalization_layer.o avgpool_layer.o layer.o local_layer.o shortcut_layer.o activation_layer.o rnn_layer.o gru_layer.o crnn_layer.o demo.o batchnorm_layer.o region_layer.o reorg_layer.o tree.o  lstm_layer.o
EXECOBJA=captcha.o lsd.o super.o art.o tag.o cifar.o go.o rnn.o segmenter.o regressor.o classifier.o coco.o yolo.o detector.o nightmare.o attention.o darknet.o
ifeq ($(GPU), 1) 
LDFLAGS+= -lstdc++ 
OBJ+=convolutional_kernels.o deconvolutional_kernels.o activation_kernels.o im2col_kernels.o col2im_kernels.o blas_kernels.o crop_layer_kernels.o dropout_layer_kernels.o maxpool_layer_kernels.o avgpool_layer_kernels.o
endif

EXECOBJ = $(addprefix $(OBJDIR), $(EXECOBJA))
OBJS = $(addprefix $(OBJDIR), $(OBJ))
DEPS = $(wildcard src/*.h) Makefile include/darknet.h

#all: obj backup results $(SLIB) $(ALIB) $(EXEC)
all: obj  results $(SLIB) $(ALIB) $(EXEC)


$(EXEC): $(EXECOBJ) $(ALIB)
	$(CC) $(COMMON) $(CFLAGS) $^ -o $@ $(LDFLAGS) $(ALIB)

$(ALIB): $(OBJS)
	$(AR) $(ARFLAGS) $@ $^

$(SLIB): $(OBJS)
	$(CC) $(CFLAGS) -shared $^ -o $@ $(LDFLAGS)

$(OBJDIR)%.o: %.c $(DEPS)
	$(CC) $(COMMON) $(CFLAGS) -c $< -o $@

$(OBJDIR)%.o: %.cu $(DEPS)
	$(NVCC) $(ARCH) $(COMMON) --compiler-options "$(CFLAGS)" -c $< -o $@

obj:
	mkdir -p obj
backup:
	mkdir -p backup
results:
	mkdir -p results

.PHONY: clean

clean:
	rm -rf $(OBJS) $(SLIB) $(ALIB) $(EXEC) $(EXECOBJ)


옵션을 다 설정하셨다면, Makefile을 저장해주시고, Darknet 디렉토리 안에서 다음과 같은 명령어를 입력해줍니다.


#
make
#




2. Test


YOLO 홈페이지에서 다음과 같이 YOLOv2의 cfg파일과 weights파일을 다운로드 받습니다.

다운 받았다면, 다운받은 파일을 Darknet 디렉토리에 넣어주시고 다음과 같은 명령어를 실행시켜줍니다.


1. 단일 Image


#
./darknet detector test cfg/voc.data yolo-voc.cfg yolo-voc.weights data/dog.jpg
#





2. WebCam OR 동영상


만약 동영상 파일을 분석하고 싶다면, 아래와 같은 명령어를 실행시키면 되며, 웹캠 모드로 실행하고싶으시면 동영상 파일 위치 부분은

생략해주시면 됩니다.

#
./darknet detector demo cfg/voc.data yolo-voc.cfg yolo-voc.weights <동영상 파일 위치>
#





이번 포스팅에서는 YOLO Darknet v2의 설치 및 실행에 대해서 포스팅하였습니다.

다음 포스팅에서는 YOLO Darknet v2를 어떻게 학습시키는지에 대해서 포스팅하겠습니다.