이번 포스팅에서는 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')
'Object Detection' 카테고리의 다른 글
object detection project - keras를 사용한 detection(1) (0) | 2021.08.24 |
---|---|
Custom YOLO project - custom data 학습 (0) | 2021.08.21 |
Custom YOLO project - 대용량 xml파일 라벨링 해주기 (0) | 2021.08.21 |
Custom YOLO project - YOLO 이미지 데이터 만들기 (0) | 2021.08.21 |
yolov3를 이용한 객체 탐지 (0) | 2021.08.17 |