DEEP.I - Lab

오프라인 공간의 지능화를 꿈꾸는 딥아이 연구실입니다.

Python/Tensorflow

[Mask R-CNN] Python과 Keras를 이용한 실시간 객체 탐지 알고리즘 구현

Jongwon Kim 2020. 6. 23. 15:58
반응형

Window 10 환경에서 아나콘다 가상 환경을 활용하여 MASK R-CNN을 구동해보았습니다. 기존 공개된 소스를 기반으로 하되, 프로젝트에 맞게  실시간 구동이 가능하게 일부 수정 하였습니다. CPU와 GPU 환경에서 모두 가능하지만 CPU는 프레임당 5~15초 이상걸리네요.


https://github.com/matterport/Mask_RCNN


MASK R-CNN의 경우 페이스북 AI 연구팀에서 개발하다보니 파이토치를 기반으로 오픈소스가 공개되어 파이토치에 익숙하지 않고 플랫폼 변경이 부담스러웠는데 반가운 소식.. 개발자분들의 노고에 감사드립니다...



  •  Mask R-CNN


MASK R-CNN은 기존 Faster R-CNN에 segmentation을 위한 CNN 구조를 추가하여 객체의 위치, 클래스뿐만 아니라 픽셀단위로 객체를Localization 하는 알고리즘이다. 내부적으로 새로운 접근법이 다양하게 적용되었는데 추후 논문 리뷰를 통해 상세하게 알아보겠습니다.


  •  Anaconda 가상 환경 구동
원활한 구동을 위해 순정 상태의 가상 환경 구축이 필요합니다. python은 3.5버전을 기준으로 하였습니다.


1. 가상환경 생성

conda create -n py35mask python=3.5

설치 옵션이 뜨면 y를 눌러 설치를 진행해줍니다. 아래와 같이 done이 뜨면 설치 성공



2. 가상환경 활성화


activate py35mask



3-1. CUDA 설치


CUDA 8.0 version

다운로드 : https://developer.nvidia.com/cuda-80-ga2-download-archive


cuDNN 5.1 version

다운로드 : https://developer.nvidia.com/cudnn


아마 딥러닝 관련 소스 구현에서 가장 많은 오류를 범하는 놈이 CUDA 설치일것입니다... 그래서 저는 우선 CPU 모듈로 동작을 확인하시는것을 추천드립니다. 이후 텐서플로우 버전을 변경하여 GPU 모드로 구동하시면 호환성 문제는 크게 발생하지 않을겁니다. cuDNN은 로그인 이후 다운로드가 가능합니다. 설치에는 10분 이상의 시간이 소요됩니다.



3-2. Tensorflow 1.3 & Keras 2.0.8 버전 설치


pip install tensorflow==1.3

% CPU MODE 개발

pip install tensorflow-gpu==1.3

% GPU MODE 개발

pip install keras==2.0.8


핵심이 되는 tensorflow와 keras를 설치해줍니다. 제작자가 권장하는 버전 그대로 설치를 진행하였습니다. 순정 상태의 가상환경이기 때문에 다양한 라이브러리 설치가 동반되는데 모두 설치를 진행해줍니다. 


% 텐서플로우와 CUDA 정상 설치 확인

python

import tensorflow as tf

tf.__version__


설치가 정상적으로 완료되면 다음과 같이 버전 정보가 뜨게됩니다. 



4. opencv 설치


conda install opencv


쉽게 영상을 불러오고 재생하기 위해 opencv를 설치해줍니다. 마찬가지로 순정 상태의 가상환경이기 때문에 다양한 라이브러리 설치가 동반되는데 모두 설치를 진행해줍니다. 마찬가지로 done이 뜨면 설치 성공



5. 필수 설치파일 설치


pip install scikit-image

pip install imgaug

pip install cython



6. pycocotools 설치 (Visual C++ 2015 build tools 설치)


mask r-cnn 구동을 위해 pycocotools를 설치해야한다. 윈도우 환경에서는 pip 설치이슈가 있어 다른 접근법으로 설치가 진행되어야 합니다.


출처: https://github.com/philferriere/cocoapi


직관적인 설치법이 있어 저는 출처의 개발자 소스를 통해 해결하였습니다. 우선 Visual C++ 2015 build tools를 링크를 통해 설치해줍니다. 이후, git clone으로 파일을 받은 뒤, 해당 경로로 이동하여 설치를 진행합니다.


git clone pip install imgaug  https://github.com/philferriere/cocoapi.git

cd cocoapi-master/PythonAPI

python setup.py install



7. MASK R-CNN 설치 


git clone https://github.com/matterport/Mask_RCNN.git



설치를 원하는 경로에서 받아주시면 됩니다. 저는 Pycharm으로 작업을 하다보니 프로젝트 폴더 내에 설치하였습니다. 구현을 위한 영상은 링크 또는 아래 git clone 명령어를 통해 main.py을 다운받으신 후, 프로젝트 폴더에 첨부해주시면 됩니다. 


git clone https://github.com/DEEPI-LAB/Mask-R-CNN-DEMO.git


main.py를 열어 80~85라인의 코드를 사용 목적에 맞게 맞춰주시면 됩니다.


% main.py

% 영상 

camera = cv2.VideoCapture(0)

% 웹캠 사용 : 0 또는 1

% 비디오 파일 사용 : 해당 경로 파일 ex 'sample.mp4' 


% 사진

image_dir = glob.glob('이미지 파일이 있는 폴더 경로 ')


구동 결과 (GPU/1080TI) 1~2 FPS 수준으로, 준실시간 탐지 가능성을 확인할 수 있었습니다. 추후 추출된 마스크 정보와 인간의 관절 정보 등을 융합하여 행동 인식 (Action Recognition) 알고리즘을 한번 적용해볼까 합니다.







# 머신러닝 프로젝트 제작, 상담 및 컨설팅  / 머신러닝 접목 졸업작품 컨설팅

# 데이터 가공, 수집, 라벨링 작업 / C, 파이썬 프로그램 제작

# email : deepi.contact.us@gmail.com

# site : www.deep-i.net

반응형