1201
[15주차 - Day5] Visual Recognition
Custom YOLO v3 제작 과제
# 강의에서 배운 Custom YOLO제작방법과
# 유튜브(https://www.youtube.com/watch?v=saDipJR14Lc)에 나오는 OpenCV를
# GPU와 같이 사용하는 방법을 같이 이용하여
# 로컬에서 GPU로 동작하는 Custom YOLO v3를 제작해보기
# 예를 들어 ‘총’을 들고 있는 사람을 인지하는 실시간 위험감시 프로그램 제작
# GPU로 OpenCV가 돌아가지 않으면 CPU로라도 제작
Custom YOLO 제작 전 YOLO v3 실습 수행
# darknet repository에서 clone하기
!git clone https://github.com/AlexeyAB/darknet
#GPU와 OPENCV의 사용이 가능하도록 makefile을 수정하기
%cd darknet
!sed -i 's/OPENCV=0/OPENCV=1/' Makefile
!sed -i 's/GPU=0/GPU=1/' Makefile
!sed -i 's/CUDNN=0/CUDNN=1/' Makefile
# CUDA버전 확인하기
!/usr/local/cuda/bin/nvcc --version
# make를 이용하여 darknet를 build
!make
# coco 데이터셋으로 사전학습된 weight값들을 다운로드함
!wget https://pjreddie.com/media/files/yolov3.weights
# helper함수들
def imShow(path):
import cv2
import matplotlib.pyplot as plt
%matplotlib inline
image = cv2.imread(path) #경로로부터이미지를 불러읽어들여서
height, width = image.shape[:2] #현재 영상의 height와 width를 읽어서
resized_image = cv2.resize(image,(3*width, 3*height), interpolation = cv2.INTER_CUBIC) #영상을 3배로 키운다(크게 보여주기 위해서)
fig = plt.gcf()
fig.set_size_inches(18, 10)
plt.axis("off")
plt.imshow(cv2.cvtColor(resized_image, cv2.COLOR_BGR2RGB)) #opencv로 읽어들인 영상은 BGR포맷을 갖기 때문에 RGB포맷으로 변환해야 함
plt.show()
# google colab으로 파일을 업로드할 때 사용하는 함수를 정의
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)
# google colab에서 파일을 다운로드할 때 사용하는 함수를 정의
def download(path):
from google.colab import files
files.download(path)
- YOLO 수행을 위한 환경 설정 및 파라미터 로드
!./darknet detect <path to config> <path to weights> <path to image>
- Object Detector는 위의 코멘드로 실행시킬 수 있다
imShow('predictions.jpg')
- 위 코멘드를 사용하면 Detector가 끝난 이미지/영상을 보여 준다
# darknet detection을 실행하기
!./darknet detect cfg/yolov3.cfg yolov3.weights data/person.jpg
# 결과영상을 보여주기
imShow('predictions.jpg')
- person.jpg 이미지로 YOLO를 수행한 결과 사진
# dog.jpg에 대해서도 실행시켜보기
!./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
imShow('predictions.jpg')
- dog.jpg 이미지로 YOLO를 수행한 결과 사진
# 이미지를 root directory로 업로드하기 (밑에서는 street.jpg을 사용하기 때문에 street.jpg라는 이름의 이미지를 업로드함)
%cd ..
upload()
- 이제 내가 가지고 있는 사진을 이용한 YOLO를 수행하기 위해 이미지 업로드 코드를 실행
- 아래 결과에 보이는 <파일 선택> 버튼을 눌러서 원하는 이미지를 불러 오면 됨
- 위의 street.jpg 파일을 업로드
# 다음의 명령으로 darknet에서 업로드한 영상에 대해 detection을 수행하고, 결과를 보여준다
%cd darknet
!./darknet detect cfg/yolov3.cfg yolov3.weights ../street.jpg
imShow('predictions.jpg')
- 결과 이미지 확인
'프로그래머스 데브 코스 > TIL' 카테고리의 다른 글
[6기] 프로그래머스 인공지능 데브코스 94일차 TIL (1) | 2023.12.03 |
---|---|
[6기] 프로그래머스 인공지능 데브코스 93일차 TIL (1) | 2023.12.02 |
[6기] 프로그래머스 인공지능 데브코스 91일차 TIL (1) | 2023.11.30 |
[6기] 프로그래머스 인공지능 데브코스 90일차 TIL (0) | 2023.11.29 |
[6기] 프로그래머스 인공지능 데브코스 89일차 TIL (0) | 2023.11.28 |