Object Detection

Custom YOLO project - 코랩에 darknet 불러오기

jwjwvison 2021. 8. 21. 19:10

 이번 포스팅에서는 custom yolo project를 하기 위한 세팅에 대해 알아보겠다. yolo는 darknet기반으로 실행되기 때문에 자신의 개별환경에 맞게 세팅을 해 놓아야 한다.

 

 먼저 cuda 버전을 확인해보자.

!/usr/local/cuda/bin/nvcc --version

 내가 쓰는 코랩의 cuda 버전은 11.0임을 알 수 있다. 

 여기서 NVIDA 사이트에 들어가서 https://developer.nvidia.com/rdp/cudnn-download

자신의 버전의 맞는 드라이버를 설치해주면 된다.

 

 여기서는 /content/drive/MyDrive/darknet/cudnn 위치에 이 파일을 저장했다. 이제 이 파일의 압축을 풀어줘야 한다.

!tar -xzvf drive/My\ Drive/darknet/cuDNN/cudnn-11.0-linux-x64-v8.0.4.30.solitairetheme8 -C /usr/local/

설치 완료

 이제 darknet github를 클론해준다.

!git clone https://github.com/AlexeyAB/darknet.git
%ls

 make 하기 전에 makefile의 일부분을 수정해준다. 다음 코드를 작성해도되고 makefile에 들어가서 다음 부분들을 고쳐주면 된다.

%cd /content/darknet/
!sed -i 's/OPENCV=0/OPENCV=1' Makefile             #opencv=0 -> opencv=1 로 바꿔준다
!sed -i 's/GPU=0/GPU=1' Makefile                   #gpu=0 -> gpu=1 로 바꿔준다
!sed -i 's/CUDNN=0/CUDNN=1' Makefile               #cudnn=0 -> cudnn=1 로 바꿔준다
!sed -i 's/CUDNN_HALF=0/CUDNN_HALF=1' Makefile     #cudnn_half -> cudnn_half=1 로 바꾸준다
!make

 

 이를 통해 darknet 파일이 저장된다. 코랩에서는 이 파일들이 삭제되므로 구글 드라이브에 저장해준다.

%cp ./darknet /content/drive/MyDrive/darknet/bin/darknet

 

#download files
def imShow(path):
  import cv2
  import matplotlib.pyplot as plt
  %matplotlib inline

  image = cv2.imread(path)
  height, width = image.shape[:2]
  resized_image = cv2.resize(image,(3*width, 3*height), interpolation = cv2.INTER_CUBIC)

  fig = plt.gcf()
  fig.set_size_inches(18, 10)
  plt.axis("off")
  #plt.rcParams['figure.figsize'] = [10, 5]
  plt.imshow(cv2.cvtColor(resized_image, cv2.COLOR_BGR2RGB))
  plt.show()
  
  
def upload():
  from google.colab import files
  uploaded = files.upload() 
  for name, data in uploaded.items():
    with open(name, 'wb') as f:
      f.write(data)
      print ('saved file', name)
def download(path):
  from google.colab import files
  files.download(path)

이 코드는 주피터노트북에서 사진을 보여주기 위한 함수이다.

!cp -r '/content/drive/MyDrive/darknet/weights' ./weights

 구글드라이브에 저장되어있는 weights 파일을 불러온다.

 

 마지막으로 yolo를 실행한다.

!./darknet detect cfg/yolov3.cfg weights/yolov3.weights data/person.jpg
imShow('predictions.jpg')