머신러닝

구글 Colab에 의한 Mask R-CNN Semantic Segmentation 맛보기

coding art 2019. 12. 1. 17:14
728x90

 

머신 러닝의 영역이 CNN을 바탕으로 2012년의 AlexNet에서 시작하여 2017ResNet까지 발전함과 아울러 2014 년부터 이미지를 구성하는 오브젝트들까지 세밀하게 인식할 수 있는 Semantic Segmentation 머신 러닝이 함께 발전하였다. 2014년 초창기의 Segmentation Fully Convolutionalized Network FCN에서 출발하여 2020년으로 넘어가는 현재에는 수많은 코드들이 발표되었다. 하지만 Segmentation 분야에서 가장 기초적인 FCN 오픈소스 코드를 포함한 튜토리알이 전혀 없어 Semantic Segmentation을 다루어 보기가 쉽지 않다.

국내 사이트에서도 Segmentation을 많이 소개하고 있으나 알고리듬만 보여 주는데 파이선이나 C++ 코드를 해설해 주지 못하는 그런 정도의 내용은 머신 러닝을 연구하는데 아무짝에 쓸모가 없다는 결론이다.

 

지난번 블로그에 게재했던 FCN 소개 내용도 Pre-train 된 학습 결과를 사용함으로 인해 코드 구조 자체를 들여다 보기가 불가능했으며 이번에 소개하는 Mask_RCNN도 마찬가지로 Pre-train 된 학습 결과를 사용하는 경우이다. 이 두 경우 들 조차도 GPU 연산이 지원되어야 하므로 반드시 구글 Colabo를 사용하지 않을 수 없는 상황이다.

 

하지만 Segmentation 학습 과정에 부여된 클라스 범위 내에서 주어진 데이터로 학습을 시키려면 Pre-train 만으로는 불가능하며 세부적인 코드가 있어야 가능할 것이며 동시에 이 작업은 구글 Colabo 와 같이 Cloud 공간에서 처리하기는 어려워 보인다. GPU 가 설치되어 있는 자신의 서버가 있어야 할 것이다.

 

다음의 MASK_RCNN URL 주소를 열자. https://github.com/matterport/Mask_RCNN

Clone or download 버튼을 클릭한 후 URL 주소를 복사(Ctrl+C)하자.

 

 

 

 

URL 주소를 사용하여 구글 Colabo에 오픈해 두었던 RCNN.ipynb 셀에 Ctrl+V(붙여두기) 하자. !git clone + Ctrl+V 한 내용을 실행하면 다운로드가 이루어지며 왼쪽의 파일 탭을 누르고 들어가면 MASK_RCNN 디렉토리가 생성되어 있음을 확인할 수 있다.

 

MASK_RCNN을 펼치면 내부에 samples 디렉토리가 있으며 그 안에 demo.ipynb 노트북 파일이 있다. 이 파일을 선택하여 다운받으면 아래와 같이 다운로드에 들어 있음을 알 수 있다.

 


demo.ipynb 파일 경로를 알고 있는 상태에서 이 파일을 열어보기 위해서 구글 Colabo의 파일 탭을 선택 열어 보면 메뉴에 노트 열기 명령이 있음을 알 수 있다.

주의사항: 이 노트 열기 작업을 위해서는 이미 윈도우즈10 시스템에 아나콘다와 함께 Jupyter Notebook이 깔려 있어야 한다.

 

 

노트 열기를 클릭하면 나타나는 아래의 스크린에서 업로드 버튼 클릭하면 중앙에 파일선택 버튼이 있음을 알 수 있다. 클릭하여 다운로드에 저장되어 있는 demo.ipynb 파일을 선택 열도록 한다.

 

 

업로드 된 구글 Colabo 파일을 스크롤 해 보면 맨 마지막 이미지에서 기린들이 Detect(검출) 되어 있음을 알 수 있다.

 

업로드 된 코드를 셀별로 실행하기 전 맨 앞에 다음과 같이 saples 디렉토리 경로를 수정해 주도록 하자. 구글 Colabo 르 사용하다가 시간이 많이 경과되면 업로드한 데이터 디렉토리들이 사라지는 겨우가 많으므로 이때는 !git clone https://∙∙∙ 명령을 재 실행하도록 하자.

 

 

 

셀들을 순차적으로 실행하면 아래의 결과를 볼 수 있다. 실행 때 마다 입력 이미지 파일이 바뀌어 다른 이미지 처리 결과를 줄 수 있음에 유의하자.

    

 

본 내용은 유튜브에 게재되었던 아래의 동영상 내용을 참조하였다.

Mask_RCNN Image Segmentation Google Colab

  https://www.youtube.com/watch?v=5ZStcy7NWqs

 

보다 이후에 작성된 아래의 블로그를 참조해 보자. 

리메이크: PyTorch ResNet Semantic Segmentation 예제

https://blog.daum.net/ejleep1/1201

 

 

다음 블로그는 semantic segmentation 코드의 구조를 좀 더 리얼하기 보여주는 주제를 다루고 있으니 반드시 참고하기 바란다.

Keras 기초예제: U-net 아키텍처 동물이미지 semantic segmentation

https://blog.daum.net/ejleep1/1198