Artifical Intelligence

[논문 리뷰] Mask R-CNN 이해

블랙텔레토비비빅 2024. 1. 5. 14:49
반응형

논문 링크 : https://arxiv.org/pdf/1703.06870.pdf


 

Mask R-CNN은 instance segmentation 을 위해 사용되는 모델인데 이 내용을 이해하기 위해서는 Faster R-CNN과 Object Detection, Semantic Segmentation, Instance Segmentation의 차이를 알아야 한다.

 

 

🎯 Faster R-CNN

이 모델은 object detection을 위한 모델이다.

후보 영역 추출 작업을 수행하는 네트워크인 RPN(Region Proposal Network)을 Fast R-CNN 모델에 적용한 것이다.

RPN에서 region proposals를 추출하고 이를 Fast R-CNN 모델에 전달해 객체의 클래스와 위치를 예측하는 방식이다.

 

 

🎯 Object Detection, Semantic Segmentation, Instance Segmentation 차이

https://medium.com/@parkie0517

  • Object Detection : 각 객체에 classification 수행 후 Bounding box를 생성
  • Semantic Segmentation : 하나의 클래스에 대해 하나의 Segmentation Mask를 생성 - 축구선수 2명 분류 X
  • Instance Segmentation : 위 두 가지를 합쳐 각 객체에 대해 Segmentation Mask를 생성

 

Abstract

Faster R-CNN 모델에 브랜치를 병렬적으로 추가해 instance segmentation이 가능하도록 하는  모델이다.


1. Introduction

 

instance segmentation을 빠르게 구현하는 프레임워크 개발이 목표다.

이를 위해 Faster R-CNN의 RPN에서 얻은 RoI(Region of Intereset)에 class를 예측하는 classification branch, bounding box regression을 수행하는 bonding box regression branch와 평행하게 mask branch를 추가한다.

mask branch는 각 RoI에 FCN(Fully Convolutional Network)가 추가된 형태다.

 

Faster R-CNN과 차이점은 RoI Align을 사용한 것이다.

앞서 말했든 Faster R-CNN은 object detection이 목표라 객체의 테두리만 추출하면 됐다. 그렇기에 소수점 좌표가 있을 경우 반올림하는 RoI Pooling을 수행해 위치가 왜곡되었다.

그러나 Mask R-CNN의 경우 instance segmentation을 위해 정확한 위치가 중요해 RoI Align을 사용한다.

이를 통해 10% 에서 50% 까지 정확도를 향상시킬 수 있었다고 한다.

 

또한, 연구진들은 mask 예측과 class 예측을 분리하는 것이 필수적임을 발견했다.

class 예측 후 해당 class에 mask를 씌우는게 아니라 class 예측 후 그 안에서 mask를 생성하는 방법이 효과적이라고 한다.


2. Related Work

2-1. R-CNN : Region-based CNN

각 RoI에 독립적으로 convolution network를 평가한다.

RoIPool을 사용해 속도, 정확도가 향상되었다.

 

2-2. Instance Segmentation

class와 mask 예측을 병렬적으로 수행하며 instance를 우선으로 설정한다.


3. Mask R-CNN

여기서는 간단하게 추가된 내용을 설명하며 Mask R-CNN 모델의 핵심 요소를 소개한다.

 

Faster R-CNN은 class label, bounding-box라는 2개의 결과를 도출한다.

Mask R-CNN은 여기에 object mask라는 하나의 결과를 더 추가한다.

이는 다른 두 가지 결과들과 분리되어 있으며 더 많은 공간 정보를 요구한다.

 

  • Faster R-CNN

Faster R-CNN은 두 가지 단계를 가진다.

첫 단계는 Region Proposal Network(RPN)이라 불리며 객체 후보에 대해 bounding box를 제안한다.

두 번째 단계는 첫 단계의 후보들로부터 RoI Pool을 사용해 특징을 추출한 후 분류, 회귀를 수행한다.

 

  •  Mask R-CNN

Mask R-CNN은 위의 두 단계를 동일하게 채택하며 두 번째 단계에서 각 RoI에 대해 binary mask도 output으로 출력한다.

 

각 RoI의 multi-task loss는 위 L 식과 같이 정의한다.

L_cls : 클래스 분류 loss

L_box : bounding-box loss

L_mask : mask branch의 mask loss

 

L_mask는 Km^2 차원의 output을 가지는데 이는 K(클래스 개수)개의 m x m의 binary mask를 출력한다.

pixel별 sigmoid를 적용하고 L_mask를 average binary cross-entropy loss로 정의한다.

이를 통해 모든 class, mask를 경쟁 없이 생성할 수 있다.

 

  • Mask Representation

Mask는 공간 정보를 담고 있어 pixel to pixel로 대응하는 FCN을 이용한다. 이를 통해 공간 정보 손실 없이 m x m 크기의 mask를 예측 가능하며 이 경우 더 적은 파라미터 수로 정확도를 높일 수 있다.

FCN을 잘 적용하기 위해 RoIAlign layer를 개발했다.

 

  • RoIAlign

기존 RoIPool의 경우 RoI에서 small feature map을 추출하기 위한 작업이다.

그러나 quantization 과정에서 RoI와 특징들 간 misalignment가 발생해 mask에 큰 영향을 끼친다.

이를 위해 RoI Align을 제시했다.

Roi Align의 경우 bilinear interpolation을 사용해 정확한 값을 계산 후 결과를 max 또는 평균을 내는 방식이다.

그리고 quantization은 수행되지 않는다.

 

  • Network Architecture

왼쪽 그림은 Faster R-CNN고 ResNet을 이용한 백본에 mask branch를 추가한 것이다.

오른쪽 그림은 Faster R-CNN과 FPN을 이용한 백본에 mask branch를 추가한 것이다.

백본에 따라 head의 구조가 달라지는 것을 확인할 수 있다.

 

3-1. Implementation Details

  • Training

- ground-truth IoU가 0.5 이상이면 RoI는 positive 이외는 negative

- L_mask는 positive RoI에만 적용

- 이미지는 800 픽셀

- 각 이미지에는 N개의 샘플링된 RoI 있음

- N(sample RoI)은 백본이 C4인 경우 64개, FPN인 경우 512개

- mini batch : 16

- epoch : 160000

- lr : 0.02

- weight decay : 0.0001

- momentum : 0.9

 

  • Inference

 

- C4의 경우 proposal 300, FPN의 경우 1000개 정도 제안

- box 예측 후 score 점수 높은 100개 box에 대해 mask branch 적용

- RoI당 K개의 mask를 예측할 수 있지만 여기서는 K번째 mask만 사용

   - K는 classification branch에서 예측된 클래스

- output은 RoI 사이즈로 바꾸고 0.5 기준으로 binarized 한다.


4. Experiments : Instance Segmentation

4-1. Main Results

COCO 데이터셋에 적용한 결과 좋은 성능을 보였다.

 

이외에도 다양한 경우에 대해 결과 비교를 진행한다.


5. Mask R-CNN for Human Pose Estimation

사람 자세 추정에도 쉽게 확장 가능하다.


논문 리뷰

  • 읽게 된 이유

옷을 탐지해 옷의 스타일을 추출하고 이를 통해 사용자에게 맞춤형 옷을 추천해주는 프로젝트를 진행했었다.

당시 옷을 탐지하는 과정에서 Mask R-CNN을 사용했는데 정확히 알고 사용한 것이 아니라 공부해보고 싶었다.

 

  • 느낀 점

Fast R-CNN과 같이 미리 알면 좋을 내용의 논문들을 읽지 않고 해당 논문을 읽었다보니 먼저 공부하고 시작했으면 어땠을까 하는 아쉬움이 남는다. 

 

참고 문헌

https://herbwood.tistory.com/10

논문리뷰 Mask R-CNN, 2018

https://velog.io/@skhim520

https://blahblahlab.tistory.com/139

반응형