[Mask R-CNN] Python을 이용한 Mask RCNN (1)
Python, Keras, Tensorflow, jupyter notebook을 이용하여 유투브에 공개되어 있는 Mask R-CNN 샘플을 구동시켜보았다.
중간에 여러가지 오류가 나는 부분이 있었지만 아래와 같이 해결하였다.
- Mask RCNN with Keras and Tensorflow
(https://www.youtube.com/watch?v=2TikTv6PWDw)
■ Mask R-CNN
- Fast R-CNN + mask
- Image Detection과 Labeling, masking을 통하여 각 객체를 구분할 수 있도록 해준다.
■ 구동 방법
- 먼저 가상환경 Anaconda, 그래픽 라이브러리 툴킷 CUDA와 CUDNN 설치가 필요하다.
1-1. 아나콘다(Anaconda) 설치
- Mask R-CNN을 설치하여 실행시킬 가상환경을 만들어줄 아나콘다를 설치(다운로드)한다.
- Tensorflow를 사용하려면 파이썬(python) 3.6버전을 사용해야하며,
아나콘다도 파이썬 버전에 맞춰서 설치해야한다.
- 파이썬 3.6 버전용이 없으므로 파이썬 3.7 용 아나콘다 설치파일을 다운받는다.
- 아나콘다 설치 후 cmd에서 기능을 바로 사용할 수 있도록 환경변수를 설정한다.
(내 PC 우클릭→속성→설정변경→고급탭→환경변수→user에 대한 사용자 변수→path 편집)
· 설치경로₩Anaconda3 · 설치경로₩Anaconda3₩Scripts · 설치경로₩Anaconda3₩Library₩bin |
1-2. CUDA & CUDNN 설치
- Nvidia CUDA 9.0과 cuDNN 7.0을 설치한다.
(cuDNN 7.0버전과 다르면 그래픽 출력 중에 오류가 날 수 있다.)
* CUDA(Computed Unified Device Architecture) :
· GPU 가속화 라이브러리, 디버깅 툴, 컴파일러, 애플리케이션 개발 언어
· Download : https://developer.nvidia.com/cuda-toolkit
* cuDNN(Deep Neural Network library) :
· 딥 뉴럴 네트워크를 위한 GPU 가속화 라이브러리
· Download : https://developer.nvidia.com/cudnn
- cuDNN변수를 시스템 환경변수에서 새로 생성한다.
· Variable name: cudnn · Variable value: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0 |
2. Dependency file 확인
- GitHub(클릭)에서 제공하고 있는 파일의 내용을 다 설치해야한다.
· numpy # 수치 계산을 위한 기본 패키지 · scipy # 신호처리, 최적화, 통계 기능 패키지 라이브러리 · cython # 파이썬 컴파일러 · Matplotlib # 그리기 패키지 · h5py # 큰 수치형 데이터(모델) 로드용 · Pillow # 이미지처리에 이용 · scikit-image # 이미지처리에 이용 · opencv-python #이미지처리 오픈소스 · imagug # 이미지처리에 이용 · tensorflow-gpu==1.5 # GPU기반 머신러닝/딥러닝 오픈소스 라이브러리 · keras # 머신러닝/딥러닝 오픈소스 라이브러리 · jupyter # jupyter notebook, 파이썬 코드 실행 프로그램 · ipython # 파이썬 코드 실행 프로그램 · pandas |
2-1. 아나콘다 가상환경 설치
- 명령프롬프트 창에서 pip 명령어를 사용가능한 MaskRCNN라는 가상환경을 만든다.
- 일반적으로는 C:\Users\user(사용자)\AppData\Local\conda\conda\envs에 생성 됨
- 가상환경 생성 후, cd 명령어를 이용하여 생성된 MaskRCNN 폴더로 이동한다.
· cmd(명령 프롬프트) 창 → conda create -n MaskRCNN python=3.6 pip · Proceed ([y]/n)? y 선택 · activate MaskRCNN · cd C:\Users\user\AppData\Local\conda\conda\envs\MaskRCNN |
2-2. Dependency file 설치
- (MaskRCNN) 상태에서 pip를 이용하여 requirements.txt 내 라이브러리를 모두 설치한다.
- 먼저 tensorflow와 keras 설치 후 나머지 파일을 설치한다.
· pip install tensorflow-gpu==1.5 · pip install keras · pip install numpy scipy cython Matplotlib h5py Pillow scikit-image jupyter pandas · pip install opencv-python ipython |
2-3. Clone the Mask R-CNN
- GitHub 내 파일을 로드하기 위하여 pip git의 설치가 필요하다. 설치 후,
git clone 명령어를 사용할 수 있다.
Conda install –c anaconda git |
- Mask_RCNN.git을 다운로드
git clone https://github.com/matterport/Mask_RCNN.git |
- Pycocotools 다운로드
· Visual C++ 2017 Build Tools 없으면 설치 필요 (클릭)
· CoCoTools 설치가 완료되면 “Successfully installed pycocotools-2.0”을 출력한다.
* CoCoTools : CoCoMac 데이터 수집 및 분석을 위한 툴박스
git clone https://github.com/philferriere/cocoapi.git pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=pythonAPI |
- imgaug 다운로드
* imgaug : 이미지처리를 위한 라이브러리 ·
git clone https://github.com/aleju/imgaug.git pip install imgaug |
2-4. 모델 가중치 파일 다운로드
- Download mask_rcnn_coco.h5 file를 다운로드하여 MaskRCNN 메인폴더에 넣어준다.
(자동으로 다운로드 된다.)
- https://github.com/matterport/Mask_RCNN/releases
2-5. Demo Test 1
- Jupyter notebook 실행
· (maskRCNN) cmd 프롬프트에서 jupyter notebook 입력
· jupyter notebook 내 maskRCNN폴더에서 demo.ipynb 파일 찾아 열기
jupyter notebook |
2-6. Demo Test 2
- 아래와 같이 소스를 수정하면 이미지를 정하여 masking이 가능하다.
# Load a random image from the images folder file_names = next(os.walk(IMAGE_DIR))[2] image = skimage.io.imread(os.path.join(IMAGE_DIR, random.choice(file_names))) |
↓
# Load a random image from the images folder filename = os.path.join(IMAGE_DIR, 'doge.jpg') image= skimage.io.imread(filename) |
■ 출처
- Mask RCNN with Keras and Tensorflow
(https://www.youtube.com/watch?v=2TikTv6PWDw)
- CUDA&cuDNN : https://blogs.nvidia.co.kr/2018/01/16/cuda-toolkit/
- Visual C++ 2017 Build Tools (클릭)
아 근데 파이참 깔아서 유투브 2번째꺼 하다가 설정 다 꼬여버렸다ㅜㅜ