MaskRCNN Custom Training 드디어 종결!! 아.. 고생많았다.(Colab 사용)
본문 바로가기
Coding Project

MaskRCNN Custom Training 드디어 종결!! 아.. 고생많았다.(Colab 사용)

by Migos 2020. 3. 28.
반응형

그놈의 MaskRCNN이 뭔지 우분투에서 돌리면 될 것을 윈도우에서 꾸역꾸역 돌려보겠다고 오기로 보낸 3일.

수많은 에러와 코드를 만지작거리며 스트레스받던 중 드디어 오늘 Epoch에 E가 보이기 시작했다.

 

막상 처음 시작하는사람을 위한 튜토리얼이 제대로 되어있지 않은것도 그렇고, 다른 포스팅 참고해도 마치 내 컴터가 저주받은것처럼 나만 오류가 나는.. 기이한 현상을 겪다가 마음을 비우고 다시 해보니 잘 되더라.

 

이 글을 보는 사람은 이제 내가 원하는 물건을 디텍션 하고, 마스크까지 탐지하는 모델을 훈련시킬 수 있다.

우리의 소중한 컴터사양이 모두 다르기 때문에 코랩에서 돌리는 것을 기본으로 하겠다.

 

코랩 쓰는 방법은 알아서 배워오시고. 대충 설명하자면, 구글드라이브 계정만들고 폴더 만들고, 우측클릭하고, colaboratory 파일하나 만들어서(.ipynb) 열고, 아래 순서대로 따라하면 된다. 까먹기전에 빨리 써야지.

 

1. 구글드라이브에서 폴더하나 만들고(우클릭-새폴더-mask_totorial 폴더를 생성했다.


2. 코랩(Colab) 파일 만들고 열기.


3. GPU 사용할것이기 때문에 런타임을 변경해서 GPU로 설정.


4. 마운트 하기=구글드라이브와 연동해서 파일을 사용하게 끔 연결하는 작업.

맨 왼쪽 폴더버튼 클릭-드라이브마운트 클릭-우측 v표시 나오면 정상 연결된것.

마운트가 정상적으로 되면 왼쪽에 drive 폴더가 생기고 내 구글드라이브에 올라가있는 폴더/파일들이 모두 보인다.

 


5. 아까 생성한 mask_tutorial 폴더로 이동하고, maskrcnn 코드를 내려받는다.

# 현재 작업경로로 이동.
%cd /content/drive/My Drive/Study/mask_tutorial

# bottle.py github clone
!git clone https://github.com/AISangam/Mask-RCNN-bottle-training.git


6. MaskRCNN 원작코드에서 setup.py 파일을 install 해줘야 하기 때문에 원작 깃헙코드 clone.

수정해야할 부분은 3번째 라인에 %cd /자기경로/Mask_RCNN/

(구글드라이브에서 경로복사하는 방법은 왼쪽 폴더리스트에서 우클릭-경로복사 하면됨.)

# clone the original maskrcnn github for setup.py install
!git clone https://github.com/matterport/Mask_RCNN.git
%cd /content/drive/My Drive/Study/mask_tutorial/Mask_RCNN
!python setup.py install
%cd ..

중간점검 : 폴더는 아래와 같이 되어있는지 확인.


 

7. 데이터셋 만들러 갑시다. 클릭

 

 

 


via-1.0.6 버젼으로 라벨링 해야된다. 이걸로 삽질을 좀 했는데, 최신버젼은 라벨양식이 변경되서 훈련이 안됌.


상단 Image - Load or Add Images 클릭


이미지 모두 드래그해서 열기.


▶폴리곤 모양을 누르고(빨간네모) - 사진에서 테두리를 클릭 클릭하면서 따준다-하단 Region Attribute클릭.


▶ bottle(상단) , bottle(하단) 각각 입력해준다.


▶ 이 짓을 모두 하고, 다했으면 라벨을 저장하자. 상단 Annotation - Save as JSON


▶ via_region_data.json 파일을 train 폴더(이미지있는곳)에 함께 저장해주고, validation 용 이미지들도 동일하게 라벨링 하고 via_region_data.json 파일을 val폴더에 넣어준뒤 구글드라이브로 업로드시킨다.


구글드라이브로 가서 dataset 폴더에 train에 train용 사진과 라벨(via_region_data.json)을,

validation용 사진과 라벨(via_region_data.json)을 각각 업로드한다.

 

 


 

8. 다시 코드로 돌아와서 tensorflow-gpu = 1.15.0, keras=2.2.5 버젼으로 다운그레이드 해준다.(가장 중요!)

# install tf,keras version
!pip install tensorflow-gpu==1.15.0
!pip install keras==2.2.5

 


9. bottle.py 있는 폴더로 경로이동(노란색), dataset 폴더 경로 복사해서 빨간부분 붙여넣기

# TODO : bottle.py 있는 경로로 수정.
%cd /content/drive/My Drive/Study/mask_tutorial/Mask-RCNN-bottle-training 

# TODO : dataset 폴더 경로로 수정.
!python bottle.py train --dataset='/content/drive/My Drive/Study/mask_tutorial/Mask-RCNN-bottle-training/dataset' --weights=coco  


아름다운 Epoch..

 

학습중에 가만두면 런타임 에러가 나기 때문에, 이전에 포스팅 했던 매크로 사용해서 런타임 방지하자.

 

https://hansonminlearning.tistory.com/18?category=862697

 

Tips) 최신업데이트! 구글코랩(google colab) 학습 시 연결 안 끊어지게 하는 방법.

코랩 무료버젼의 경우 12시간동안은 GPU 사용이 가능하다. 그런데 실제로 학습 시켜놓고 놀고 오면 얼마 지나지 않아 (1~2시간?) 후면 연결 혹은 호스팅이 끊어져 있었다. 그래서 해결방안을 찾아보니 다음과 같은..

hansonminlearning.tistory.com

 

학습이 완료되면 log 폴더가 생성되고 그 안에 학습된 모델이 있을 것이다.

다음 포스팅에서 학습된 모델을 불러와서 제대로 예측을 하는지 알아보겠다.

반응형

댓글