Mask R-CNN
Abstract
객체 인스턴스 분할(object instance segmentation)
인스턴스 세그먼테이션의 목표는 이미지에서 특정 객체를 감지하고 관심 객체 주위에 마스크를 만드는 것이다. 단순 경계 상자 대신에 마스크가 결과인 객체 감지로 간주 할 수 있다.
객체 인스턴스 분할을 위한 개념적으로 단순, 유연, 일반적인 프레임워크를 제시한다. 각 인스턴스에 대해 고품질 분할 마스크를 생성, 이미지의 객체를 효율적으로 감지한다. 이는 Mask R-CNN 방법으로, 경계 상자 인식를 위해 기존 branch와 함께 병렬적으로 객체 마스크를 예측하기 위한 branch(분기)를 추가함으로써 Faster R-CNN을 확장한다.
Mask R-CNN은 훈련하기 간단하고, 5fps로 작동하는 Faster R-CNN으로 오직 약간의 오베헤드만 더한다. 다른 작업들에 일반화하기 쉽다. e.g. 같은 프레임워크에서 인간 자세를 추정하는 것.
인스턴스 세분화, 경계 상자 객체 탐지, 사용자 키포인트 탐지 등 COCO 과제 세 가지 트랙 모두에서 상위 결과를 보여준다. (+)
1. Introduction
우리의 목표!
인스턴스 분류를 위해 비교 가능한 프레임워크를 개발하는 것.
->인스턴스 분할은 각 인스턴스를 정밀하게 분할하는 동시에 영상의 모든 개체를 정확하게 감지해야 하기 때문에 어렵다.
개체 감지와 경계 상자를 사용하여 object를 분류하고 의미 세분화(각각 국소화하는 것이 목표)의 요소들을 결합하여, 개체 인스턴스를 구분하지 않고 각각의 픽셀을 고정된 범주로 분류하는 것!
좋은 결과를 얻기 위해서는 방법이 복잡하다
But, 단순, 유연, 빠른 시스템으로 이전의 최첨단 인스턴스 분할 결과를 능가할 수 있다!
우리의 방법, Mask R-CNN은 각 관심 영역(RoI)에서 분할 마스크를 예측하기 위한 분기를 분류 & 경계 상자 회귀 분석을 위한 기존 분기와 병행하여 추가함으로써 Faster R-CNN을 확장한다.
Mask branch
: 각 RoI에 적용되는 작은 FCN(Fully Convolutional Network)으로, pixel-to-pixel 방식으로 분할 마스크를 예측. 적은 계산의 오버헤드만 추가하여 더 빠른 시스템과 실험이 가능.
Mask R-CNN
: 다양하고 유연한 아키텍처 디자인을 유용하게 하는 Faster R-CNN을 통해 구현과 훈련.
Faster R-CNN의 직관적인 확장이지만, 마스크 분기를 적절하게 구성하는 것이 중요.
Faster R-CNN은 네트워크 입/출력 사이가 pixel-to-pixel alignment(정렬)이 아니다.
객체 수준 인식을 위한 유연한 프레임워크로 보다 광범위하게 볼 수 있고, 복잡한 작업으로 쉽게 확장할 수 있다.
2. Related Work
R-CNN : bounding-box 객체 탐지에 대한 지역 기반 CNN(R-CNN) 접근법은 관리가능한 수의 후보 객체 지역 [42,20]에 참여하고, 각 RoI에서 독립적으로 convoltional networks를 평가한다.
RoIPool을 사용한 feature map에서 RoIs에 참여할 수 있도록 확장하여 빠른 속도와 정확도 향상을 이끌었다.
Faster R-CNN은 Region Proposal Network(RPN)로 주의 메커니즘을 학습함으로써 stream을 발전시켰다. 유연하고 강력하고, 여러 벤치마크에서 현재 선도적인 프레임워크이다.
Instance Segmentation
3. Mask R-CNN
Mask R-CNN은 개념적으로 단순하다 : Faster R-CNN은 각 후보 객체에 대한 두 개의 출력이 있다. (class label & bounding-box offset) Mask R-CNN은 여기서 객체 마스크를 출력하는 세번재 분기를 추가하는, 자연스럽고 직관적인 발상이다. 추가한 마스크 출력은 class label & bounding-box offset과 구별되므로 객체의 훨씬 미세한 배치를 추출해야 한다.
Faster R-CNN : Faster R-CNN는 두 단계로 구성된다. 첫 번째 단계는 RPN(Region Proposal Network)으로 후보 객체 경계 상자를 제안한다. 두 번째 단계는 Fast R-CNN으로 각각의 후보 상자에서 RoIPool을 사용하여 feature를 추출하고, 분류 및 경계상자 회귀분석을 수행한다. 두 단계가 사용하는 특징을 공유하여 추론을 더 빨리 할 수 있다.
Mask R-CNN : Faster R-CNN의 두 단계와 동일한 절차이다. 2단계에서 class & box offset 의 예측과 Mask R-CNN이 각 RoI에 대해 바이너리 마스크를 출력한다. 이는 마스크 예측에 따라 분류가 달라지는 가장 최근의 시스템과 대조적이다. 우리는 경계 상자 분류와 회귀를 병렬적으로 적용하는 Fast R-CNN의 접근방식을 따른다!
훈련 중에 샘플링된 각 RoI에 대한 multi-tast loss을 다음과 같이 정의한다.
마스크 분기는 각 RoI에 대해 Km^2 차원 출력을 가지며, 각 K 클래스마다 m*m k개의 바이너리 마스크를 인코딩한다. 우리는 여기에 per-pixel 시그모이드를 적용한다.
ground-truth class k와 관련된 RoI의 경우, Lmask는 k번째 마스크에서만 정의된다. (다른 마스크 출력은 손실에 기여하지 않는다.)
Mask Representation : 마스크는 입력 객체의 공간 레이아웃을 인코딩한다. FC 레이어에 의해 불가피하게 short 출력 벡터로 축소되는 클래스 라벨이나 박스 오프셋과 달리, 마스크의 공간 구조를 추출하는 것은 convoltions에 의해 제공된 pixel-to-pixel 통신에 의해 자연스럽게 다루어질 수 있다.
FCN을 사용하여 각각의 RoI로부터 m*m 마스크를 예측한다.
pixel-to-pixel은 그 자체가 작은 피처 맵인 RoI 피처를 잘 정렬하여 픽셀당 명시적인 공간적 서신을 충분히 보존할 것을 요구한다. 이는 마스크 예측에 핵심적인 역할을 하는 RoIAlign 레이어를 개발하도록 했다.
RoIAlign : 각 RoI에서 작은 피처맵(7*7)을 추출하기 위한 표준 작업이다. RoIPool은 먼저 RoI를 정량화하고, 정량화된 RoI는 자체 정량화된 공간 bin으로 세분화되며, 마지막으로 각 빈에서 다루는 feature값이 (max pooling에 의해) 집계된다.
e.g. 정량화는 [x/16]을 계산함으로써 연속 좌표 x에 대해 수행된다. 여기서 16은 feature 보폭이고 []는 반올림이다. 또한, 빈을 나눌 때에 정량화를 수행한다.(7*7)
정량화는 RoI와 추출된 형상 사이에 오정렬(misalignments)을 도입한다. 이것은 작은 번역에도 강한 분류에 영향을 미치지 않을 수 있지만 정밀한 픽셀 마스크 예측에는 부정적 영향이 크다. (-)
-> RoIPool의 과한 정량화를 제거!
-> 추출한 feature를 입력에 적절하게 맞추는 RoIAlgin 레이어를 제안!!
: RoI 경계나 빈의 정량화를 피한다. ([x=16] 대신 x=16 사용)
bilinear interpolation를 통해 정확한 값을 계산한다.
interpolation (보간법)
알고 있는 데이터 값들을 이용하여 모르는 값을 추정하는 방법의 한 종류이다. 다항식 보간법을 많이 사용한다.
1차 보간법 (선형 보간법)
두 개의 점이 주어졌을 경우에 그 두 점을 지나는 함수를 직선의 방정식으로 나타내는 것을 말한다. 점 사이의 간격이 작을수록 더욱 정확한 근사해를 얻을 수 있다.
2차 보간법
서로 다른 세점 x1, x2, x3 에서의 각 값이 y1, y2, y3인 2차 다항식을 이용하여 다른 x점에서의 근사값을 얻는 방식이다.
bilinear interpolation (이중선형보간법)
2차원 보간법의 하나로서, 먼저 한 방향으로 보간한 다음에 이에 수직한 방향으로 보간한다. 중합속도를 보간할 때 종종 이 방법을 쓰는데, 이 때 먼저 속도 분석점들 사이에서 시간적으로 보간한 다음, 속도 분석 위치들 사이에서 공간적으로 보간한다. 이 방법은 속도 변화율의 불연속을 유발할 수 있다.
각 RoI bin에 정기적으로 샘플링된 4개의 위치에 feature 입력한 후 결과를 집계한다.
정량화를 안하면 정확한 표본 추출 위치 또는 샘플링되는 점수에 민감하지 않다.
Network Architecture :
(i) 전체 이미지에 대한 feature 추출에 사용되는 콘볼루션 백본 아키텍처
(ii) 경계 상자 인식을 위한 네트워크 헤드(분류, 회귀) & 각 RoI에 개별적으로 적용되는 마스크 예측
network-depth-features 사용하여 백본 아키텍처를 본다.
깊이 50 또는 101 레이어를 가진 ResNet 네트워크를 평가한다. ResNets를 사용한 Faster R-CNN의 오리지널 구현은 우리가 C4라고 부르는 4단계의 최종 convolitonal layer에서 feature를 추출했다.
(e.g. ResNet-50를 사용하는 백본은 ResNet-50-C4로 표시된다. [19,10,21,39]에서 사용되는 일반적인 선택이다.)
FPN(Feature Pyramid Network) : lateral connections이 있는 top-down 아키텍처 사용하여 단일 스케일 입력에서 네트워크 내 feature 파라미드를 구축한다.
FPN 백본으로 Faster R-CNN은 스케일에 따라 피처 파라미드의 다른 레벨에서 RoI 피처를 추출하지만, 그렇지 않은 경우에는 바닐라 ResNet과 접근 방식이 유사하다.
Mask R-CNN으로 피처 추출에 ResNet-FPN 백본을 사용하는 것은 정확도와 속도 모두에서 훌륭한 이득이다.
네트워크 헤드의 경우, 우리는 ResNet와 FPN문서에서 Faster R-CNN 헤드를 확장한다.
ResNet-C4 백본 헤드는 계산 집약적인 5단계 ResNet을 포함한다.
FPN의 경우, 백본은 이미 res5를 포함하므로 필터들을 더 적게 사용하는 헤드가 효과적이다.
기존 Faster R-CNN 헤드를 확장한다.
conv는 공간적 차원을 보존하는 반면 deconv는 공간적 차원을 증가시킨다.
모든 Convs는 출력 conv 1*1을 제외하고 3*3이고, deconvs는 2*2 stride 2이고, hidden 레이어에 RELU을 사용한다.
3-1. Implementation Details
우리는 Fast/Faster R-CNN 작업에 따라 하이퍼 파라미터를 설정한다.
Training : Fast R-CNN에서 RoI가 최소 0.5의 ground-truth 박스를 가진 IoU를 가진 경우는 양성으로, 그렇지 않으면 음성으로 간주된다. 마스크 손실 Lmask는 오직 양성 RoIs에만 정의된다. 마스크 대상은 RoI와 관련된 ground-truth 마스크 사이의 교차점이다.
이미지-중심 훈련을 채택!!
이미지 크기는 스케일(가장자리)이 800 픽셀이 되도록 조정한다.
각 mini-batch는 GPU 당 2개 이미지를 가지고, 각 이미지는 샘플링된 RoI가 N개 있으며 양성 : 음성 비율이 1:3이다. C4 백본은 N이 64이고 FPN은 N이 512이다.
16만 번의 반복으로 8개의 GPU로 훈련하고, 학습률은 0.02이다.
(120만 번의 반복으로 10개가 감소한다.
우리는 0.0001의 무게 감소와 0.9의 운동량을 사용한다.
ResNeXt를 사용하여 GPU당 이미지 1개를 훈련하고, 시작 학습률은 0.01이다.
Inference : test할 때, C4 백본은 300이고, FPN은 1000을 제안한다. 보다 정확하고 적은 수의 Rols를 사용한다. Mask R-CNN은 상위 100개 탐지 상자에서 마스크만 계산하므로 Faster R-CNN에 작은 오버헤드를 추가한다는 점에 유의한다.
4. Experiments : Instance Segmentation
AP(IoU 임계값에 대한 평균), AP50, AP75 및 APS, APM,APL을 알아본다.
4.1 Main Results
우리 모델의 모든 인스턴스화는 이전 최신 모델의 기본 변형을 능가한다.
4.2 Ablation Experiements
우리 모델의 모든 인스턴스화는 이전 최신 모델의 기본 변형을 능가한다.
course.fast.ai/videos/?lesson=1
'Stay Hungry Stay Foolish > 논문 정리' 카테고리의 다른 글
[논문 정리] Memory Enhanced Global-Local Aggregation for Video Object Detection (0) | 2020.12.07 |
---|---|
[논문 정리] Object Detection in the Context of Mobile Augmented Reality (2) | 2020.11.09 |
[논문 정리] Mask R-CNN (2) (0) | 2020.09.02 |
[논문 정리] Understanding the difficulty of training deep feedforward neural networks (0) | 2020.09.02 |
[논문 정리] Fixup 초기화 방법 : norm없는 잔차 학습 (2) | 2020.09.01 |
댓글