개인 프로젝트/이미지 인식

1. YOLO - 이미지 학습 : 개발 환경 만들기 (Python)

Jerry Jun 2020. 10. 30. 13:55
728x90

많은 난관이 예상되지만 혼자서 이미지 인식을 목표로 한번 달려보자.

 

첫 번째는 개발 환경을 만드는 것이다.

 

나는 Python을 주로 사용하기 때문에 일단 Anaconda 와 Jupyter notebook 에서 시작한다.

 

나중에 사진 학습을 위해 GPU 가 사용될 수 있어 Colab 으로 넘어갈 수 있지만 일단은 이렇게...

 

 

#1. 환경 설정

나는 Window 10 환경을 사용하였다.

(1) anaconda 에서 가상환경 만들기. (Python 3.6 ver)

(2) 여기 에서 open CV 파일 다운 받기. (저는 opencv_python-4.4.0-cp36-cp36m-win_amd64.whl 다운했습니다.)

(3) 요기 에서 numpy 파일 다운 받기. (저는 numpy-1.18.5+mkl-cp36-cp36m-win_amd64.whl 다운했습니다.)

(4) anaconda prompt 창에서 두 명령 실행

pip install opencv_python-4.4.0-cp36-cp36m-win_amd64.whl
pip install numpy-1.18.5+mkl-cp36-cp36m-win_amd64.whl

anaconda 에서 지정된 폴더에 두 개의 파일이 있어야 합니다.

저는 numpy 설치할 때 빨간색 문장으로 오류가 뜨긴 하던데 일단 무시했습니다... 

ERROR: After October 2020 you may experience errors 어쩌구.....

 

 

(5) 환경변수 추가

시스템 속성 - 고급 - 환경변수 - Path 편집 - 새로만들기

C:\ProgramData\Anaconda3\
C:\ProgramData\Anaconda3\Scripts
C:\ProgramData\Anaconda3\Library\bin

한 줄 씩 추가하면 됩니다. 자신의 컴퓨터 안에 있는 아나콘다 경로에 맞게 추가하셔야 합니다.

저의 경우에는 C드라이브에 있었기 때문에 저렇게 추가하였습니다.

 

 

(5-1) Visual Studio 2015 설치

20.11.02 수정... CUDA 보다 Visual Studio 를 늦게 설치하면 귀찮은 점이 발생한다... CUDA 보다 먼저 설치하세요.

 

(6) CUDA 설치 (CUDA 9.0)

이곳 에서 설치하실 수 있습니다. 최신 버전이 있지만 저는 오류가 나서 9.0으로 돌아왔네요...

사진은 11.1 이지만 9.0 으로 했습니다.

cuda_download

다운이 완료되면 관리자 권한으로 실행하여 설치합니다.

 

 

(7) cuDNN 설치

이곳 에서 다운받으시면 됩니다. cuDNN Library for Window 10

Download cuDNN v7.6.5 (November 5th, 2019), for CUDA 9.0

이 경우에는 로그인이 필요하고 로그인 후 간단한 설문 후 다운 받으실 수 있습니다.

저는 구글 로그인 했습니다. (TMI)

cuDNN 을 다운받기 전에 CUDA 와 버전이 연동되는 파일인지 확인 후 다운받으셔야 합니다.

파일명을 보면 금방 아실 수 있을 것입니다.

 

cuDNN 파일에 대해 압축을 풀면 세 가지 폴더가 있을 것입니다. [bin, include, lib]

그 3개의 폴더를 CUDA 를 설치한 폴더 안으로 덮어씌우기를 합니다.

V11_1 이 아니라 V9_0 가 됩니다. (사진)

 

cudnn
setting

이후 다시 환경 변수를 설정하는 곳으로 가서 시스템 변수 - 새로 만들기 를 합니다.

이름은 cudnn 주소는 CUDA_PATH 와 같은 위치로 복사 붙여넣기 하시면 됩니다.

 

 

(8) tensorflow 등등 설치

pip install tensorflow-gpu==1.5
pip install scipy cython matplotlib

 

 

(9) YOLO darkflow 다운로드 및 설치

관련 깃허브 에 들어가셔서 다운받으시면 됩니다. (git clone 하는 방법도 있지만...)

다운받고 압축을 풀면 darkflow-master 폴더가 나오고 그 안에 있는 단 하나의 폴더를 darkflow로 이름을 고치고

C:\ProgramData\Anaconda3\envs\가상환경명 내에 옮겼습니다.

 

그리고 아나콘다 프롬프트 창에서 darkflow 폴더로 이동한 뒤 실행합니다.

python3 setup.py build_ext --inplace
pip install -e .
pip install .

 


#2 YOLO

 

coco_dataset

미리 설정되어 있는 가중치를 다운 받습니다.

그리고 darkflow 폴더 안에 있는 cfg 폴더에 다운받은 cfg 를 넣고 bin 폴더에는 weights 를 넣는다.

 

import tensorflow as tf
import numpy as np
import cv2
from darkflow.net.build import TFNet
import matplotlib.pyplot as plt

%config InlineBackend.figure_format = 'svg'

options = {
    'model' : "./cfg/yolo.cfg",
    'load' : './bin/yolo.weights',
    'threshold' : 0.3,
}

tfnet = TFNet(options)

img = cv2.imread('dog.jpg', cv2.IMREAD_COLOR)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
result = tfnet.return_predict(img)
t1 = (result[0]['topleft']['x'], result[0]['topleft']['y'])
br = (result[0]['bottomright']['x'], result[0]['bottomright']['y'])
label = result[0]['label']

img = cv2.rectangle(img, t1, br, (0, 255, 0), 7)
img = cv2.putText(img, label, t1, cv2.FONT_HERSHEY_COMPLEX, 1, (0,0,0), 2)
plt.imshow(img)
plt.show()

그리고 주피터 노트북을 실행하면 

 

result

출력된 이미지가 나타난다. 미리 학습된 항목들은 coco.names 파일에서 확인할 수 있다.

개 사진은 아무거나 다운받으면 될 것 같다.

300x250