ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Mask R-CNN] Balloon.py 트레이닝(Window10)
    Deep-Learning/[Vision] 실습 2020. 2. 24. 19:38
    Python/Tensorflow/Keras를 이용한 Mask RCNN : https://github.com/matterport/Mask_RCNN

     

    0. 개요

    Mask R-CNN에 대해 알아보고 Sample Code인 Balloon.py를 트레이닝 시킨다.

    트레이닝 후 얻은 가중치를 이용해 풍선 부분을 segmentation 한 결과를 보여준다.

     

    1. 준비

     

     

     상단 Mask R-CNN github에서 위와 같이 파일을 다운로드(gitclone을 쓰시는 분들 제외)를 한 후, requirements.txt에 있는 모든 라이브러리를 다운받는다. 다운을 받을 땐, root directory에 다운받고 anaconda를 활용하여 다운받는다.

     

    출처 : https://github.com/matterport/Mask_RCNN

     다운이 다 되면 setup.py를 통해 pre-trained COCO weights를 install 한다(mask_rcnn.h5). 이를 다운 받으면 pycocotools가 설치되며, coco weights는 training시에 사용되니 같은 root안에 다운 받을 것을 권장한다.

     

    출처 : https://github.com/matterport/Mask_RCNN

     

     이 때, windows를 사용하는 유저에게는 세 가지 문제가 발생된다. 

     

     

    - imagaug가 설치가 되지 않는 문제

     이 문제 같은 경우에는 shapely를 설치해주고 pip install imgaug(혹은 pip install imgaug --user)를 실행해주면 된다. 하지만, shapely는 아나콘다에서 다운이 불가능하고 아래의 단계를 통해 파일을 다운로드 해주어야 한다.

     

    1) http://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely에서 ctrl+f 로 shapely 검색 후 다운로드 받는다.

    2) windows 10 64bit, python 3.7이므로  Shapely-1.7.0.post2-cp37-cp37m-win_amd64.whl 을 다운받았다.

    3) 받은 파일을 현재 프롬프트를 실행하는 위치(예: C:\Windows\System32)에 넣고 아래 명령어를 실행하면 된다.

    # 1.7.0 부분은 최신 업데이트 버전에 따라 달라질 수 있음

    # 파이썬 3.7이라서 cp37, windows10이라서 win_amd64 버전을 받았음

    python -m pip install Shapely-1.7.0.post2-cp37-cp37m-win_amd64.whl

     

     

    - AttributeError: module 'tensorflow' has no attribute 'placeholder'

     이 문제 같은 경우에는 아나콘다 프롬프트에 tensorflow 2.0이 깔려있어서 생기는 문제이다.

     아래의 명령어를 통해 이미 설치된 tensorflow를 지우고 새로 설치해야하는데 그냥 설치한다면 앞으로 생길 문제가 한 가지 있다.

     

     Mask R-CNN이 나왔을 쯤에는 tensorflow의 버전이 1.0 시리즈였다. 그 중에서도 가장 문제가 많았던 1.14.0 버전일 때 만들어진 것으로 추측이 된다. 따라서, 아래와 같이 TF는 1.14.0, keras는 2.1.3 버전으로 맞춰 설치할 것 을 정말 권장하는 바이다. 아래와 같이 버전을 맞추지 않는다면 gpu 연산 시에 멈추거나 cuda가 터지는 일이 계속 발생할 것이다.

     

    pip install tensorflow-gpu==1.14.0 keras==2.1.3

    #위와 같이 설치 후 아래의 코드로 버전을 확인해 볼 것

    '''

    import tensorflow as tf

    tf.__version__

    keras.__version__

    '''

     

     

    - ImportError: No module named _mask

     상단의 setup.py를 통해 coco weights를 다운받으면 위와 같은 에러가 발생이 되는데 이것은 말 그대로 _mask 파일이 설치되지 않았기 때문이다.

     stackoverflow에서 위의 에러를 검색해보면 _mask 파일은 PythonAPI의 setup.py를 통해 다운받으면 된다고 하는데 그에 따라 설치를 해보면 또 다른 오류를 낳을 것이다. 그렇기에 하단의 방법을 사용하여 에러를 방지할 것을 권장한다.

     

    1) 기존의 COCO 폴더가 있는 root에 오른쪽 링크의 COCOAPI를 다운 https://github.com/philferriere/cocoapi

    2) 기존의 COCO 폴더 삭제

     

     위에서 다운로드 된 cocoapi는 위 문제를 해결한 최신 cocoapi이다. 오류의 원인은 아직 알지 못한다고 한다.

     

    2. 트레이닝

    1) balloon.py의 ROOT_DIR 수정

     가장 먼저 해야하는 작업은 balloon.py 38번째의 코드인 기존에 있던 ROOT_DIR 값을 절대 경로로 바꿔주어야 한다. 

    # Root directory of the project

    ROOT_DIR = os.path.abspath("C:/Users/Users/Mask_RCNN")

     

    2) training

    위와 같이 셋팅을 완료하였으면 아래의 코드를 anaconda에 붙혀넣어 실행하면 된다.

    python Mask_RCNN/samples/balloon/balloon.py train --dataset=Mask_RCNN/balloon_dataset/balloon --weights=coco

    실험 결과

    3) 학습 완료된 가중치 확인 및 학습시킨 모델 적용

     학습 완료된 가중치는 Mask_RCNN 폴더 안에 있는 logs"mask_rcnn_balloon_0030.h5"이다.  해당 가중치를 활용해서 아래의 코드를 anaconda에 붙혀 실행해보자.

    python Mask_RCNN/samples/balloon/balloon.py splash --weights=Mask_RCNN/logs/balloon20200305T1456/mask_rcnn_balloon_0030.h5 --image=Mask_RCNN/balloon_dataset/balloon/val/14898532020_ba6199dd22_k.jpg

    실험 결과

     

     

     

     

     위에 적힌 오류 외에 다른 오류가 발생되어 실험이 불가능하다면 댓글 혹은 방명록에 작성해주시기 바랍니다.

     balloon.py를 돌리면서 발생한 오류가 한 두개가 아니었다보니 생각나는 것만 일단 작성하였는데 다른 분들의 타 오류 관련 댓글이 있다면 추가하여 작성해놓도록 하겠습니다.

    댓글

by KUKLIFE