본문 바로가기
논문 리뷰/CV

[X:AI] Mask R-CNN 논문 리뷰

by hyeon827 2024. 5. 6.

Mask R-CNN

 

Mask R-CNN

We present a conceptually simple, flexible, and general framework for object instance segmentation. Our approach efficiently detects objects in an image while simultaneously generating a high-quality segmentation mask for each instance. The method, called

arxiv.org

 

 

 

 

2024_5기_Base_Session_Mask RCNN_조현식.pdf
2.83MB

 

 

 

Abstract

  • 본 연구진은 object instance segmentation을 위한 간단하고 유연한 Mask R-CNN 모델 제시
  • Mask R-CNN은 이미지 속 object를 효율적으로 detect하면서 동시에 각 instance에 대해 high-quality segementation mask를 생성
  • Mask R-CNN은 기존의 Faster R-CNN에서 bounding box recognition을 위한 branch와 평행하게  object mask를 예측할 수 있는 branch를 더한 형태
  • 해당 모델은 학습하기 쉬우며 Faster R-CNN에서 약간의 overhead만 추가하고, 초당 5 fps으로 동작
  • 또한, Mask R-CNN의 유연성으로 인해 다양한 CV tasks에 적용하기 용이하다 장점
  • Mask R-CNN은 COCO의 세 가지 도전 분야(instance segmentation, bounding-box object detection, person keypoint detection) 모두에서 좋은 결과를 보여주었으며, 동시대에 공존하는 모든 single-model에 대해 가장 좋은 성능
  • Object Detection : 이미지 내에서 여러 객체를 식별하고 각 객체의 위치를 사각형의 bounding box로 표시
  • Semantic Segmentation : 이미지를 픽셀 수준에서 분석하여 각 픽셀이 어떤 카테고리에 속하는지 분류, 동일한 카테고리에 속하는 개별 객체들은 구분하지 않고 하나로 간주
  • Instance Segmentation : Segmantic Segmentation을 더 발전시켜, 동일한 객체 유형에 속하는 개별 인스턴스까지 구분

출처 : https://byeongjokim.github.io/posts/YOLACT,-Real-time-Instance-Segmentation/

 

 

1. Introduction

  • Fast/Faster R-CNN, FCN과 같은 강력한 basline system 덕분에 vision community에서 Object Detection과 Semantic Segmentation이 짧은 시간 안에 매우 빠른 발전을 이룸
  • 따라서 본 논문에서의 목표는 Instance Segmentation에서 이러한 역할을 하는 프레임워크를 만드는 것
  • Instance Segmentation은 이미지 속 객체를 정확하게 detection하면서도 각 instance를 정밀하게 segment해야 하기 때문에 매우 어려운 task
  • Instance Segmentation = Object Detection + Semantic Segmentation
  • 이를 바탕으로 매우 복잡한 method가 필요할 것으로 예상되지만, 놀랍게도 본 논문에서는 단순하고 유연하고 빠른 시스템을 제안
  • Mask  R-CNN은 Faster R-CNN을 확장하여 각 RoI(Region of Interest)에 대해 segmentation masks를 예측하는 branch를 추가
  • mask branch는 각 RoI에 적용되는 작은 FCN(Fully Convolutional Network)으로, 각 pixel의 segmentation mask를 예
  • Mask R-CNN은 Faster R-CNN 기반으로 학습시키면 되기 때문에 적용하기에 간단하고 유연하게 많은 아키텍처 디자인에 적용하기 용이
  • 또한, mask branch는 작은 computational overhead만 더하기 때문에 추가적인 계산 부담이 크게 증가하지 않고 이로 인해 시스템 속도가 크게 저하되지 않음
  • Mask R-CNN이 좋은 성능을 내기 위해서는 mask branch를 올바르게 구축하는 것이 중요
  • Faster R-CNN은 object detection을 위한 모델로 input과 output 사이의 pixel-to-pixel alignment을 위해서 제작되지 않음 (객체 경계를 세밀하게 추출할 수 X)
  • 따라서 Mask R-CNN은 이를 해결하기 위해서 RoIPool 대신 RoIAlign 방식을 이용하여 spatial location 보존
  • Faster R-CNN에서 RoI pooling을 사용하는 이유: 사이즈가 다른 RoI를 Faster R-CNN의 FC Layer의 input으로 넣기 위해 고정된 크기의 feature로 만듦
  • RoIAlign을 이용한 결과 mask의 정확도가 10%에서 50% 증가
  • 또한, mask prediction과 class prediction을 분리함으로써 mask prediction을 할 때 다른 class를 고려할 필요 없이 binary mask만 예측하면 됨 -> 성능 향상에 기여

 

2. Related Work

 

   1) R-CNN

  • Input 이미지를 가지고 selective search를 진행하여 물체가 존재할 것 같은 지역(RoI)를 2000개 정도 뽑음
  • 이렇게 뽑아낸 RoI들은 각각 다른 크기와 위치를 가진다. 따라서 CNN에 입력으로 들어가기 위해 crop & wrap 하여 고정된 크기 형태로 만듦
  • 각각의 RoI들을 ConvNet으로 돌려 feature vector 추출
  • 추출된 feature vector들을 SVMs을 이용하여 어떤 클래스에 해당되는지, 그리고 Regressor를 이용하여 정확한 물체의 위치가 어딘지 bounding box를 조절
  • 주된 단점은 각 후보 영역을 독립적으로 처리해야 하는 계산 비효율성이 존재해 처리 속도가 느림

출처 : https://bigdaheta.tistory.com/60

 

   2) Fast R-CNN

  • 각 RoI마다 CNN을 수행하지 않고 Input 이미지에 대해 ConvNet을 돌림(전체 이미지에 대한 고해상도 feature map을 얻음->이미지의 미세한 특징 더 잘 보존)
  • 생성된 feature map을 가지고 region proposal method를 통해 RoI 추출(CNN의 feature를 여러 RoI가 공유->필요한 계산량을 대 줄여, 더 빠른 처리 속도 가능)
  • RoI pooling 기법을 이용하여 추출된 각 RoI에 대해 고정된 크기의 feature map을 생성
  • FC layer로 넘어가 각 RoI에 대해 객채의 종류를 classification하고 객체의 정확한 위치를 조정하기 위해 bounding box regression을 수행

출처 :  https://bigdaheta.tistory.com/60

 

 

   3) Faster R-CNN

  • 기본적은 selective search가 CPU상에서 돌아가도록 라이브러리가 설계됨
  • 따라서 R-CNN과 Fast R-CNN 모두 CPU에서 region proposal 진행하기 때문에 속도가 느림
  • Faster R-CNN은 이러한 점을 보안하기 위해 region proposal을 위한 모든 연산을 GPU상에서 진행하는 RPN(Region Proposal Network) 제안
  • RPN은 region proposal을 진행하는 network로, feature map을 보고 어느 곳에 객체가 있을지 예측
  • 이후 과정은 Fast R-CNN과 동일

출처 :https://bigdaheta.tistory.com/60

 

 

3. Architecture

 

   Faster R-CNN

  • two-stage로 구성
  • 1 step) RPN(Region Proposal Network) - feature map에서 후보 bounding box들을 제안
  • 2 step) 각 후보 box에 대해서 RoIPool을 이용하여 feature를 추출하고, classification과 bounding-box regression 수행

   Mask R-CNN

  • Mask R-CNN도 two-stage로 구성
  • 1 step) Faster R-CNN과 동일
  • 2 step) Predict class, box offset, 각각의 RoI에 대한 binary mask 동시 수행

출처 : https://devforest.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Mask-R-CNN

 

 

   Mask Representation

  • Mask는 input object의 spatial layout를 encode 함(즉,객체가 이미지 내에서 어디에 위치하고 있는지, 그 형태와 경계가 어떻게 되는지를 나타냄)
  • 각 RoI마다 FCN을 적용하여 공간 정보 손실을 최소화하면서 mask를 예측
  • 실험 결과 FC Layer를 사용하는 것보다 파라미터 수도 휠씬 줄고 정확도가 높게 나옴

    *AP(Average Precision) : 모델이 예측한 객체 경계 상자가 실체 객체와 얼마나 잘 일치하는지를 종합적으로 평가

    *AP50 : 모델이 예측한 경계 상자가 실제 객체와 최소 50% 이상 겹칠 때의 정밀도(상대적으로 관대한 평가 기준)

    *AP75 : 모델이 예측한 경계 상자가 실제 객체와 최소 75% 이상 겹쳐야 됨

 

 

   RoIPool (Mask R-CNN 사용 X)

  • Faster R-CNN은 object detection을 위한 모델이였기 때문에 RoIPool 과정에서 정확한 위치정보를 담는 것은 별로 중요하지 않았음
  • RoIPool방식 Quantization 해주고 나서 Pooling 해주는 것 (RoI가 소수점 좌표를 가지고 있으면 각 좌표를 반올림하여 Pooling 하는 것)
  • 이렇게 되면 input image의 위치정보가 왜곡되어 classification을 하는데 문제가 안되지만 instance segmentation task 수행 시 문제 발생 

출처 : https://www.slideshare.net/TaeohKim4/pr057-mask-rcnn

 

   

   RoIAlign (Mask R-CNN 사용 O)

  • Quantization 과정을 제거하고 부동 소수점 좌표를 그대로 사용
  • bilinear interpolation을 수행함으로써, 위치 정보의 정확성 크게 개선

 

출처 :https://www.slideshare.net/TaeohKim4/pr057-mask-rcnn

 

  • RoIAlign을 사용하는 것이 더 좋은 성능을 보임

 

 

   Loss Function

  • Mask R-CNN은 아래와 같이 구성된 multi-task loss function을 통해 모델 학습
  • classification loss(Lcls), bounding box loss(Lbox)는 Faster R-CNN과 동일한 loss 사용 + mask loss(Lmask)

    Lmask

  • Mask R-CNN은 class branch와 mask branch를 분리하였기 때문에 
  • -> mask branch에서 나온 각 픽셀의 출력값에 sigmoid 함수 적용(0~1 사이의 확률 값으로 변환)
  • -> binary cross entropy loss 적용

출처 : https://devforest.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Mask-R-CNN

 

  • Multinomial mask보다 per-class binary mask를 이용하는 것이 더 좋은 성능을 보임

 

   

   Network Architecture

  • ResNet, ResNeXt, FPN(Feature Pyramid Network)을 backbone으로 사용한 Faster R-CNN (회색 부분)
  • 해당 모델에 mask branch 얹어서 mask 예측 수행

 

 

  • 네트워크 깊이가 깊을수록 좋은 성능을 보임
  • ResNeXt-101을 사용한 FPN을 backbone으로 적용한 모델이 가장 좋은 성능

 

 

4. Experiments

  • Instacne segmentation 모델 성능 비교
  • COCO 2015, 2016 segmentation challenge에서 수상한 MNC와 FCIS의 성능을 뛰어넘은 것을 확인
  • 그 중 ResNet-101-FPN을 backbone으로 하는 Mask R-CNN이 FCIS+++보다 훨씬 우수한 성능을 보임

 

 

  • Object detection 성능 비교
  • RoI Align을 사용했더니 1.1% 성능 향상
  • mask branch를 더했을 때 0.9% 추가 상승
  • ResNeXt-101-FPN을 backbone으로 사용한 Mask R-CNN 모델이 가장 좋은 성능을 보임

 

 

  • 기존의 Faster R-CNN에서 mask branch를 추가해서 mask를 예측할 수 있게 됨
  • 사람의 keypoint를 location하는 또 하나의 branch를 추가하면 학습이 잘 될거라고 가정
  • 실험 결과 기존의 Keypoint detection 모델보다 더 좋은 성능을 보임

 

 

5. Conclusion

  • Mask R-CNN은 Faster R-CNN에 작은 FCN만 추가하고, RoI Align 기법을 적용하여 Instance Segmentation을 가능하게 함

6. Reference

https://kubig-2023-2.tistory.com/60

https://devforest.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Mask-R-CNN

https://bigdaheta.tistory.com/60

https://www.youtube.com/watch?v=RtSZALC9DlU&t=18s

'논문 리뷰 > CV' 카테고리의 다른 글

[X:AI] Grad-CAM 논문 리뷰  (0) 2024.07.06
[X:AI] Taskonomy 논문 리뷰  (0) 2024.05.21
[X:AI] SegNet 논문 리뷰  (0) 2024.04.09
[X:AI] EfficientNet 논문 리뷰  (0) 2024.04.03
[X:AI] U-Net 논문 리뷰  (0) 2024.03.27