티스토리 뷰

논문 리뷰

[논문 리뷰] MASK R-CNN

hyuna_engineer 2024. 3. 25. 19:03

2018년에 나온 논문이다.

1. Introduction
Faster/Fast R-CNN에서는 bounding box에서는 그쳤지만, Mask R-CNN은 instance segmentation까지 진행하는 것이 목표이다.
해당 논문 부분 : “to develop a comparably enabling framework for instance segmentation
Faster R-CNN + 각 RoI에서 segmentation mask를 예측하는 FCN branch <-이 branch는 classification과 bounding box regression 진행할 때와 같이 진행한다.

Mask R-CNN 특징
1. Faster R-CNN 처럼 RoI 진행할 때 Max pooling 진행하면, 전체적인 특성을 담으려고 하기에 instance segmention이 잘 되지 않는다. 그래서 Mask R-CNN은 RoIAlign을 진행함으로써 각 픽셀마다의 정보를 담게끔 했다.
2. Mask와 classification 과정 분리->Mask 씌울 때는 class 고려 안하고 씌우고, 이후에 RoI 를 통해 classification 진행

2. Related work
R-CNN : 다음 글을 참고하자.

Instance segmentation
R-CNN 발전에 따라 instance segmenation이 주목 받기 시작했다. 예시로 deepmask, fully convolutional instance segmentation(FCIS) 등이 있다. FCIS는 위치에 민감한 출력 채널들을 전부 컨볼루션 방식으로 예측하는 것입니다. 이러한 채널들은 객체 클래스, 박스, 그리고 마스크를 동시에 다루어 시스템을 빠르게 만듭니다. 그러나 FCIS는 중첩된 인스턴스에 대한 시스템적 오류를 보이고 잘못된 가장자리를 생성합니다. 이는 instance 세분화에 어려움이 있음을 알 수 있다.

3. Mask R-CNN 구조
구조는 간단하다.
Faster R-CNN의 결과로 class의 label과 bounding box 두 개가 나오는데, 여기에 하나의 결과, object mask가 더 나오게끔 branch(과정)를 추가한 구조이다.

 

Faster R-CNN - two stage 로, 첫 번째 stage RPN은 faster r-cnn과 같다. 두 번째 단계는 클래스와 박스 오프셋을 예측하는 것과 병렬로 Mask R-CNN은 각 RoI에 대한 이진 마스크(binary mask)를 출력하게 한다. Mask prediction에 따라 classification이 진행된다. 이런 인사이트는 바운딩 박스 분류와 회귀를 병렬로 적용하는 Fast R-CNN에서 영감을 받았다. 이는 원래 R-CNN의 다단계 파이프라인을 대폭 단순화하는 것이라고 할 수 있다.

RoI 계산에 대한 loss 값은 L = L_cls + L_box + L_mask으로 구한다. L_cle, L_box는 fast r-cnn과 같고, 각 pixel마다 sigmoid 적용하여 이 L_mask는 average binary cross-entropy loss을 이용해 정의한다. RoI 는 ground-truth class k에 영향을 받는, 즉, class의 영향을 받아 region proposal이 진행되지만, Lmask는 오직 k번째 mask에 따라(class 고려x) 예측한다. 원래 FCN 이 semantic segmentation에 쓰일 때, 각 픽셀마다 softmax 을 씌우고 multinomial cross-entropy loss을 적용한다. 이러면 mask 씌웠을 때 class가 겹치면 문제가 생긴다.

Mask Representation
mask는 input object를 공간적(spatial) layout으로 encode한다. class label과 box offset은 fc layer를 통해 short output vector가 되면서 차원 측면에서 문제가 되지만, mask를 이용하면, full-convolution을 통해 각 픽셀마다, short output vector도 잘 다루게 되면서 이러한 대응성으로 spatial layer을 이끌어 낸다.
FCN을 통해 각 RoI마다 mxm mask를 예측한다. 이렇게 함으로써 short vector로 공간적 정보가 붕괴되지 않게 해준다.

RoIAlign
이전 method 문제점
RoIPool이라는 기술은 주어진 관심 영역(RoI: Region of Interest)을 특징 맵(feature map)의 이산적인 세부 구조로 양자화(quantize)하는 과정을 거친다. 이때 양자화된 RoI는 공간적으로 여러 개의 bin으로 세분화되며, 이 bin들 또한 양자화된다. 그 후, 각 bin을 커버하는 특징 값들이 집계된다(대부분 최대 풀링(max pooling)을 사용). 예를 들어, 연속 좌표 x에 대해 양자화는 [x/16] 계산을 통해 수행되는데, 여기서 16은 특징 맵의 스트라이드(feature map stride)이고, [·]는 반올림을 의미한다. 마찬가지로, bin으로 나눌 때도 양자화가 수행된다(예: 7×7 크기의 bin).

이러한 양자화 과정은 RoI와 추출된 특징 사이에 미세 정렬 오류(misalignments)를 일으키게 된다. 분류 작업(classification)에서는 작은 이동에 대해 강건하기 때문에 크게 영향을 받지 않지만, 픽셀 정확도의 마스크를 예측하는 데에는 큰 부정적인 영향을 미친다.

그렇기에 양자화 문제를 해결하기 위해 RoIAlign이 제시돠었다. 양자화를 좀 더 엄격한 기준으로 했으며 이는 RoI boundary 간 사이의 부정확한 값은 각 RoI 내부에서 4개의 sampled location 에서 binary interpolation을 통해 정확한 instance segmentation이 되게끔 했다.

무슨 말인지 다음 사진을 보자.

 

정리하자면 다음과 같다. 위의 글 인용
1) 먼저 RoI projection을 통해 얻은 feature map을 quantization 과정 없이 그대로 사용합니다. 그 다음 출력하고자 하는 feature map의 크기에 맞게 projection된 feature map을 분할해줍니다. 위의 예시에서는 3x3 크기의 feature map으로 출력할 것이기 때문에 width, height를 각각 3등분해줍니다.

2) 분할된 하나의 cell에서 4개의 sampling point를 찾습니다. 이는 cell의 height, width를 각각 3등분하는 점에 해당합니다.

3) 그 다음 Bilinear interpolation을 적용합니다.

4) 2)~3) 과정을 모든 cell에 대하여 반복합니다.

5) 하나의 cell에 있는 4개의 sampling point에 대하여 max pooling을 수행합니다.


Model architecture
mask R-CNN이 차별점을 둔 것은 다음 두 가지이다.
(i) the convolutional backbone architecture used for feature extraction over an entire image
->feature 뽑는 모델로 convolution을 전체 이미지에 적용

(ii) the network head for bounding-box recognition (classification and regression) and mask prediction that is applied separately to each RoI.
->bounding box를 잡고 각 RoI에서의 mask 예측을 위해 network head를 이용했다. skip connection을 이용했다는 의미이다.

(i)에서 backbone 구조로 ResNet과 FPN를 합친 backbone을 이용했다.

FPN이란?
Feature Pyramid Network(FPN)은 단일 스케일 입력에서 네트워크 내 feature 피라미드를 구축하기 위해 상향식 구조와 측면 연결을 사용하는 방식이다. FPN은 다양한 크기의 객체를 효과적으로 감지하기 위해 설계되었다. 기존 방법에서는 단일 스케일의 특징 맵을 사용하여 객체를 감지했지만, FPN은 입력 이미지로부터 다양한 해상도의 특징 맵을 생성하여 작은 객체부터 큰 객체까지 다양한 크기를 더 잘 감지할 수 있게 한다. 이는 상향식 경로에서 깊은 층(낮은 해상도, 높은 의미)에서 얻은 고수준의 특징 정보를 측면 연결을 통해 상대적으로 해상도가 높은 층으로 전달하고, 이를 통해 특징 피라미드를 구성하는 방식으로 이루어진다. 결과적으로, FPN은 다양한 크기의 객체를 효과적으로 인식하고 위치를 정확하게 파악하는 데 기여한다.

다시 돌아와서, 기존 ResNet 사용으로는 성능이 크게 좋아지지 않아 FPN을 결합한 것인데, 이전 Faster R-CNN은 FPN(Feature Pyramid Network) backbone을 사용하여 다양한 스케일의 특징 피라미드 레벨에서 RoI(Region of Interest) 특징을 추출했다. 그러나 이 방식은 그 외의 점에서는 기본 ResNet과 유사하다. ResNet-FPN 백본을 사용하여 특징을 추출하는 Mask R-CNN은 정확도와 속도 면에서 탁월한 향상을 제공합니다.

(ii)에서 network head를 이용하기 위히 full-convolution으로 이루어진 branch를 추가하여 mask prediction을 진행했다.

(i), (ii)는 다음 사진을 참고해라

3. Training
Fast R-CNN에서 RoI 고려할 때, IoU 0.5 이상 & negative sample을 고려했는데, mask의 loss func, L_mask는 positive sample만 고려했다. mask prediction 할 때 Image-centric training을 진행했다.
8 GPUs (mini-batch size 가 16일 때 가장 효과적)  & 160k iterations & learning rate of 0.02 & 120k마다 감소
box prediction할 때 NMS(non-maximum suppression) 고려해서 계산.

단점 : bounding box가 어떤 class라고 특정되면, 해당 instance 또한 그 class로밖에 측정된다.

Mask R-CNN 와의 결과도 비교했다.


여러 상황을 비교한 결과도 다음과 같다.




공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함