MLDL_정리/용어, 메모장

Mask RCNN ROI Align

KimTory 2023. 6. 5. 19:28

// fast rcnn과 mask rcnn의 차이점

https://blahblahlab.tistory.com/139

 

MASK RCNN 논문 리뷰

Instance segmentation task를 다룬 논문인 MASK-RCNN 차례입니다. MASK RCNN은 기존 object detection task에서 사용되던 FASTER RCNN에 Mask branch를 추가해 classification , bbox regression , predicting object mask를 동시에 처리하

blahblahlab.tistory.com

https://kr.mathworks.com/help/vision/ug/getting-started-with-r-cnn-fast-r-cnn-and-faster-r-cnn.html

 

R-CNN, Fast R-CNN, Faster R-CNN 시작하기 - MATLAB & Simulink - MathWorks 한국

다음 MATLAB 명령에 해당하는 링크를 클릭했습니다. 명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.

kr.mathworks.com


세그멘테이션을 하는 방법으로는 시맨틱 세그멘테이션 인스턴스 세그멘테이션 으로 나눌 수 있다.

인스턴스 세그멘테이션의 방식은 아래처럼 3개의 딥러닝 방식으로 분류 할 수도 있다.


좌측의 그림은 시맨틱 세그멘테이션의 예시로 양, 길, 풀밭으로 영역을 구분하지만 양들 각각을 구분하지 않는다. 반면에 우측의 그림은 인스턴스 세그멘테이션의 예시로 같은 종류의 물체라도 개별로 영역을 나누어 양들 각각을 구분해낸다.

인스턴스 세그멘테이션의 대표적인 방식에는 Mask R-CNN이 있다. Mask R-CNN은 RoIAlign 클래스별 마스크 분리라는 두가지 아이디어를 통해, Object Detection과 시멘틱 세그멘테이션을 동시에 할 수 있다.

Mask R-CNN은 Faster R-CNN의 아이디어인 RoIPool개념을 계승하여 RoIAlign을 하게되었는데 RoIPool과 RoIAlign의 방식을 비교해보자.

RoIPool

Faster R-CNN은 object detection을 위한 모델이였기 때문에 RoIPool과정에서 정확한 위치정보를 담는 것은 별로 중요하지않았다.


RoIPool방식은 Quantization해주고 나서 Pooling을 해주는 것이다. 만약 RoI가 소수점 좌표를 가지고있으면 각 좌표를 반올림하여 Pooling을 하는 것인데 이렇게 되면 input image의 원본 위치정보가 왜곡되어 classification을 하는데 문제가 안되지만 인스턴스 세그멘테이션처럼 픽셀별로 detection하는 경우는 문제가 생긴다.

RoIAlign

그래서 인스턴스 세그멘테이션의 대표적인 방식 Mask R-CNN에서는 RoIAlign방식을 사용한다.


RoI 영역을 pooling layer의 크기에 맞추어 등분한 후


각 그리드에 sample point들을 잡는다.
그림을 봤을 때, 한 그리드에 4개의 샘플포인트, 총 16개의 샘플포인트가 있다.

sample point 하나를 기준으로 가까운 그리드 셀 4개에 대해서 bilinear interpolation(양선형 보간법) 계산을 해서 Feature Map을 계산하는 것이다.


위의 과정을 모든 sample point에 대해 진행해준다. 하나의 영역 안에 4개의 값이 생기게 되는데 max 또는 average pooling을 사용해 2x2의 output을 얻어낼 수 있다.

이로써 Mask-R-CNN의 RoIAlign은 Quantization하지 않고도 RoI를 처리할 고정 사이즈의 Feature map을 생성할 수 있게 된다.