AI/컴퓨터비전(CV)

[CV 논문] Mask R-CNN

CSE 2026. 2. 27. 13:18

 

 

아래 글에서 이 블로그에서 리뷰한 논문들의 흐름과 분야별 분류를 한 눈에 볼 수 있다.

읽은 논문들 정리

 

읽은 논문들 정리

[목차]지속적으로 업데이트 중, 번호는 모델발전 순서가 아닌 읽은 순서에 따라 정렬.1. Computer Vision 분야 논문Classification 모델들의 발전Detection 모델들의 발전3D 처리2. Natural Language Processing 분야

april2901.tistory.com

 

이번 논문은 Mask R-CNN이다.

이 논문을 읽기 전 FCN논문을 먼저 읽는 것을 추천한다.

Fully Convolutional Networks for Semantic Segmentation

 

[CV 논문] Fully Convolutional Networks for Semantic Segmentation

아래 글에서 이 블로그에서 리뷰한 논문들의 흐름과 분야별 분류를 한 눈에 볼 수 있다.읽은 논문들 정리 읽은 논문들 정리[목차]지속적으로 업데이트 중, 번호는 모델발전 순서가 아닌 읽은 순

april2901.tistory.com

 


 

RCNN들의 흐름

먼저 흐름을 다시 정리하자.

 

1. R-CNN 
핵심: 기존의 머신러닝 방식에 CNN을 처음으로 결합
작동 방식: 외부 알고리즘인 Selective Search로 약 2,000개의 후보 영역을 뽑아낸 뒤, 각 영역을 CNN에 일일이 집어넣는다.
문제점: 후보 영역 2,000개를 각각 CNN에 돌려야 해서 연산량이 엄청나고 속도가 매우 느리다.

2. Fast R-CNN
핵심: 이미지 전체를 CNN에 딱 한 번만 통과시켜 전체 특징 맵을 얻는다.
도입 기술: RoI Pooling을 통해 서로 다른 크기의 후보 영역을 고정된 크기의 벡터로 변환하여 연산이 빠르게 되게 했다.
문제점: 여전히 후보 영역 추출은 외부 알고리즘(Selective Search)에 의존하므로, 이 부분이 전체 속도의 병목이다.

3. Faster R-CNN
핵심: 후보 영역 추출 알고리즘을 신경망 내부의 RPN(Region Proposal Network)으로 대체
도입 기술: Anchor Box 개념을 사용하여 객체가 있을 법한 위치를 학습 가능하게 만들었다.

 

이번글에서 볼 mask R-CNN은 박스의 정확도도 높아졌으며, instance segmentation기능이 추가된 모델이다.

FCN에서는 매 픽셀마다 어떤 클래스인지를 분류했지만, mask R-CNN은 detection을 통해 물체가 사람이라는 것을 알았다면 각 픽셀에 대해 사람인지 아닌지만 판별하면 된다.

 

 

 

Mask RCNN은 기존의 Faster RCNN을 확장했다.

Faster RCNN에서는 병렬로 bounding box와 클래스 예측이 진행되었었는데, 여기에 하나의 분기를 더 배치해 물체가 차지하는 영역을 픽셀단위로 찾도록 했다.

 

기존의 RoIPool과 다르게 RoIAlign이라는 기법을 사용한다는 차이점이 있다.


Mask R-CNN

손실함수

손실함수는 mask rcnn의 세 가지 분기에서 나오는 손실을 합산한 방식을 사용한다.

각각 클래스 분류, 박스 위치 예측, 물체 모습 예측이다.

$$L = L_{cls} + L_{box} + L_{mask}$$
앞의 두 항은 faster R-CNN과 동일하므로 넘어가고, $L_{mask}$만 살펴보자.

마스크 분기는 K개의 클래스에 대해 m x m크기의 이진 마스크를 출력한다.

이진 마스크이므로 해당 픽셀이 해당 클래스인지 아닌지 0 / 1로 나타내는 것이다.

 

각 픽셀에 Sigmoid를 적용하고 Average Binary Cross-Entropy를 계산한다. 


RoIAlign

Faster R-CNN의 기존 RoIPool은 위치를 정수 단위로 반올림했다.

따라서 정확도가 낮아졌다.

RoIAlign은 이런 모든 반올림 과정을 제거하고 Bilinear Interpolation를 사용해 정확한 값을 계산한다.

이 방식은 소수점 위치를 보존한다.

예를 들면 기존에는 RoI의 네 귀통이 좌표를 모두 정수로 반올림 했는데,

이제는 Bilinear Interpolation을 사용해 귀퉁이의 좌표로 쓰고 싶은 점의 주변 4개의 점으로부터 거리를 고려해 좌표가 소수점으로 계산된다.

 

 


네트워크 구조

모델은 크게 두 부분으로 구분될 수 있다.

각각 backbone과 head이다.

backbone은 특징 추출, head는 클래스분류 / bounding box 회귀 / 마스크 에측을 수행한다.

 

이 떄 논문에서는 backbone으로 ResNet과 FPN의 두 가지를 사용해봤다.

head는 어떤 backbone을 사용했는지에 따라 달라진다.

 

ResNet을 사용했을 경우 res5를 통과시킨 후 두 갈래로 나눈다.

mask 분기에서는 7x7을 14x14로 upsampling해서 출력한다.

 

FPN을 사용했을 경우 이미 백본에 res5가 포함되어 있어 head가 더 가벼워진다.

 

 


결과

아래 사진은 이 모델의 결과를 나타낸 것이다.