티스토리 뷰

Paper Review

[논문 요약48] Mask r-cnn

Arc Lab. 2019. 7. 9. 15:15

[업데이트 2019.07.09 15:15] 

 

48번째 요약할 논문은 "Mask r-cnn" (https://arxiv.org/pdf/1703.06870.pdf) 입니다.

 

<논문 주요 내용 요약>
- 연구 배경

최근 Computer Vision 분야에서는 object detection, semantic segmentation 연구에 대해서 단기간에 빠르게 발전해왔습니다. Fast/Faster R-CNN, FCN과 같은 딥러닝 모델이 그 예입니다.


- 당면 과제

그러나 여전히 instance segmentation에 대한 연구는 도전적인 과제중 하나입니다. 하나의 이미지내에서 모든 사물에 대해 검출이 되어야 하고, 추가적으로 각 클래스별, instance별 정확하게 구분이 되어야 하기 때문입니다.

 

* semantic segmentation은 각각의 클래스에 대해서만 구분하는 것이나, instance segmentation은 하나의 클래스에서 검출된 여러개의 instance를 각각 구분하는 것입니다. 아래 그림 처럼 semantic segmentation은 Person이란 클래스 전체에 대해 Person 하나로 구분하지만, instance segmentation은 Person 클래스에 대해서 Person1,2,..5와 같이 각각에 대해 구분합니다.

 

- 연구 당위성
기존 연구는 segment proposal 기반, Fast R-CNN을 통해 동작되어 속도가 느리고 정확도가 낮았습니다. 또한 복잡한 multiple-stage로 구성된 segmentation process를 제안한 경우도 있었는데 bounding box proposal로 부터 segment proposal을 예측하는 방법이었습니다. 최근 연구인 FCIS의 경우 기존 연구보다 빠르고 성능도 개선되었지만, instance간 segmentation 결과가 서로 침범 하는 경우가 있어서 정확도가 떨어졌습니다. (Figure 6)

또 다른 기존의 연구중 semantic segmentation의 성공으로부터 시작되어 픽셀 단위 classification을 통한 시도도 있었습니다.(FCN 출력) 이러한 방법들은 segmentation-first 기반으로 제안된 방법들이며, Mask R-CNN은 instance-first 기반으로 제안된 방법으로 접근 방법이 다릅니다.


- 연구 문제

instance 단위 segementation 성능이 좋지 않았음. (segment proposal 기반 방법, FCIS)


- 연구 중요성

보다 정확한 instance 단위 segmentation이 가능해짐.

- 제안된 방법

. 기존의 Faster R-CNN 기반으로 구현되며, segmenation mask를 위한 브랜치가 추가되었습니다. 또한 bounding box regression과 classification 브랜치와 같이 parallel 하게 학습을 수행합니다.

 

. mask 브랜치는 small FCN으로 구성되어 픽셀 단위로 예측하게 됩니다. 기존의 Faster R-CNN의 pixel-to-pixel로 network input/output간의 align을 처리하지 않는데, 보다 정밀한 segmentation을 위해 Mask R-CNN은 ROIAlign 기법을 사용합니다. 

 

. 연구를 통해 segmentation과 classification 예측에 대해 decoupling하는 것이 성능을 향상 시키는 것을 확인하게 되었습니다.

 

- Faster R-CNN vs Mask R-CNN

Mask R-CNN은 Faster R-CNN에 mask 브랜치만 추가한 것으로 그 구조가 간단합니다.

 

Faster R-CNN :  classification + bounding-box regression branch

Mask R-CNN  : classification + bounding-box regression + mask branch

 

위의 Figure 1과 같이 RPN으로 부터 얻은 ROI에 대해 class label, bounding-box, mask 3개 브랜치로 나뉘어 처리하게 됩니다. mask 브랜치는 기존의 Faster R-CNN이 가지지 못했던 pixel-to-pixel alignment를 가능하게 합니다.

 

3개의 브랜치에 대해 parallel하게 학습을 하는 multi-task loss를 정의하게 됩니다. 

 

mask 브랜치는 각각의 ROI에 대해 다음과 같은 output dimension을 가집니다. K는 클래스 개수이고, m은 m x m 오브젝트 마스크 크기입니다.

기존의 FCN의 경우 per-pixel softmax + multinomial cross-entropy loss를 사용하여 classification과 segmentation이 decoupling 되지 않았는데, Mask R-CNN의 경우 per-pixel sigmoid + binary loss를 사용함으로써 classification과 segmentation를 decoupling 함으로써 더 좋은 instance segmentation 결과를 얻게 되었습니다.

 

* 참고: https://gombru.github.io/2018/05/23/cross_entropy_loss/

 

- ROIAlign

기존의 문제점, 반올림후 ROI Pooling, 원본과 align이 어긋나게됨

ROIPool을 통해 small feature map(7x7)을 각각의 ROI로 부터 만들어냅니다. 이때에 7x7을 만들기 위해 stride=16을 사용하여 연속되는 좌표계인 x에 대해 [x/16] 다음과 같이 연산을 수행합니다. ([.]는 반올림) 이때에 ROI와 추출된 feature간에 misalignment가 발생합니다. classification에는 이러한 misalignment 큰 영향을 주지 않으나, 픽셀단위로 정확한 mask를 예측하는데는 나쁜 영향을 주게 됩니다. 

이러한 이슈를 해결하기 위해 기존에 [x/16]에서 반올림 부분을 빼고 x/16로 계산합니다. 또한 각각의 ROI 영역에 대해 4개의 sample point에 대해 bilinear interpolation을 수행합니다. 그리고 그 결과에 대해 max 또는 average로 합칩니다.

위와 같이 bilinear interpolation을 통해 weight sum을 계산후 하나의 subset 값을 구합니다.

 

이렇게 구한 모든 subset에 대해 max 또는 average pooling을 수행합니다.

 

ROIAlign 네트워크 구조

- Network Architecture

네트워크에 대한 성능 평가는 여러 head architecture에 대해 실험을 하였습니다. (ResNet과 FPN)

 

 

- 연구 결과 

아래의 Table1의 연구 결과에서 알 수 있듯이 기존 방법보다 Mask R-CNN이 우세하였으며, 특히 Table2 (a)의 결과처럼 backbone의 네트워크 깊이가 깊어질 수록 성능이 더 좋음을 알 수 있습니다. Table2 (b)의 경우 mask loss를 sigmod+binary loss의 경우 더 좋은 성능을 보여줌을 알 수 있습니다. Table2 (c)는 ROIAlign 방법이 가장 우수함을 보여주고 있습니다. Table2 (d)는 misalignment가 주는 성능 차이를 ROIPool과 ROIAlign의 비교를 통해 보여주고 있습니다. Table2 (e)의 경우 mask branch에 대해 MLP로 구성하는 것보다 FCN으로 구성하는 것이 공간 정보를 활용하는 측면에서 더 좋은 성능 보여주고 있음을 알 수 있습니다.

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함