Paper review

[Paper review] Mask R-CNN

최끝장1234 2022. 1. 12. 03:07

오늘 리뷰할 논문은 Mask R-CNN이라는 논문이다. R-CNN은 아시다시피 Object Detection의 근본모델이다. 그래서 논문을 읽기전 Mask R-CNN 역시 단순히 Object Detection 모델이라고 생각했다. 하지만 이말은 톨렸다. Mask R-CNN은 Object Dectection은 물론, instance segmentation, keypoint detection 등 좋은 성능을 낼 수 있는 모델이고, 한마디로 multitasking이 가능한 모델이다. 그렇다면 이 모델은 어떤 구조와 방법론은 사용했기에, 이와 같은 성능을 낼 수 있었을까?

 

모델의 구조는 정말 간단하다. 기존 Faster R-CNN이 Object Detection에서 좋은 성능을 내므로, instance semantic segmentation도 할 수 있도록 만들자라는 아이디어에서 출발한 모델이기에, 구조 역시 Faster R-CNN에 segmentation을 위한 mask를 예측하기 위한 branch를 연결한 구조이다. 다음은 논문에서 나타난 Mask R-CNN의 구조이다. 

논문 그림 참조

 

위에서 설명한 그대로이다. Classification + Bounded Box 을 예측하는 기존의 Faster R-CNN에 Mask를 예측하기 위한 branck가 하나 더 병렬적으로 추가되어 있다.

여기서 흥미로운 건 병렬적으로 연결했다는 점이다.

즉, 이 모델은 segmentation작업을 classification, bounded box작업을 병렬적으로 수행한다!  일반적인 시각에서 생각을 해보면, 이 세작업은 서로 하나의 이미지 안 물체를 분류한다는 점에서 서로 종속적이다. 따라서 모델 역시 서로 영향을 줄 수 있게금 연결을 한다면 더욱 좋은 성능을 낼 것이라는 생각을 할 수 있다. 충분히 합리적이다. 실제로 이 당시 많은 모델도 세 작업을 종속적으로 수행하는 모델에 대한 연구가 활발히 진행됐다고 한다. 그러나 Mask R CNN은 이러한 고정관념들을 뒤엎고 작업을 병렬적으로 수행하도록 모델을 구조를 만들어낸것이다.

논문에서는 특히 classification과 segmentation 작업을 병렬적으로 수행한 점에서 중점적으로 설명한다. 이러한 병렬적인 구조는 모델이 classification 작업과 경쟁하지 않고, segmentation을 위한 mask를 만들어내는 데 집중할 수 있게 된다고 설명한다. 이러한 구조는 instance segmentation작업에서 좋은 결과를 얻을 수 있다고 한다.

 

이게 Mask R-CNN의 끝이라고 생각하면 오산이다. Mask R-CNN이 Faster R-CNN과 구조는 거의 같지만 한가지 장치를 다르게 해놓았다.

그건 바로 'RoIAlign layer'이다.

먼저 Faster R-CNN의 경우 RoIPool layer가 사용됐는데, RoI와 추출된 feature사이에 misalignments가 발생할 가능성이 높았다. 왜냐하면, RoI영역이 여러 픽셀에 걸쳐 있을 경우, 이를 반올림에서 사용했기 때문이다. 이러한 misalingment는 픽셀단위로 인스턴스를 각각 구별해야하는 instance segmentation에서 더욱 치명적일 수 밖에 없다. 따라서 이를 보완하기 위해, RoIAlign layer가 사용됐다. RoIAlign은 RoI 영역이 여러 픽셀에 걸쳐있는 경우, 이중 선형 보간법을 이용해 걸쳐있는 여러픽셀들을 모두 반영할 수 있도록 한다. 따라서 추출된 feature이 RoI와 align하게 해준다. 

 

(RoI Pool과 Align에 대한 자세한 설명은 하단 링크 참조

https://www.youtube.com/watch?v=EcSaS-Qi4h4&t=1210s)

 

 

논문에서 보여준 결과는 다음과 같다.

논문 결과 참조

instance segmentation을 기준으로 SOTA를 달성했다는 것을 알 수 있었다. (2017년 기준) 이외에도 RoI Pooling을 썼을 때보다, RoI Align을 썼을 때 더 좋은 성능을 냈다는 점도 확인할 수 있었다. 이외에도 흥미로웠던 점은 Mask-R CNN의 flexibility와 관련된 부분이었다. 논문에서 모델은 위와 같은 instance segmentation 외에도 Object Detection과 keypoint Detection에서도 실험을 했고, 거의 모든 task에서 기존 모델들 보다 좋은 성능을 낸다는 것을 확인 할 수 있었다.

 

이번 논문을 리뷰를 통해서 들었던 생각은 좋은 성능을 내는 모델은 누구도 생각하지 못하는 아이디어로만 만들어지는 것은 아니라는 점이었다. Mask R-CNN의 경우에도 그 구조나 방법론적인 측면에서 엄청나게 기발하다고 느끼지는 않았다.(물론 이것도 개인적인 의견이다.) 다만 기존의 방법들과 약간은 색다른 방식으로 시도하는 과정, 예를 들면 종속적으로 처리된 작업을 병렬로 처리하는 구조로 바꿔서 시도하는 것과 같은 그런 과정이 참 중요하다는 생각이 들었다.

 

아래는 리뷰한 논문의 주소이다

https://arxiv.org/abs/1703.06870