본문 바로가기

Computer Vision/Detection, Segmentation

Mask R-CNN

 

He, Kaiming, et al. "Mask r-cnn." Proceedings of the IEEE international conference on computer vision. 2017.

Link

 

 

Abstract

  이 논문에서는 Object instance segmentation을 위한 간단, 유연, 일반적인 프레임워크를 제안한다. Mask R-CNN은 Faster R-CNN에서 병렬적으로 object mask를 예측하는 분기를 추가하여 구현된다. 이 모델은 COCO dataset에서 instance segmentation, bounding box object detection, person keypoint detection에서 뛰어난 성능을 보인다.

 

 

Introduction

  컴퓨터 비전 분야는 Fast/Faster R-CNN, FCN(Fully Convolutional Network)등으로 인해 단기간에 빠른 개선이 이루어졌다. 이 논문의 최종 목표는 instance segmentation을 위한 프레임워크를 개발하는 것이다. Instance segmentation은 모든 객체를 정확하게 감지하는 것에 동시에 정확히 segmentation 해야하기 때문에 어려운 작업이다. 이를 object detection과 semantic segmentation을 결합하여 해결한다.

 

 

 

 

 

 

 

  Object detection은 bounding box를 통해 object들을 분리하는 작업이고, Semantic segmentation은 다른 object에 각 픽셀별로 라벨링을 하는 작업이다. Mask R-CNN은 Faster R-CNN에서 bonding box regression과 classification 분기를 추가, 확장하여 object detection과 semantic segmentation을 병렬로 진행한다.

 

 

 

 

 

 

  Faster R-CNN은 특징 추출의 핵심 작업인 RoIPool 작업이 있는데, 본 연구에서는 공간 정보를 잘 보존하기 위한 RoIAlign 레이어를 제안한다. 그리고 mask와 class prediction을 분리함으로써 성능이 증가한다. 즉, 클래스간 경쟁없이 각 클래스에 대한 binary mask를 예측하고 RoI classification을 이용해 클래스를 예측한다. 

  이 모델은 한 개의 GPU 상에서 한 프레임당 200ms의 처리 속도를 가지며 학습시킬 때에는 8개의 GPU상에서 1~2일이 걸렸다. 마지막으로 human pose estimation을 통해 프레임워크의 일반성을 보여주어, R-CNN이 instance-level recognition에서의 유연한 프레임워크임을 보인다.

 

 

Related Work

R-CNN

  R-CNN (Region-based CNN)은 bounding box 후보들을 제안하고 (RoI) 이것들을 독립적으로 평가하는 모델이다. R-CNN은 RoIPool을 사용하여 성능을 향상시켰으며, Faster R-CNN은 RPN(Region Proposal Network)를 추가하여 성능의 많은 향상을 보였다.

 

Instance Segmentation

  R-CNN처럼 Instance segmentation도 segment proposal에 기반하여 작동한다. DeepMask 등의 모델은 segment candidates를 제안하는 것을 익히고 Fast R-CNN을 통해 classify한다. Dai et al.은 bounding box에서 segment proposal을 진행하고 classify를 한다. 이 논문에서 제안한 방법은 마스크와 class classify를 병렬적으로 진행한다. 

 

 

Mask R-CNN

  Faster R-CNN은 class label, bounding box offset 두 가지 output이 있다. Mask R-CNN은 object mask를 예측하는 세번째 분기를 추가한다. 이는 다른 출력 형식을 가지므로 미세한 공간 레이아웃의 추출이 필요하다. 다음은 Mask R-CNN을 구성하는 핵심 요소들이다.

 

Faster R-CNN

  Faster R-CNN은 두 부분으로 구성된다. 첫번째는 RPN(Region Proposal Network)으로 bounding box의 후보들을 제안한다. 두번째 단계는 RoIPool을 사용하여 classification을 수행하고 bounding box regression을 수행한다. 빠른 수행을 위해 두 부분이 같은 feature를 공유한다. 

 

Mask R-CNN

  역시 두단계로 진행되며, 첫번째 부분은 동일한 RPN이다. 두번째로는 class, box offset을 예측하는 것과 병행하게 각 RoI에 대한 binary mask를 예측한다. 학습시에 다음과 같은 Loss function을 가진다.

 

$L = L_{cls} + L_{box} + L_{mask}$

 

  Mask branch의 크기는 $Km^2$으로 K개의 classification과 mXm RoI size를 뜻한다. 각 픽셀당 sigmoid를 적용하고 loss는 average binary cross entropy로 계산한다. Ground truth class가 k일 때, $L_{mask}$는 k번째 mask에만 적용되고 그 이외에는 loss를 계산하지 않는다.

 

Mask Representation

  Mask는 객체의 공간 레이아웃을 인코딩한다. ROI로부터,  FCN을 사용하여 mxm 마스크를 예측한다. 위에서 언급했듯이 mxm 공간이 축소되지 않기 때문에 정확한 예측이 가능하다. 하지만, 이를 위해서는 공간정보가 잘 유지되어야 하는데, 기존의 RoI Pooling 기법에서는 공간정보가 잘리는 quantization문제가 있다. 공간정보를 더 잘 유지하기 위해 다음의 RoI Align 기법을 개발했다.

 

RoIAlign

  RoIPooling은 RoI에서 고정된 크기의 feature map을 추출하기 위한 작업이다. 각 RoI를 feature map 정수 단위로 quantize를 진행하고 pooling을 진행한다. (일반적으로 maxpooling) 실수 형태인 RoI 크기를 feature map 크기로 나누고 반올림을 진행한다. 이 과정에서 많은 정보 손실이 일어나며 이를 misalignment라 한다.

  RoIAlign은 나눈 결과를 반올림하지 않고 실수 그대로 가져가고자 하는 것으로부터 시작한다. 이를 구현하기 위해 bilinear interpolation을 사용하였다. 각 RoI bin에서 겹쳐진 4개의 location에서 interpolation을 진행하여 그 지점에서의 값을 정확히 계산한다. Experiment에서 RoIAlign 기술으로 인한 상당한 성능 향상을 보인다.

 

Network Architecture

  Mask R-CNN은 다음과 같이 구분할 수 있다.

 

  ˙ 이미지 전체에서 특징 추출하는 convolutional backbone 아키텍처

  ˙ Bounding box recognition을 위한 network head와 각 RoI에 개별적으로 적용되는 mask prediction

 

  성능을 향상시키기 위해 Feature Pyramid Network (FPN)을 사용한다. 피라미드의 여러 레벨에서 RoI feature를 추출한다. Network head의 경우 fully convolutional mask prediction branch를 추가한다.

 

 

Experiments : Instance Segmentation

  아래 그림은 Mask R-CNN에 COCO test image를 넣어서 출력된 이미지이다. 당시의 최신 모델 FCIS, FCIS+++에 비해 뛰어난 정확도를 보인다. 대표적으로 FCIS+++는 인스턴스간 겹치는 부분에서 결함이 생기지만 Mask R-CNN은 그러한 모습을 보이지 않는다.

 

 

 

 

 

 

Architecture

  Backbone이 깊이가 깊은 네트워크일수록 좋은 성능을 보인다. 예를 들어 FPN과 ResNeXt를 사용하였을 때 좋은 성능을 보였다. 

 

Multinomial vs. Independent Masks

  Mask R-CNN은 다른 클래스와의 경쟁없이 mask를 진행한다. 그러므로 softmax를 쓰지 않고 sigmoid를 통해 mask label을 계산할 수 있다. 그 결과, softmax를 쓴 모델 보다 mask AP에서 5.5 point정도의 향상을 보였다.

 

Class-Specific vs. Class-Agnostic Masks

  mxm 마스크에 대해 클래스를 예측하는 것보다 클래스에 관계 없이 단일 mxm 출력을 예측하는 것이 더 효과적이다. 클래스 분류는 Faster R-CNN부분의 classification에서 진행되기 때문이다.

 

RoIAlign

  RoIAlign은 RoIPooling에 비해 AP를 3포인트 정도 높여주고 큰 IoU를 보인다. RoIWarp와 비교하였을 때도 성능이 향상되었다. 앞에서 언급했듯이 RoIWarp또한 quantize로 인한 정보 소실, 정렬을 잃어버리기 때문이다. RoIAlign은 detection과 segmentation에서의 오랜 과제였던 큰 보폭 문제를 어느정도 해결함을 보인다.

 

 

Mask R-CNN for Human Pose Estimation

  이 프레임워크는 Human pose estimation으로 쉽게 확장될 수 있다. Key point의 위치를 K개의 마스크로 지정하여 예측할 수 있다. 각 point당 1개의 pixel을 추측하도록 한다. Instance segmentation과 동일하게 K개의 key point들은 독립적으로 처리된다.