[딥러닝] Instance Segmentation(detectron2)

전래창·2021년 7월 8일
0

딥러닝

목록 보기
4/29

Detectron2

Training Instance Segmentation model on the balloon segmentation data-set

이번에는 딥러닝 기법 instance segmentation을 적용하기 위해 Detectron2를 사용해봤다.

detectron2란 FAIR(Facebook Artificial Intelligence Research)에서 만든 pytorch 기반 object detection과 sementic segemanation을 위한 training/inference 플랫폼으로 Detectron2를 이용해 학습을 하게 되면, 우리가 일반적으로 딥러닝 모델을 짤 때 구현하던 training loop를 짜지 않고 engine을 이용하여 학습 과정을 추상화 할 수 있어, 연구자 혹은 개발자는 모델 개발 자체에만 집중할 수 있다.

Detectron2가 다른 오픈 소스들에 비해 빠른이유는 python 최적화가 잘되어있기도 합니다만, 그 외에 연산량이 많이 드는 부분을 python이 아닌 CUDA와 C로 구현했기에 보다 좋은 성능을 냈습니다. box iou를 계산하는 부분이나, defromable conv 부분 등은 연산량이 많이 드는 부분인데, 이 부분을 CUDA로 구현하였다.

연습도 할겸 튜토리얼로 간단하게 풍선을 instance segmentation하는 과정을 진행하였다.

Install

먼저 detectron2를 설치하여야 한다. 앞서 말했듯이 pytorch 기반이므로 pytorch를 선행 설치하여야 하면 pytorch 버전과 cuda 버전에 따라 맞게 설치하여야 한다.

공식 github 주소
detectron2 github

github에 들어가서 installation 링크를 클릭하면 아래와 같이 나온다.

추가로 gcc와 g++이 필요하며 macOS의 경우 컴파일러를 clang을 사용하기 때문에 이것이 필요한 것 같다.

나는 주피터 노트북에서 실행하였는데 로컬에서 실행시킨듯.. (좀 시간이 오래지나 기억이 안나지만 맞는듯) 윈도우 운영체제이며 colab에서도 쓸수 있도록 하는 링크가 있었는데 url을 모르겠다.....

Get data

학습시킬 풍선 그림을 다운받는다(annotation 정보 포함)

Register data-set

데이터셋을 사용하기 위해서는 Detectron2에 등록을 해야한다. 왜냐고 물으면 공식 문서를 찾아봐야함...(=귀찮음)

데이터가 제대로 올라갔는기 확인하기 위해 랜덤하게 annotation들을 골라 가시화하였다.


Train model

이제 여기까지 왔으면 학습을 할 준비가 되어있다.

간단히 다음과 같은 프로세스가 진행되고

max_iter 값이 되면 완료가 된 것이다.

Use model for inference

이제 inference를 수행할 수 있다.

이상으로 튜토리얼로 진행한 detectron2를 마치며 아직 모델 설계와 전체 프로젝트의 구성요소를 파악하지는 못하여 이 부분에 대한 추가 연구가 필요할 것으로 보인다.

profile
머신러닝 개발자

0개의 댓글