3 개의 요점
✔️ CG의 렌더링 기술을 이미지 세분화에 응용
✔️ 위치에 따라 샘플링 밀도를 변화시켜 정확도가 낮은 픽셀만 중점적으로 예측하는 'PointRend' 제안
✔️ 연산량의 증가를 억제하면서 인스턴스 경계의 분류로 고정밀화 실현
PointRend : Image Segmentation as Rendering
written by Alexander Kirillov, Yuxin Wu, Kaiming He, Ross Girshick
(Submitted on 17 Dec 2019)
subjects : Computer Vision and Pattern Recognition (cs.CV)
이미지 세분화(segmentation)는 자동운전 등에도 응용되는 중요한 연구 분야입니다.
기존의 세분화 방법은 입력 영상을 인코딩하고 특징량 맵으로 라벨링 한 후 디코딩으로 업 샘플링합니다. 예를 들어, 이 논문에서 소개되는 DeepLabV3는 디코딩 시 4배 업샘플링을 2회 실시하기 위해, 16배로 업샘플링을 하게 됩니다. 그러나 세그멘테이션은 픽셀 단위로 세분화하는 작업이기 때문에 한 번에 대량의 업샘플링을 수행하면 분류 정확도가 떨어집니다. 특히 선의 얇은 경계선이 거칠어져 버립니다.
또한, 기존의 네트워크는 이미지를 균일하게 분할하고 각 픽셀에 대해 세분화하고 라벨을 붙여 나갑니다. 그러나 이미지에는 낮은 주파수 영역(상대적으로 매끄럽고 적은 색상의 변화)과 고주파 영역(명백한 변화, 오브젝트의 경계선)이 있습니다. 저주파 영역의 경우 특정 카테고리로 분류되어 샘플링할 필요는 거의 없지만, 고주파 영역의 경우 샘플링된 포인트가 드문드문 뜬다면 분류된 오브젝트의 경계는 거칠어질 가능성이 있습니다. 오브젝트의 경계를 언더 샘플링할 때 불필요하게 매끄러운 영역을 오버 샘플링해 버리는 경향이 있습니다.
Facebook이 제안하는 'PointRend'는 특징량 맵의 픽셀 값의 분포에 따라 계산 대상을 선택하는 샘플링의 밀도를 바꾸는 것으로, 필요한 픽셀로 필요한 계산을 하고 미세 조정할 수 있습니다. 따라서 상세한 라벨링이 가능하여 테두리의 분류 정확도가 높아집니다. 또한 선택적으로 계산하는 기존 방식에 비해 계산 효율도 높아집니다.
또한 Mask R-CNN 등의 일반적인 인스턴스 세분화 메타 아키텍처와 FCN 등의 시멘틱 세분화 메타 아키텍처에 통합할 수도 있어 폭넓게 응용이 가능합니다.
PointRend를 구성하는 3 개의 모듈
PointRend는 3개의 모듈로 구성되어 있습니다.
1. Point Selection Strategy
- 몇 개의 포인트를 선택하여 예측하는 것으로, 고해상도로 변환한 후의 계산량을 제한하여 계산량을 억제함
2. Point-wise Feature Representation
- 선택된 포인트마다 바이 리니어(Bi-Linear) 보간법을 이용하여 특징량을 추출
3. Point Head
- 포인트마다 추출된 특징량으로부터 라벨을 예측하도록 학습한 소형 신경망
Point Selection Strategy
추론
포인트의 선택 방법은 CG의 Adaptive Subdivision의 고전적인 수법을 응용하고 있습니다.
이 수법은, 이웃 값과 값이 달라질 가능성이 높은 픽셀만 계산하는 것으로, 고해상도의 이미지를 효율적으로 렌더링 하여, 다른 픽셀은 이미 계산된 출력 값에서 리니어 보간법으로 산출합니다. PointRend는 저해상도의 맵에 대해 바이 리니어 보간으로 반복 렌더링 하여 이전 맵에서 예측된 세그먼트 라벨을 더 정밀하게 업 샘플링합니다.
이 업 샘플링은 N개의 불확실한 점(예를 들어, 바이너리 마스크의 확률이 0.5에 가장 가까운 포인트)을 선택하고 PointRend에서 이러한 N개의 포인트마다 특징량을 계산하고 라벨을 예측해 갑니다.
입력 해상도가 M0 x M0, 출력 해상도를 M x M 하면 PointRend는 Nlog2(M/M0)의 포인트만을 예측하게 됩니다. Nlog2(M/M0) << M x M 가 되므로, 보통의 세분화에 비해 계산량을 줄일 수 있다는 것도 알 수 있습니다.
예를 들어, 'M0 = 7, M = 224, N = 28의 2승'인 경우 PointRend에서는 28의 2승 * 4.25 = 1410 포인트만을 예측하는 것입니다. 이것은 224의 2승과 비교하면 1/15이 됩니다.
학습
학습 시, PointRend에서는 Point Head를 학습하기 위한 포인트 선택이 필요합니다. 기본적으로 추론에 사용되는 세분화 방법과 비슷합니다.
그러나 추론 시의 세분화는 오차 역 전파법에서 신경망을 학습할 수 있도록 순차적인 방법으로 되어있지만, 학습 시에는 랜덤 샘플링을 이용한 비 반복적인 방법을 채용하고 있습니다.
학습 시의 포인트 선택에서는 다음의 3가지 원칙을 사용하여 선택 범위를 불확실한 영역에 한정시켜 어느 정도 균일한 커버리지를 유지하도록 설계되어 있습니다.
1. Over generation
- 일양 분포(uniform distribution)로 부터 kN개(k > 1)를 랜덤으로 샘플링하여 포인트의 후보를 생성합니다.
2. Importance sampling
- 보간 후의 kN으로부터 불확실성이 높은 포인트에 주목하고, 특히 불확실성이 높은 βN개( β ∈[0,1])인 포인트를 선택합니다.
3. Coverage
- 나머지 (1- β) N개의 포인트는 균일한 분포에서 샘플링합니다.
또한 학습 중 예측값과 손실 함수는 선택된 N개의 포인트만으로 계산되는 효율적인 방법으로 되어있습니다. 이것은 RPN + Fast R-CNN과 같은 생각입니다.
예를 들어, 위 그림과 같이 같은 맵에 대하여 N=14의 2승을 샘플링할 경우 높은 퍼포먼스를 달성하기 위해서는 영역마다 약간의 포인트만 샘플링하는 '약간 치우친 샘플링 방법(ex. mildly biased)' 쪽이 더 학습 효율이 향상됩니다.
Point-wise Feature Representation와 Point Head
PointRend은 Coarse prediction features 및 Fine-grained features를 결합하여 Point Feature를 형성합니다.
- Fine-grained features
PointRend가 작은 것까지 상세하게 렌더링 할 수 있도록 하기 위해 CNN으로 추출한 특징 맵 상에서 샘플링한 포인트마다의 특징량을 추출합니다. 포인트의 값은 실제 값의 2D좌표이기 때문에 특징 맵에서 바이 리니어 보간으로 특징량을 산출합니다.
하나의 특징 맵(ResNet의 res2등)에서 특징량을 추출할 수 있습니다. 또한 Hypercolumn을 따라 여러 특징 맵(res2에서 res5 또는 그 특징 피라미드에 대응하는 것)으로부터 추출하여 연결하는 것도 가능합니다. - Coarse prediction features
Fine-grained features는 자세한 세분화가 가능한 반면, 단점이 2개 있습니다.
첫 번째는 공간정보가 포함되어 있지 않기 때문에, 두 개의 인스턴스의 bounding box가 겹치는 포인트에서 동일한 Fine-grained features가 됩니다. 그러나 각각의 포인트는 하나의 인스턴스 밖에 되지 않습니다. 따라서 인스턴스 세그먼트는 동일한 포인트에 대하여 다른 라벨을 예측할 수 있습니다. 따라서 추가로 이들을 보완하는 영역 정보를 제공해야 합니다.
두 번째는 어떤 특징 맵을 Fine-grained features로 사용할지 의존하기 때문에 경우에 따라서는 저해상도의 특징밖에 사용하지 못할 수 있습니다. 이 경우, 보다 맥락 있고 의미 있는 정보를 포함하여 제공해야 합니다.
이들을 고려하여 Coarse prediction features에서는 명확한 문맥과 의미 정보를 포함하고, 각 포인트는 K-class prediction에 의한 K차원 벡터를 갖습니다. 해상도가 거친 것으로 전체적인 정보를 표현하면서 채널에서 semantic class를 알려줍니다. - Point head
선택된 지점마다 특징량이 주어지면 PointRend는 MLP에 의해 포인트마다 세그멘테이션 예측을 합니다. 이 MLP는 Graph Convolution 또는 PointNet뿐만 아니라 모든 포인트(모든 영역)에 가중치를 공유합니다.
실험
Instance Segmentation
기반이 되는 네트워크에 Mask R-CNN with a ResNet-50 + FPN를 사용하여 COCO와 Cityscapes 데이터 세트를 사용하여 실험을 하고 있습니다. 이 실험에서는 Mask Head가 4x conv의 표준과 PointRend를 비교한 결과, 정성 및 정량의 양쪽에서 높은 정확도를 보여줍니다.
다음 그림은 출력의 예입니다. 고해상도의 이미지에서 보다 효과적으로 분류할 수 있다는 것을 알 수 있습니다.
Semantic Segmentation
기반이 되는 네트워크에 DeeplabV3 with ResNet-103을 사용하고, Cityscapes의 데이터 세트를 사용하여 실험을 하고 있습니다. 이 실험에서도, PointRend을 이용한 것이 더 높은 정확도를 보여줍니다.
아래의 그림의 오른쪽은 출력 결과의 예시입니다.
'AI · 인공지능 > AI 칼럼' 카테고리의 다른 글
구글이 양자 머신러닝 라이브러리 'TensorFlow Quantum'을 공개 (0) | 2020.03.08 |
---|---|
AI는 판타지 세계에서 롤 플레잉이 가능할까? (0) | 2020.03.07 |
GAN이 생성한 데이터는 무엇? (0) | 2020.03.01 |
AI가 애니메이션을 고화질로 변환, HD는 4K로, 풀HD는 8K로 (0) | 2020.02.19 |
모든 딥페이크를 간파하는 'Face X-ray', Microsoft가 해결한 SOTA기술이란? (0) | 2020.02.15 |
AI가 작곡? 음악 산업에 진출하는 AI 작곡 사례와 도구 소개 (2) | 2020.02.01 |
AI는 트윗에서 사용자 위치를 특정할 수 있는가? (0) | 2020.01.28 |
Transformer 대규모화의 돌파구 될까? 고효율 Reformer의 등장 (0) | 2020.01.24 |