728x90
반응형

키워드

1. 렌더링 방식의 점 단위 세그멘테이션을 통해 고해상도의 세부 정보를 복구.

2. "PointRend: Image Segmentation as Rendering"

3. PointRend, Rendering, subdivision

Segmentation as Rendering

(이미지 별 왼쪽) Mask R-CNN, (이미지 별 오른쪽) Mask R-CNN with PointRend

  Image segmentation을 위한 CNN은 일반적으로 그리드 기반에서 작동한다. 일반적인 그리드 기반 방식은 편리하지만 이상적인 방법은 아니다. 그 이유는 개체 경계가 없는 영역을 불필요하게 오버샘플링하는 동시에 개체 경계를 언더샘플링하기 때문이다. 그 결과 수많은 연산량에도 흐릿한 윤곽선을 얻게 된다. 입력 해상도의 1/8 수준의 적당한 저해상도 feature를 사용하는 것은 언더샘플링과 오버샘플링 간의 절충점이라고 볼 수 있다.

  이와 유사한 샘플링 문제는 컴퓨터 그래픽 분야에서 꾸준히 연구되었다. 기본적으로 renderer는 모델을 이미지로 변환한다. 여기서 변환되는 공간은 균일한 그리드이나, 그리드 전체에 대해 모델을 변환을 위한 연산을 수행하지 않는다. 오직 이미지가 존재하는 공간만 선택하여 해당 공간만 계산하는 방식이며, 이를 ‘subdivision’이라 부른다. 이를 통해 연속적인 형태의 모델은 효율적으로 일반적인 그리드 공간에 이미지로 표현된다.

  이러한 선택적인 렌더링 방식을 차용하여 segmentation을 수행하고자 한다. 컴퓨터 비전에서도 현실의 연속적인 형태의 개체가 그리드인 이미지에 "렌더링"되어 있다고 볼 수 있다. 이러한 관점에서 레이블을 계산할 그리드 위치 세트를 adaptive하게 비균일(non-uniform) 샘플링하는 방식을 고안하였다. 이를 PointRend라고 한다.

  추상적으로 살펴보면 PointRend 모듈은 일반적인 그리드에서 feature map 𝑓​(𝑥𝑖,𝑦𝑖)을 수용하고 고해상도 예측 𝑝(𝑥𝑖′,𝑦𝑖′)을 출력한다. 다만 그 과정에서 모든 지점을 계산하여 과도하게 예측하는 것이 아닌 신중하게 선택한 지점에 대해서만 예측을 수행한다.

  PointRend의 장점은 기존 segmentation 시스템에 유연하게 통합된다는 것이다. 위 이미지를 통해 PointRend가 훨씬 더 명확한 경계를 생성하는 것을 볼 수 있다.즉, PointRend는 이전 방법에 의해 과도하게 스무딩된 영역에서 선명한 객체 경계를 출력하게 해준다.

  추론 중에 PointRend를 반복하여 예측을 계산한다. 각 단계에서 경계가 없는 영역은 단순히 이중선형 업샘플링을 적용하고, 경계가 있을 가능성이 있는 소수의 선택된 지점에선 더 높은 해상도에 대해 예측을 수행한다. 선택된 지점들의 예측은 이전 해상도를 보간하여 pointwise feature를 추출한 뒤, point head subnetwork를 통해 계산된다.

  Semantic segmentation 분야는 많은 모델이 fully convolutional network (FCN)에 기초를 두고 있다. 이는 입력 그리드보다 해상도가 낮은 출력을 예측하고, 출력을 업샘플링하여 해상도를 복구하는 경우가 많다. 그리고 instance segmentation의 구현은 Mask R-CNN의 방법을 통해 많은 모델이 설계되었다. 이 방식의 단점은 크기가 큰 개체의 경우에는 세밀한 세부 사항을 지나치게 매끄럽게 만드는 "blobby" 출력을 생성한다는 것이다. PointRend는 이러한 특징을 가지는 이전 모델에 비해 정확성을 향상시키면서 미세한 수준의 세부 정보가 포함된 마스크를 생성할 수 있다.

PointRend

  PointRend(Point based Render)은 point representation을 사용한 image segmentation 방법론이다. PointRend 모듈은 세 가지 주요 구성 요소로 구성되어 있다.

  1. 적절한 포인트 선택 전략이 필요하다. 이를 통해 고해상도 출력 그리드의 모든 픽셀에 대해 과도한 계산을 방지하면서, 예측해야하는 소수의 포인트를 선택할 수 있다.
  2. 선택된 각 지점에 대한 pointwise feature representation 추출이다. 입력 𝑓의 정규 그리드에 있는 선택된 지점의 가장 가까운 이웃 4개에 대해 이중선형 보간법으로 계산한다. 이를 통해 𝑓보다 높은 해상도를 갖는 분할을 예측할 수 있다.
  3. 마지막은 point head다. 각 포인트에 대해 독립적으로 이 pointwise feature representation에서 레이블을 예측하도록 훈련된 작은 신경망을 말한다. 

Point Selection

  각 포인트는 예측할 이미지 평면의 지점을 유연하게 선정되며, ray tracing의 anti-aliasing 문제와 유사하게 경계와 같은 high-frequency 영역 근처에 더 조밀하게 위치한다. 다만 point selection은 추론과 학습 단계에서 절차에 차이점이 존재한다.

  먼저 추론 단계의 point selection부터 알아보자. Adaptive subdivision은 컴퓨터 그래픽에서 고해상도 이미지를 효율적으로 렌더링하는 데 사용된다. 값이 이웃 값과 크게 다를 가능성이 높은 위치에서만 계산을 수행하며, 다른 모든 위치의 경우 값은 이미 계산된 출력 값을 보간을 통해 구한다.

  PointRend는 거친(coarse) 저해상도에서 미세한(fine) 고해상도로 반복적으로 "렌더링"한다. 우선 각 반복에서 이중선형 보간법을 사용하여 이전에 예측한 분할을 업샘플링(위 이미지의 ‘x2’ 부분)한다. 이후 𝑁개의 가장 불확실한 지점을 선정하고 상위 라벨을 예측(위 이미지의 ‘point prediction’ 부분)한다. 이 과정을 원하는 해상도까지 반복한다. 이러한 방식은 최종 출력의 모든 픽셀을 예측하는 방식보다 훨씬 효과적이다.

  다음은 훈련 단계이다. 원칙적으로 점 추론에 사용되는 subdivision 전략과 유사하다. 다만 역전파를 사용하여 신경망을 훈련하기에는 적절한 방법이 아니다. 이에 훈련을 위해 무작위 샘플링을 기반으로 하는 반복적이지 않은(non-iterative) 전략을 사용하려 한다.

  학습할 기능 맵에서 𝑁포인트를 선택한다. 어느 정도 균일한 적용 범위를 유지하는 동시에 불확실한 영역에 대해 선택을 편향하도록 설계되어야 한다. 이를 위해 우선 균일 분포에서 𝑘​𝑁 포인트(𝑘>1)를 무작위로 샘플링하여 후보 포인트를 과도하게 생성한다. 이후 불확실성에 대한 추정값을 계산하여 불확실하고 거친 예측이 있는 지점에 초점을 맞춘다. 가장 불확실한 𝛽​𝑁 점(𝛽∈[0,1])이 𝑘​𝑁 후보 중에서 선택되고, 나머지 (1−𝛽)​𝑁 포인트는 균일 분포에서 샘플링한다. 훈련 시 loss는 𝑁 샘플링된 점에서만 계산된다. 불확실성은 가장 확률이 높은 클래스와 두 번째로 확률이 높은 클래스의 확률 차이가 0.5 이상인 경우로 실험에 사용되었다. 아래 실험에서는 𝑁=282, 𝑘=3, 𝛽=0.75가 사용되었다.

  훈련 중 포인트 선택 방식에 대한 비교 결과다. 기본적으로 객체 당 14 * 14개의 포인트를 선택하였다. 이 이상의 포인트를 사용해도 결과가 향상되지 않았으며, 7 * 7개의 포인트만 샘플링해도 여전히 AP가 유지되지만 AP의 변동이 증가하였다. 당연하지만 일반적인 그리드 선택은 균일한 샘플링과 유사한 결과를 보이며, 모호한 영역으로 샘플링을 편향하면 AP가 향상되는 것을 알 수 있다. 하지만 경계(𝑘>10 및 𝛽가 1.0에 가까움)에 너무 많이 편향된 샘플링 전략은 오히려 AP를 감소시켜 적절한 설정이 필요하다는 것을 알 수 있다.

728x90

Pointwise feature representation

  Pointwise representation은 미세한 분할 세부 정보를 렌더링하는 fine-grained feature 지역과 클래스 정보를 추출하는 coarse prediction으로 나뉘며, 최종 예측은 이 둘을 결합하여 사용한다. 먼저 fine-grained feature는 feature map에서 샘플링된 각 지점에서 feature vector를 추출하여 얻는다. 이를 위해 feature map에서 이중선형 보간을 수행한다. 다음 coarse prediction은 기존 다른 아키텍처의 출력과 유사하며 동일한 방식으로 추출 및 학습된다. 각 region representation으로 부터 k개의 클래스에 대한 예측을 수행한다.

  이렇게 두 가지의 방식을 사용하는 이유는 미세한 분할을 위해 fine-grained feature로 충분하지만, 여기에는  region-specific한 정보가 포함되어 있지 않고 상대적으로 low-level이 정보만 존재하게 되기 때문이다. 그렇기에 coarse prediction을 함께 사용하지 않으면, 두 instance가 겹쳐있는 영역에서 어떤 객체인지 구분할 수 없으며 객체 분류를 위한 context 정보가 누락될 수 있다.

Point head

  각 포인트의 pointwise feature representation이 주어지면 PointRend는 간단한 MLP를 사용하여 포인트별 예측을 수행한다. MLP는 모든 포인트에서 가중치를 공유하며, 포인트에 대한 분할 레이블을 예측한다.

Architecture

  PointRend에 대한 baseline으로 ResNet-50, FPN이 적용된 Mask R-CNN이 사용된다. 이 Baseline에 PointRend 방식을 추가함으로써 성능을 비교할 수 있다. 이 중 coarse prediction을 위해 Mask R-CNN과 유사하지만 좀 더 가벼운 7×7 마스크 예측하도록 변경하였다. 먼저 각 경계 상자에 대해 14 × 14 feature map을 추출한다. 이후 256개의 출력 채널을 가진 stride 2의 2×2 conv 레이어로 크기를 7×7로 줄인다.

  Fine-grained feature의 경우 이전 설명과 동일하게 추출 한 뒤, 두 feature를 결합한다. 이후 256 채널의 hidden layer 3개로 구성된 MLP를 통과하면 최종적으로 sigmoid를 통과하여 각 지점에서 𝐾개의 클래스에 대해 예측을 수행한다. 이를 다음 레이어의 입력 벡터로 사용한다.

결과

Instance segmentation

  PointRend를 Mask R-CNN와 비교한 결과다. 두 데이터 세트 모두에서 baseline보다 성능이 뛰어나다. 정성적인 이미지에서 경계 품질의 차이는 명백하게 드러난다. 또한 PointRend가 30배 이상 적은 컴퓨팅(FLOP) 및 메모리를 사용하여 고해상도 224×224 예측을 수행할 수 있다. 즉, PointRend로 대략적인 예측이 가능한 영역을 무시하여 효율적으로 고해상도 출력을 얻을 수 있다고 판단할 수 있다.

  다양한 출력 해상도와 다양한 포인트 수에 따른 PointRend의 성능 차이 비교 자료다. AP는 포화되지만 더 높은 해상도에서 마스크를 예측하면 결과가 향상된다. 또한 포인트 수가 증가하면서도 AP가 포화되지만, 이는 가장 모호한(ambigous) 영역에서 포인트가 주로 선정되고 추가된 포인트들은 이미 예측을 위해 충분한 포인트가 있는 지점에서 샘플링 될 수 있기 때문이다. 이를 바탕으로 매우 복잡한 객체를 예측해야하는 경우 더 많은 점을 사용하는 것이 도움이 될 수 있다.

Semantic segmentation

  DeeplabV3, SemanticFPN에 PointRend를 추가한 결과 비교다. 두 가지 모두에서 PointRend는 성능 개선을 보였으며, 이미지를 통한 정성적인 개선도 확인할 수 있다. 오른쪽 아래 시각화는 반복적으로 예측하는 과정을 표현한 이미지다.

Reference

논문 링크 : [1912.08193] PointRend: Image Segmentation as Rendering (arxiv.org)

728x90
반응형

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

[Segmentation] HRNet  (0) 2024.11.08
[Segmentation] DeepLabv3+  (2) 2024.11.07
[Segmentation] Mask R-CNN  (0) 2024.11.07
[Segmentation] DeepLabv3  (1) 2024.11.02
[Segmentation] DeepLab  (2) 2024.10.31

+ Recent posts