RoIPool과 RoIAlign 차이는?

ai_lim·2022년 4월 4일
1

AI

목록 보기
16/16

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

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

인스턴스 세그멘테이션의 대표적인 방식에는 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을 생성할 수 있게 된다.

0개의 댓글