본문 바로가기
컴퓨터공학/CNN & Mask RCNN

[Mask R-CNN] Python을 이용한 Mask RCNN (3) - A class object custom (제공되는 Balloon sample 이용)

by Upupa epops 2019. 7. 8.

matterport GitHub의 Mask RCNN에서는 제공되는 balloon 폴더와 dataset을 이용하여 검출하고자하는 객체를 커스텀할 수 있다.

 

본 포스팅은 저번 포스팅에서 작성한 Mask R-CNN 포스트에 이어서 사용하므로 기본적인 설치 방법은 아래 링크에서 확인할 수 있다.

 

2019/01/05 - [Laboratory/인공지능] - Python/Tensorflow/Keras를 이용한 Mask RCNN (1)

 

 

◇◇◇

 

1. 제공되는 balloon 샘플을 이용한 방법 

 

1-1. balloon sample dataset을 이용한 Mask R-CNN Custom

 - matterport에서 balloon sample dataset을 제공하고 있으므로 사이트에 들어가 다운을 받는다.

 - balloon_dataset.zip : train, val에 대한 데이터셋 제공 (image, *.json)

 - mask_rcnn_balloon.h5 : 제공되는 balloon dataset을 이용하여 미리 학습시켜둔 가중치 COCO 모델 파일(*.h5)

 

 balloon dataset : https://github.com/matterport/Mask_RCNN/releases   

 

balloon sample image dataset & train weights h5 file

 

 ※ 가중치 모델을 받아서 바로 실행시켜볼 수도 있으나 여기에서는 mask_rcnn_ballon.h5 파일도 직접 생성하고자 한다.

    학습과정없이 mask_rcnn_ballon.h5 파일을 받아서 아래와 같이 실행시켜 볼 수도 있다.

 

사용되는 가중치 파일 (line 31 in inspect_balloon_model.ipynb)

 

1-2. dataset (train, validate) image & json 파일 준비 

 - 준비과정으로 GitHub에서 제공중인 balloon dataset을 받거나, annotation tool을 이용하여 만든 json파일과

   매칭되는 해당 이미지 파일들을 dataset 폴더 내의 train 폴더와 val 폴더에 나누어 넣는다.

  - balloon dataset을 받은 경우에는 폴더 내에 압축을 풀면 된다.

 

 ※ Annoatation 시에 수집한 이미지는 훈련용 데이터셋(train)과 검증용 데이터셋(val)을 나누어 각각 작업해야한다.

   · 준비한 json 파일은 이미지 누락, 라벨링 누락, 객체 좌표 사이즈 오버 등의 문제가 발생하지 않도록 주의한다.

   · json 파일의 명칭은 via_region_data.json을 사용하므로 train, val 모두 통일한다.  

   

dataset 폴더

 

1-3. 준비한 dataset을 이용하여 신경망 모델 학습 

 - 본 포스팅은 COCO 가중치 모델을 이용하고 있으며 balloon.py 파일을 보면 다른 가중치 모델에 대한 학습 명령어도 제공하는 것을 알 수 있다.

 

balloon.py에서 명시하는 가중치 모델

 

   - cmd나 terminal 창에서 제공되는 balloon.py 파일을 이용하여 훈련을 진행한다.

    · (가상환경폴더명) 해당 위치 > python 파일명 train --dataset=데이터셋 주소 --weights=가중치모델 

 python balloon.py train --dataset=/path/to/balloon/dataset --weights=coco  

 

명령어 입력 후 동작화면

 

 

  - 아래 이미지와 같이  Traning network heads / Starting at epoch ... (Conv2D).. 문구가 나오면 Training 시작. 

  - 지정된 epoch에 따라 훈련 시간이 달라진다.

  - Checkpoint Path는 훈련된 가중치 모델의 저장 경로이다. 

  - 100회씩 30번 반복하며 100회마다 가중치 모델이 갱신되며 경로에 저장된다.

 

훈련 진행 중 1
훈련 진행 중 2

 

  - 횟수에 따라 뒤에 숫자가 변경된다. 최종파일은 mask_rcnn_balloon_0030.h5가 된다.

  - balloon.py의 h5파일 명칭을 바꾸면 해당 명칭으로 바꿔서 저장할 수 있다.

 

100회씩 1번 갱신된 가중치 파일과 해당 경로

 

 

1-4. 학습이 완료된 가중치 모델을 이용한 결과 확인 

 - balloon 폴더 내의 inspect_balloon_data.ipynb 와 inspect_balloon_model.ipynb에서 가중치모델을

   이용한 결과를 확인할 수 있다.

 - inspect_balloon_data.ipynb : 훈련 데이터셋을 이용한 훈련 과정을 보여줌

 - inspect_balloon_model.ipynb : 훈련된 가중치 모델(h5)과 검증데이터셋을 이용한 결과를 보여줌

 

 

샘플 결과 이미지

 

SMALL