제너럴공국

ImageAI 기본사용법 <1. Object Detection> 본문

컴퓨터공학/머신러닝 & 딥러닝

ImageAI 기본사용법 <1. Object Detection>

제너럴3세 2020. 11. 12. 15:11
반응형

오늘은 python기반으로, Object Detection을 지원하는 ImageAI에 대해서 알아보겠습니다. 기본적인 사용법부터 CustomObjectDetection까지 차근차근 알아보겠습니다.

본 텍스트의 전문은 OlafenwaMoses님의 GitHub에 근거하고 있습니다.

Thanks to github.com/OlafenwaMoses/ImageAI

 

OlafenwaMoses/ImageAI

A python library built to empower developers to build applications and systems with self-contained Computer Vision capabilities - OlafenwaMoses/ImageAI

github.com


1단계) Anaconda를 설치해주세요. 아래 링크를 따라해주세요.

아나콘다는 여러 버전의 파이썬 가상환경을 만들어주는 강력한 툴입니다. 추후에 여러 프로젝트를 진행하다보면 버전에 신경을 많이 써야 할 거예요. 가상환경에서 작업하는 습관을 들여두는 것이 중요합니다.

https://blog.naver.com/roboholic84/221626686511

 

파이썬 아나콘다 설치하기 - Jupyter (쥬피터) 실행하기

안녕하세요 메카솔루션입니다. ​#파이썬에 대한 관심이 많아지고 있습니다. 새로운 언어를 배우는 것은 미...

blog.naver.com


2단계) 가상환경을 만들어주세요.

(윈도우키 + R) 동시 누르고 (cmd) 입력 후 엔터를 입력하면 콘솔이 실행됩니다.

conda create -n <가상환경이름> <python 버전>

아나콘다가 제대로 설치되었다면 "conda create -n <가상환경이름> <python 버전>" 를 통해 새로운 가상환경을 만들 수 있습니다. 저는 roadkill이라는 이름의 가상환경을 만들었습니다. 앞으로 사용할 python 버전이 3.6.12 이므로 꼭 3.6.12 버전의 파이썬으로 가상환경을 만들어주세요. 버전이 다르면 에러가 날 수 있어요.
ex) conda create -n roadkill python==3.6.12

conda activate <가상환경이름>

이제 가상환경을 실행해보겠습니다. "conda activate <가상환경이름>" ex)conda activate roadkill

이제 이곳에 각종 라이브러리를 설치해보겠습니다. 아 참고로 가상환경에서 나가고 싶을 땐 "deactivate"를 입력해주면 됩니다.


3단계) 각종 라이브러리를 설치합니다. 밑의 버전들을 차근차근 한 줄씩 붙여넣기 해서 설치해주세요. 가상환경에 진입한 상태인지 확인하는 것도 잊지 말아주세요. 

pip install tensorflow==1.4.0
pip install opencv-python==3.4.2.16
pip install keras==2.1
pip install imageai --upgrade

pip install h5py==2.10.0

위의 내용을 설치할때, Y/N을 물을때가 나오면 Y를 입력해주면 됩니다. 원래 imageai를 설치하면 h5py가 같이 설치되는데, 저와 같은 경우엔 이때 설치한, h5py에서 버전에러가 나서, h5py 버전을 낮추었습니다.


4단계) yolov3 모델을 다운로드하고 실행할 준비를 합니다. 

먼저, OlafenwaMoses님의 GitHub으로 이동합니다. 글의 제일 상단 출처가 OlafenwaMoses님의 GitHub입니다. 이 홈페이지에서 Object Detection으로 들어가게 되면 아래 붉은 원을 클릭해, 이미 학습된  yolov3모델을 다운받을 수 있습니다. 찾기 어렵다면, 아래 링크를 클릭하셔도 됩니다. 이 모델은 이미 여러가지 객체에 대해 학습된 모델로, 다운로드 받아 바로 사용하실수 있습니다. 추후에 다른 데이터에 학습을 진행할때도, 이 이미 학습된 모델로 Transfer Learning을 이용해 적은양의 데이터로 원하는 활동을 작동시킬 수 있습니다.

github.com/OlafenwaMoses/ImageAI/blob/master/imageai/Detection/README.md

 

OlafenwaMoses/ImageAI

A python library built to empower developers to build applications and systems with self-contained Computer Vision capabilities - OlafenwaMoses/ImageAI

github.com


5단계) 코드를 작성합니다. 위의 ObjectDetection에서 코드 또한 제공합니다. 이 코드는 다음과 같습니다. 

from imageai.Detection import ObjectDetection
import os

execution_path = os.getcwd()

detector = ObjectDetection()
detector.setModelTypeAsYOLOv3()
detector.setModelPath( os.path.join(execution_path , "yolo.h5"))
detector.loadModel()

detections, objects_path = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "cheonlokcat2.jpg"), output_image_path=os.path.join(execution_path , "cheonlokcat1232.jpg"), minimum_percentage_probability=30,  extract_detected_objects=True)

for eachObject, eachObjectPath in zip(detections, objects_path):
    print(eachObject["name"] , " : " , eachObject["percentage_probability"], " : ", eachObject["box_points"] )
    print("Object's image saved in " + eachObjectPath)
    print("--------------------------------")

Line11의 "cheonlokcat2.jpg" 라는 곳이 처리할 input 이미지의 이름

Line11의 "cheonlokcat1232.jpg" 가 처리되어 저장될 output 이미지의 이름입니다.


6단계) 실행모습입니다.  먼저 한 폴더에 다운받은 이미지와 코드, 모델을 넣어줍니다.

이제, 우리는 윈도우 콘솔의 아주 기본적인 명령어인 dir과 cd 명령어를 활용해 현재 코드의 위치로 이동합니다.

dir 명령어: directory의 약자로서, 현재 디렉토리 내 파일을 보여줍니다.

cd 명렁어: change directory의 명령어로서 디렉토리에 진행하거나 나갑니다.(cd <폴더명>: 진입, cd ..은 탈출)

이 사진하고 아마 디렉토리 이름이 다를겁니다. 자신의 폴더 위치로 잘 이동해보세요.


7단계) 가상환경을 활성화시키고, 코드를 실행해줍니다.

이제 코드가 실행될겁니다.

python cat.py


결과) 짜잔, 이렇게 천록냥이99퍼센트 확률로 구분하는 것을 볼 수 있습니다.

천록아파트 치즈냥이

번외) 후문 떼껄룩

후문 떼껄룩


다음편 예고) 동영상 인식과, Custom Object 학습 및 Detection,  Pascal VOC 형식으로 데이터 준비하기

좌측) 동영상 인식 캡처, 우측) Pascal VOC로 데이터 라벨링 후, Custom Object Detection로 학습시킨 사진, 

 

반응형
Comments