일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- InfoGAN
- Image-to-image translation
- PatchGAN
- Unsupervised Representation Learning
- Generative model
- Representation learning
- xai
- Latent space
- PGGAN
- DCGAN
- Gradien Vanishing
- Ian GoodFellow
- PatchDiscriminator
- Mutual Information
- Computer Vision
- Unsupervised learning
- ICLR
- clova
- LSGAN
- Markov Random field
- self-supervised learning
- pix2pix
- conditional GAN
- Styletransfer
- StarGAN
- GAN
- Today
- Total
AI with U-Seminar, Daneil Jeong
Mask R-CNN(2017) 본문
Image Segmentation에 사용되는 모델 중 하나인 Mask R-CNN 논문입니다.
논문 링크
https://arxiv.org/abs/1703.06870
코드 링크
1. 초록
단순하고 유연하고 일반화된 object instance segmentation 프레임워크. 객체를 인식함과 동시에 양질의 segmentation 마스크를 만든다. 이 방법을 Mask R-CNN이라 부르며, 박스를 이용하여 R-CNN을 빠르게 한 버전이다. 5 fps. 다른 작업에도 (human pose estimation 등) 쉽게 일반화할 수 있다. COCO에서의 3가지 테스크에서 좋은 성능을 보여준다. (instance segmentation, bounding-box, person keypoint detection) COCO 2016 우승자보다 성능이 좋다고 한다.
2. 서론
객체 detection과 semantic segmentation은 각각 Fast R-CNN이나 Fully Convolutional Network을 통해 좋은 성능을 얻어왔다. 이러한 방법론들은 직관적이고 유연하며 강인하고 빠르게 훈련할 수 있다. Instance Segmentation은 이미지 내에 모든 객체들을 정확하게 감지함과 동시에 정확하게 segmenting 해야한다. (Object detection + Semantic segmentation). 복잡한 방법보다, 단순하고 유연하며 빠른 시스템이 존재하는 데 이것이 MRCNN. 각 RoI(Region of Interest)마다 segmentation mask를 더하고, 이와 평행하게 분류작업도 진행한다. 마스크 브랜치는 작은 FCN을 각 RoI에 적용하고, 픽셀 단위로 segmentation mask를 예측한다. Mask R-CNN은 Faster R-CNN의 확장버전이라 볼 수 있다. (Faster R-CNN은 입출력 사이에 픽셀 단위 정렬이 불가능) 단순한 quantization-free layer인 RoIAlign을 통해 misalignment을 해결할 것이다.
Mask R-CNN은 GPU에서 프레임당 200ms 시간에 작업을 수행한다. (COCO에서 1~2일 8개의 GPU로 학습) 빠른 훈련, 테스트 속도와 프레임워크의 유연성 정확성도 갖고 있다. COCO key-point dataset을 통해 사람의 자세도 측정할 수 있다. 각 key-point는 one-hot binary 마스크이다.
3. 관련 활동
R-CNN : Bounding-box object detection에서이 Region-based CNN 접근은 유의미한 수의 후보 객체 지역들을 들여다보고, 각 RoI마다 CNN을 독립적으로 평가하는 방식이다. RoIPool을 이용하여 피처 맵에 접근이 가능하게 하고, 이는 빠른 속도와 높은 정확성을 만든다. 빠른 버전의 R-CNN은 Region Proposal Network와 함께 attention 기법을 적용시켜 속도를 향상시킨다. 그 당시 가장 대표적인 모델이 Faster R-CNN.
Instance Segmentation : segment proposal에 많은 접근들이 중점을 두었다. 초기 방법론들은 bottom-up segment를, Deep Mask는 segment candidate를 찾아낸 후 Faster R-CNN으로 분류를 진행하였다. 이러한 작업들은 segmentation이 recognition보다 먼저 일어난다. (느리고 부정확하다). MRCNN은 parallel 예측(마스크랑 라벨을 한번에)이 가능하다.(단순하고 유연한 구조) FCIS는 segment proposal과 object dection이 결합된 형태이고 한번에 빠르게 마스크를 만들고 클래스를 알아내지만, 인스턴스의 오버랩과 가짜 edge 문제 등 여러 결함이 존재한다. semantic segmentation의 원리를 이용하한 것들도 있는데, 픽셀단위 분류 결과를 이용하여(FCN의 출력 등) 그 픽셀들을 카테고리 별로 분류하여 자른다. 이 역시 segmentation-first 접근 방식이다. Mask R-CNN은 instance-fisrt 전략.
4. Mask R-CNN
개념적으로는 단순하다고 한다. Faster R-CNN의 후보 객체들에 대한 두 개의 출력들(라벨, bounding-box offset)에 더하여 3번째 브랜치가 추가된다(object mask가 출력). 직관적인 아이디어이기도 하다.
a. Faster R-CNN : 두 개의 단계로 이루어진다. 첫 단계는 RPN(Region Proposal Network)으로, 후보 bounding box를 찾는다. 두번째 단계는 RoIPool을 이용한 feature 추출단계이다.(그 후 분류 작업과 bounding-box에 대한 회귀를 진행한다) 두 단계에서 사용된 feature들은 빠른 학습을 위해 공유될 수 있다.
b. Mask R-CNN : 두 단계의 방식을 동일하게 사용하며, 첫 단계는 아예 똑같다. 두번째 단계에서는 병렬적으로 클래스와 박스 offset을 예측하며 각 RoI마다 binary mask를 출력으로 만든다. (bounding-box classification과 Fast R-CNN을 동시에 한다). 각 샘플된 RoI에 대하여 multi-task loss(3개의 loss)를 정한다. 마스크 브랜치는 m x m의 해상도의 마스크에서 K binary mask(K개의 클래스)를 만들기 때문에 km^2의 차원을 갖는다. 픽셀 단위로 sigmoid를 적용하고, average binary cross-entropy loss를 이용하여 손실을 구한다. 실제 클래스k에 연관된 RoI에서는 마스크의 손실이 k번째 mask에 의해서만 정의된다. (클래스 별로 경쟁하지 않는다, 픽셀 단위 sigmoid와 binary loss가 핵심인듯).
c. Mask 표현력 : 입력 객체의 공간 정보를 인코딩하는 것이 마스크. 따라서, 라벨이나 offset과는 달리(fc를 통해 짧은 벡터가 되는) 컨볼루션에 의한 픽셀 단위의 상관관계를 통해 공간 구조를 추출한다. 각 RoI마다 FCN을 이용하여 m x m 마스크를 예측한다. (벡터 표현은 공간 정보가 부족하다). fully convolutional 표현력은 적은 파라미터를 필요로 하며 좋은 저확도를 보인다. RoI 특성 -> 작은 feature 맵의 역할을 한다.
d. RoIAlign : RoIPool은 각 RoI에서 작은 특성 맵을 뽑아내는 일반적인 연산이다(7 x 7). RoI의 floating-number을 양자화하고, 양자화된 RoI를 spatial bin으로 나눈 뒤, max pooling을 이용하여 각 bin들을 종합하여 feature 값들르 구한다. 양자화 과정은 피처맵의 stride로 x를 나눈 뒤 반올림해준다. 이러한 양자화는 RoI와 추출된 피처들 사이의 misalignment를 일으킨다. 분류 작업에는 문제가 없지만 마스크의 픽셀 정확도에는 큰 문제를 끼칠 수 있다. 이를 해결하기 위해 RoIAlign 층을 만든다.(적절하게 RoIPool을 움직여서 정렬해보자는 아이디어)
네트워크 구조 : 여러 개의 구조로 만들어본다. (1) CNN 백본 구조 (전체 이미지에 대한 피처 추출, ResNet과 함께 MaskRCNN사용). FPN과 함께 사용. Faster R-CNN box와 ResNet, FPN.
'컴퓨터비전(CV)' 카테고리의 다른 글
Swin Transformer (2021) : 새로운 CV 모델의 시작 (0) | 2022.03.06 |
---|---|
SENet(2019) (0) | 2021.05.06 |
Dense Net(2018)논문 정리 (0) | 2021.04.16 |