티스토리 뷰

작성자 1 : 한양대학원 융합로봇시스템학과 유승환 석사과정 (CAI LAB)

작성자 2 : 한양대학교 로봇공학과 정석훈 학부생

 

 오늘은 Pixel 단위로 물체를 localize하는 Segmentation 모델인 Mask R-CNN 논문 리뷰를 하겠습니다~! 논문 스터디 스타트~!!


링크 0 (승환 논문 리뷰 링크 모음) : github.com/RobotMobile/cv-deep-learning-paper-review/blob/master/README.md

 

RobotMobile/cv-deep-learning-paper-review

Contribute to RobotMobile/cv-deep-learning-paper-review development by creating an account on GitHub.

github.com

 

링크 1 (원문) : arxiv.org/pdf/1703.06870.pdf

 

링크 2 (참고 블로그) : ganghee-lee.tistory.com/40

 

(논문리뷰&재구현) Mask R-CNN 설명 및 정리

이전글 : (논문리뷰) Faster R-CNN 설명 및 정리 Faster R-CNN 설명 및 정리 이전글 : Fast R-CNN 설명 및 정리 Fast R-CNN 설명 및 정리 이전글 : Object Detection, R-CNN 설명 및 정리 Object Detection, R-CNN..

ganghee-lee.tistory.com


0. Abstract

<Mask R-CNN 소개>

Mask R-CNN results on the COCO test set (출처 : 원문)

  - 이미지 내에서 instance(object)에 대한 segmentation mask 생성 (Classification + Localizing(pixel))

      * mask : object detection의 box가 pixel 수준으로 정교해졌다고 생각하면 됩니다!

  - Mask R-CNN = Faster R-CNN + mask branch

      * mask branch : object의 mask를 예측하는 branch

  - Mask R-CNN은 5 fps 정도의 속도가 나오며, human pose estimate에서도 사용됨

      * 오늘 포스팅의 주 목적은 segmentation으로 human pose estimate에 대해서는 생략하겠습니다!

human pose estimate (출처 : 원문)

  - Mask R-CNN은 COCO 2016 challenge에서 1등을 차지 --> 성능 확실!!


1. Introduction

<연구 목표>

  - instance segmentation task에서 사용 가능한 딥러닝 프레임워크개발하는 것

      * instance segmentation은 같은 class여도 다른 객체로 인식 (사람 1, 사람 2 ...)

<Mask R-CNN 구조>

Mask R-CNN 프레임워크 (출처 : 원문)

  - Mask R-CNN의 구조는 Faster R-CNN의 각 RoI(Region of Intereset)에 대해 pixel 단위 segmentation mask를 예측하는 branch 추가

  - mask branch는 classification, bounding box regression branch와 독립적이며 small FCN(Fully Convolution Network)

  - Mask R-CNN은 구현하기 쉬우며, mask branch는 small FCN이기 때문에 연산 속도도 뛰어남

 

<Mask R-CNN과 Faster R-CNN의 차이 : RoIAlign>

  - Faster R-CNN은 pixel 단위의 segmentation을 위해 설계되지 않았음

  - 이를 해결하기 위해 RoIAlign이라는 간단하면서 정확한 공간 정보를 보존하는 레이어를 제안

  - RoIAlign은 mask 정확도Faster R-CNN보다 10~50% 높게 만듦

  - 또한 class에 대한 binary mask를 독립적으로 예측하고 네트워크의 RoI classification branch에 의존하여 class 예측함으로써 FCN보다 정확한 instance segmentation을 할 수 있음


2. Related Work

<R-CNN>

  - R-CNN : ropiens.tistory.com/73

 

R-CNN : Region-based Convolutional Networks forAccurate Object Detection and Segmentation 리뷰

작성자 : 한양대학원 융합로봇시스템학과 유승환 한양대학교 로봇공학과 정석훈  오늘은 CNN 계열의 Object Detection의 부모와 같은!! R-CNN 논문 리뷰를 진행해보겠습니다~! (segmentation에 대한 내용은

ropiens.tistory.com

  - Fast R-CNN : ganghee-lee.tistory.com/36

 

(논문리뷰) Fast R-CNN 설명 및 정리

이전글 : (논문리뷰) R-CNN 설명 및 정리 컴퓨터비전에서의 문제들은 크게 다음 4가지로 분류할 수 있다. 1. Classification 2. Object Detection 3. Image Segmentation 4. Visual relationship 이중에서 4. Visu..

ganghee-lee.tistory.com

 

  - Faster R-CNN : Fast R-CNN + RPN(Region Proposal Network) ganghee-lee.tistory.com/37

 

(논문리뷰&재구현) Faster R-CNN 설명 및 정리

이전글 : (논문리뷰) Fast R-CNN 설명 및 정리 Fast R-CNN 설명 및 정리 이전글 : Object Detection, R-CNN 설명 및 정리 Object Detection, R-CNN 설명 및 정리 컴퓨터비전에서의 문제들은 크게 다음 4가지로 분..

ganghee-lee.tistory.com

 

<Instance Segmentation>

  - segment proposals를 기본으로 다양한 연구 등장

 

  - (과거) DeepMask (특징 : buttom-up segments) : towardsdatascience.com/review-deepmask-instance-segmentation-30327a072339 

 

Review: DeepMask (Instance Segmentation)

An Instance Segment Proposal Method Driven by Convolutional Neural Networks

towardsdatascience.com

 

  - (최신) FCIS (fully convolutional instance segmentation) :  

medium.com/@msmapark2/fcn-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-fully-convolutional-networks-for-semantic-segmentation-81f016d76204

 

FCN 논문 리뷰 — Fully Convolutional Networks for Semantic Segmentation

딥러닝 기반 OCR 스터디 — FCN 논문 리뷰

medium.com

  - 아래와 같이 일반적인 CNN 아키텍쳐의 마지막 FC층을 conv층으로 변경함으로써 이미지의 위치 정보를 보존


3. Mask R-CNN

<Mask R-CNN>

(1) Mask R-CNN 구조

  - stage 1 : RPN (Region Proposal Network)

  - stage 2 : Predict the class, box offset and a binary mask for each ROI

 

(2) Loss Function

  - multi-task loss 적용

  - total loss = Loss_class + Loss_box + Loss_mask

  - 위 수식을 보면 class, box, mask loss는 독립적인 것을 알 수 있음

      * ex) Loss_mask가 Loss_class에 영향 주지 않음

  - Loss_mask : Km^2 차원 (K : class 갯수, m : 이미지 해상도), average binary cross-entropy loss 사용

      * binary cross entropy loss란? : curt-park.github.io/2018-09-19/loss-cross-entropy/

  - Semantic Segmentation의 경우, 픽셀마다 class와 mask를 예측함 --> 과한 계산량

  - 본 연구에서는 class 예측과 mask 예측이 독립적으로 이루어지기 때문에 연산 절약 가능

 

[손실함수] Binary Cross Entropy

확률, 정보이론 관점에서 살펴보는 Binary Cross Entropy 함수

curt-park.github.io

출처 : 위 BCE 링크

 

<Mask Representation>

(1) Mask와 class, box의 layer 차이

  - mask :  input object의 spatial(공간) layout의 encode 결과

  - class, box 정보들은 FC(Fully Connected) layers에 의해 고정된 vector로 변환되기 때문에 공간적 정보 손실 발생

  - 그러나 maskconvolutions 연산에 의해 공간적 정보 손실을 최소화 할 수 있음 (Fully Convolution Networks)

  - Fully Convolution Networks를 사용하여 각 RoI에서 m x m 크기 mask를 예측 가능

  - 즉 mask는 FC layer에 의해 1차원 벡터로 축소되지 않고, m x m 형태로 공간 정보 유지 가능

  - 또한 FC lyaer 보다 더 적은 파라미터 수가 사용되어, 연산 속도가 빠르고 정확함

 

(2) RoIAlign layer를 만들게 된 계기

  - mask 정보를 m x m 형태로 보존하기 위해선, RoI feature가 요구

  - 이를 위해 RoIAlign layer를 만듦 

 

<RoIAlign>

(1) RoIPooling

  - RoIPool각 RoI에서 small feature map를 extract하기 위한 표준 연산

      * RoIPool : 다른 사이즈의 Region Proposal이 들어와도, max pooling을 이용하여 output size를 동일하게 만듦 (Faster R-CNN에서 나오는 개념)

RoI Pooling // 출처 : 위 Faster R-CNN 링크

  - RoIPool은 RoI를 feature map으로 quantization하게 되는 데, 이 과정에서 RoI와 추출된 feature 사이에 오정렬을 초래함

  - 이는 pixel 단위로 예측하는 mask에 큰 악영향을 끼침

  - 이러한 단점을 해결하기 위해 extract한 feature를 input에 적절하게 정렬하는 RoIAlign layer를 제안

 

(2) RoIAlign

  - RoIAlign layer를 simple

  - bilinear interpolation 연산을 사용하여 각 RoI bin샘플링된 4개의 위치에서 input feature의 정확한 value를 계산

       * bilinear interpolation이란?

  - 그 후 결과를 max 혹은 average하여 집계함

      * 아래의 그림은 RoIAlign의 도식도로, 파란색 점선들은 feature map을 표시

      * 검은색 실선RoI를 의미, RoI 안의 4개의 점들각 bin의 샘플링 된 4개의 point를 의미

      * RoIAlign은 feature map에서 근접한 grid point(파란색 화살표의 시작점)bilinear interpolation 연산을 통해 각 샘플링 point를 계산

      * Faster R-CNN의 quantization은 사용되지 않음

  - 4.2절에서 RoIPool, RoIWarp(RoIAlign과 비교할 수 있는 좋은 방법) 그리고 RoIAlign의 실험 결과를 비교

RoIAlign // 출처 : 원문

 

<Network Architecture>

(1) BackBone

  - 이미지의 feature를 추출하기 위해 사용

  - ResNetResNeXt50, 101 layer과 FPN(Feature Pyramid Network)을 backbone으로 사용

    * ResNet-50-C4 : ResNet 50 layer에서 4번째 stage의 final conv layer에서 feature를 추출한다는 의미

    * ResNet : ropiens.tistory.com/32

 

ResNet : Deep Residual Learning for Image Recognition

작성자 : 한양대학원 융합로봇시스템학과 석사과정 유승환 2016년도에 나온 CNN 아키텍쳐인 ResNet에 대해 리뷰하겠다. AlexNet, VGG, GoogLeNet, ResNet은 과거에 유명했던 CNN 아키텍쳐이고, 지금도 백본으

ropiens.tistory.com

    * ResNeXt : takenotesforvision.tistory.com/12

 

[논문 리뷰]ResNeXt

흔히 알고 있는 ResNet을 한 단계 성능을 향상시킨 논문을 소개 하겠습니다. ResNeXt라고 알려져 있는 네트워크의 논문 제목은 Aggregated Residual Transformation for Deep Neural Networks라는 제목으로 2017년..

takenotesforvision.tistory.com

출처 : 위 ResNeXt 링크

      * FPN : yeomko.tistory.com/44

 

갈아먹는 Object Detection [7] Feature Pyramid Network

들어가며 오늘 살펴볼 논문은 등장할 당시에도 영향력이 엄청났지만 이 후에 등장하는 모델들에 큰 영향을 준 Feature Pyramid Network 입니다. 현재 State of the Art를 기록하고 있는 EfficientDet 모델도 이

yeomko.tistory.com

출처 : 위 FPN 링크

(2) Head

  - Bounding Box Recognition (Classification and Regression)과 Mask Prediction을 위해 사용됨

  - Faster R-CNN의 Head(Classification and Regression)에 Mask branch를 추가

  - backbone(ResNet, FPN)에 따라 Head의 구조가 달라짐

Head 아키텍쳐 // 출처 : 원문


3.1. Implementation Details

<Training>

  - Loss_mask는 오직 Positive RoI에 의해 정의됨 

      * Positive RoI : GT와의 IoU가 0.5 이상

  - 이미지들은 800 pixel로 resize

  - 미니 배치2장의 이미지가 사용됨

  - 각 이미지에는 N개의 샘플링 된 RoI가 있음

      * ResNet : N = 64

      * FPN : N = 256

  - GPU : 8개, 미니배치 사이즈 : 16, 학습 횟수 : 160,000, 학습률 : 0.02 (학습 횟수 10 ~ 120K 동안 학습률 감소됨)

  - weight decay 0.0001, momentum 0.9 사용

  - ResNeXt만 미니 배치 당 1장의 이미지, 학습률은 0.01로 셋팅. 나머지는 동일 (ResNeXt는 깊은 모델이기 때문에 이러한 조정들이 들어간 것으로 생각됩니당)

 

<Inference>

  - ResNet은 proposal 갯수가 300, FPN은 100개

  - box prediction 후 NMS(Non-Maximum Suppression) 적용

  - Mask Branchscore 점수가 높은 상위 100개 box에서 적용

  - 이는 속도와 정확도 향상에 도움 됨

  -  mask Branch는 각 RoI마다 K개의 Mask를 예측함 (K : classification branch에서 예측된 class들)


4. Experiments : Instance Segmentation

  - Mask R-CNN 과 SOTA 모델(MNC, FCIS +OHEM, FCIS+++ +OHEM)의 성능을 비교해 보았다

  - AP, AP50, AP75, APS, APM, APL 6가지를 포함하는 COCO metrics를 통해 성능을 측정하였으며 AP는 mask IoU를 의미한다

 

* COCO metrics

towardsdatascience.com/breaking-down-mean-average-precision-map-ae462f623a52

 

Breaking down Mean Average Precision (mAP)

Another metric for your data science toolkit

towardsdatascience.com

  • AP: AP at IoU= 0.50: 0.05: 0.95 (primary challenge metric)
  • AP@IoU=0.5 (traditional way of calculating as described above)
  • AP@IoU=0.75 (IoU of BBs need to be > 0.75)
  • AP^small: AP for small objects: area < 32² px
  • AP^medium: AP for medium objects: 32² < area < 96² px
  • AP^large: AP for large objects: area > 96² px

4.1. Main Results

  - Mask R-CNN이 모든 기존의 SOTA 네트워크보다 뛰어난 성능을 보였다.

  - ResNet-101-FPN을 BackBone으로 갖는 Mask R-CNN이 FCIS+++보다 우수한 성능을 보였다.

  * FCIS : Fully Convolutional Instance-Aware Semantic Segmentation (COCO 2016 segmentation challenges 우승)

Table 1. 출처 : 원문

 

  -  FCIS와 Mask R-CNN 결과 비교

Figure 6. 출처 : 원문

 

4.2. Ablation Experiments

Table 2. 출처 : 원문

  - 네트워크의 깊이가 깊을수록 성능이 좋았다 (a) : ResNeXt-101-FPN

  - Mask Branch를 분리한(decoupled) sigmoid가 성능이 더 좋았다. (b)

  - RoI Align을 통해 더 좋은 성능을 보였다 (c), (d)

  - Mask Branch에 MLP를 사용하는 것 보다 FCN을 사용하는 것이 성능이 더 좋았다 (e)

 

4.3. Bounding Box Detection Results

  - Mask output은 무시하고 Mask R-CNN을 기존의 Object Detection SOTA모델들과 결과를 비교해 보았다.

  - ResNet-101-FPN을 사용한 Mask R-CNN이 기존의 SOTA모델들보다 성능이 좋았다.

  - Box Detection에서 좋은 성능을 보이는 이유도 Multi-task Training 덕분이다.

Table 3. 출처 : 원문

 

4.4. Timing

Inference  - Nvidia Tesla M40 GPU에서 이미지 1개당 195ms

  - Mask R-CNN이 빠르더라도 아직 스피드에 최적화되진 않았다.

 

Training

  - ResNet-50-FPN을 backbone으로 하고 COCO trainval135k 데이터로 학습시켰을 때 32시간이 소요됐다.

  - ResNet-101-FPN은 44시간 소요.


 

댓글
댓글쓰기 폼