R-CNN 계열 모델 소개

R-CNN은 CNN에 Region Proposal 을 추가하여 물체가 있을법한 곳을 제안하고, 그 구역에서 object detection을 하는 것이다.

R-CNN 계열 모델은 R-CNN, Fast R-CNN, Faster R-CNN, Mask R-CNN 까지 총 4가지 종류가 있다.

R-CNN은 분류 후 회귀, Fast R-CNN, Faster R-CNN은 분류와 회귀를 병렬로, Mask R-CNN은 여기에 Masking 까지 병렬로 수행

mask R-CNN 구조

BackBone

  • 이미지의 feature 추출을 위해 사용
    • ResNet과 ResNeXt의 50, 101 layer과 FPN(Feature Pyramid Network)을 backbone으로 사용
    • FPN(Feature Pyramind Network)
  • Object Detection 분야에서 풀리지 않던 고질적인 난제인 작은 물체 탐지를 해결

  • 위 그림을 보시면 먼저 신경망을 통과하면서 단계별로 피쳐맵들을 생성.
  • 가장 상위 레이어에서부터 거꾸로 내려오면서 피처를 합쳐준 뒤, Object Detection을 진행
  • 이러한 방식을 통해서 상위 레이어의 추상화된 정보와 하위 레이어의 작은 물체들에 대한 정보를 동시에 살리면서 Object Detection 수행
  • 마지막 layer에서의 feature map 에서 이전 feature map을 더하는 것은 Upsampling 을 통해 이루어 짐.
  • 위 그림과 같이 먼저 2배로 upsampling을 한 후 이전 layer의 feature map을 1x1 Fully convolution 연산을 통해 filte개수를 똑같이 맞춰준 후 더함으로써 새로운 feature map을 생성.

Head

  • Bounding Box Recognition (Classification and Regression)과 Mask Prediction을 위해 사용됨
  • Faster R-CNN의 Head(Classification and Regression)에 Mask branch를 추가
  • backbone(ResNet, FPN)에 따라 Head의 구조가 달라짐

Faster R-CNN과 다른점


  1. Faster R- CNN에 존재하는 bounding-box 인식을 위한 branch에 병렬로 object mask branch 추가.
    • Mask R-CNN은 기존의 Faster R-CNN을 Object Detectoin 역할을 하도록 하고 각각의 ROI에 Mask segmentation을 해주는 작은 FCN(Fully Connected Network)추가.
    • 각 class별로 binary mask prediction을 수행한다. 먼저 upsampling을 한 후 클래스 수만큼의 mask(여기서는 80개)를 모조리 생성한 후 위쪽 head에서 해당 이미지의 classification을 완료하면 이를 참조하여 그 class에 해당하는 mask를 최종적으로 출력하게 된다.
    • 내가 이해한것은 위쪽에서 자동차와 사람을 구분해주면 사람 1 2 3 을 mask branch에서 구분
  2. ROI Pooling 대신 ROI Align을 사용
    • 기존 RoI Pooling은 RoI가 소수점 좌표를 가지고 있을 경우 반올림하여 Pooling을 해준다는 특징이 있다. (딱 grid 단위로 쪼개서 본다) 즉, RoI Pooling은 정수 좌표만을 처리할 수 있다. 이러한 처리는 classification 처리에서는 문제가 없지만 segmentation task에서는 위치가 왜곡되기 때문에 문제가 발생한다.
    • Mask R-CNN에서는 RoIAlign이라는 기법을 활용한다. 현재 문제는 정수 좌표만 볼 수 있다는 점이다. RoIAlign은 정수 좌표(즉, 점선으로 되어있는 grid 좌표)를 bilinear interpolation 연산을 사용하여 각 RoI bin의 샘플링된 4개의 위치에서 input feature의 정확한 value를 계산.
    • 그 후 결과를 max 혹은 average하여 집계함

bilinear interpolation : 선형보간법,알려진 지점의 값 사이(중간)에 위치한 값을 알려진 값으로부터 추정하는 것을 말한다.

Reference

FPN
Mask R-CNN 리뷰

'딥러닝 > Vision' 카테고리의 다른 글

diffusion  (0) 2023.07.04
Semantic Segmentation  (0) 2022.03.30
Object Detection  (0) 2022.03.30
CNN with pytorch  (0) 2022.02.12
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks  (0) 2021.07.25
ariz1623