본문 바로가기
컴퓨터공학/YOLO

[YOLO - darkflow] YOLO와 Python을 이용한 object detection (2) - image detection

by Upupa epops 2019. 4. 19.

※ 본 포스팅은 darkflow 유투브(https://www.youtube.com/watch?v=fSM6cdFQdwI)를 기반으로 작성되었습니다.

※ Windows 10 x64 환경을 사용하고 있습니다.

 

 

 

0. 환경설정 및 darkflow 설치 :  

2019/04/19 - [Laboratory/인공지능] - YOLO / Python을 이용한 object detection (1) - 설치 및 테스트 (darkflow)

 

1. Jupyter notebook 환경에서 YOLO 실행을 위한 모듈 설치

 

  1-1. 가상환경 및 기본 모듈 설치

  - 기본 설치는 링크의 1-1, 1-2을 참고하여 설치한다. [링크 클릭]

  

   1-2. 추가 모듈 설치

  - jupyter notebook과 matplot을 설치한다.

pip install jupyter matplotlib

 

 

 

2. Jupyter notebook로 이미지에 라벨링 하기

 

  2-1. jupyter notebook 실행

  - cmd 창에서 jupyter notebook을 입력하면 실행된다.

  - 실행 위치 경로가 최상위 경로이므로 darkflow 폴더 내에서 실행하였다.

  

주피터 노트북 실행하는 법

 

  2-2. 코드 작성할 파일 생성

   - 최상위 경로(root)에서 [New]-[Python 3] 를 클릭하여 새 파일을 생성한다.

   - jupyter notebook 파일 확장자는 *.ipynb 로 되어있다.

 

새파일 이름을 image_yolo_test 로 변경하여 사용하였음

 

  2-3. 코드 작성 및 실행

   - 작성 코드는 해당 유투브와 동일하며, GPU를 CPU로 변경하여 진행하였다.

   - 테스트용 이미지는 미리 받아 폴더에 저장해둔다.

   - cuDNN, CUDA 버전문제로 오류가 나는 것 같아 CPU로 진행하였다.

   - 이전 포스팅에서 다운받은 가중치 파일(yolov2.weight)의 이름을 yolo로 통일시켜 실행하였다.

 

이전 포스팅에서 다운받은 yolov2.weights를 yolo로 통일시켜 실행

 

객체 예측 및 바운딩 박스, labeling, 이미지 출력

 

 

2-4. 다중 객체 인식을 위한 소스코드 변경

   - 유투브의 코드는 하나의 객체만을 인식하여 여러 개의 객체 인식을 하기 위해 소스코드를 변경해보았다.

   - 동영상 객체 검출 소스코드를 참고하여 수정했다.

 

numpy를 사용하므로 numpy모듈 임포트

 

   - 각 개체 별로 바운딩 박스의 컬러를 다르게 하기 위해 In [4]에 코드를 추가했다.

   - for문으로 각 객체에 바운딩 박스와 labeling 작업을 한다.

 

다중 객체 레이블링을 위한 수정 코드와 객체 검출 출력 이미지

 

 

 

 * 소스코드를 첨부합니다. 틀린 점에 대한 조언은 언제나 환영합니다.

 

 

 

image_yolo_test.ipynb
0.14MB
image_yolo_test_Multiple_img.ipynb
0.22MB

 

SMALL