[논문리뷰]DenseCLIP(2021)

Dong Jun·2022년 7월 14일
0

요즘 관심을 가지고 있는 분야는, 거대한 규모로 사전학습된(오픈소스로 공개된) vision-language foundation모델(ex. CLIP, ALIGN)을 사용하여 최소한의 튜닝으로 다양한 downstream에 적용하는 것입니다.

natural language supervision으로 학습된 CLIP을 사용하면, 사전적으로 정의되어 있지 않은 open concept에 대한 object detection과 segmentation이 가능하다는 장점이 있습니다. 오늘 소개할 DenseCLIP이라는 논문은, 사전학습된 CLIP을 사용하여 추가적인 학습 없이 open concept에 대한 segmentation을 가능케 했습니다.

zero-shot segmentation이 가능한 DenseCLIP의 segmentation을 pseudo-label로 삼아서 semi-supervised learning과 self-training으로 성능을 더 끌어올린 DenseCLIP+ 에 대한 내용도 있지만, 본 포스트에서는 DenseCLIP에 대해서만 다루겠습니다.

위 qualitative results를 보시면, Bugatti, Cadilac과 같은 세부적인 컨셉에 대해서도 segmentation이 꽤나 잘 이루어짐을 볼 수 있습니다. 만약 하나의 이미지에 부가티와 캐딜락이 둘 다 있을 때에도 segmentation을 잘 해낼지는 모르겠습니다.

하지만, 이 외에도 꽤나 다양한 concept에 대한 segmentation이 어느 정도 가능함을 확인할 수 있습니다.
한 이미지 안에 있는 다른 캐릭터나 인물에 대한 segmentation도 가능합니다.

어떻게 추가적인 학습이나 튜닝 없이, 사전학습된 CLIP만으로 특정 concept에 대한 segmentation이 가능한지 확인해 보겠습니다.

Formulation of Attention Pooling

resnet기반 CLIP image encoder의 마지막 layer는 attention pooling을 수행합니다. 이 attention pooling은 아래와 같이 수식으로 나타낼 수 있습니다. 논문에는 행렬 연산이 아닌 벡터 단위의 연산으로 식이 표현된 관계로 이해가 다소 어려워서, 저는 행렬 연산을 기준으로 식을 정리해 보았습니다.

  • xix_i : image encoder의 feature map에서 i번째 feature
  • xˉ\bar{x} : global average pooled feature
  • qˉ\bar{q} : Embq(xˉ)Emb_q(\bar{x}), EmbqEmb_q는 Linear transformation
  • kik_i : Embk(xi)Emb_k(x_i), EmbkEmb_k는 Linear transformation
  • viv_i : Embv(xi)Emb_v(x_i), EmbvEmb_v는 Linear transformation

이 때, kRl×d,vRl×dqˉRd×1\mathbf{k} \in \mathbb{R}^{l \times d}, \mathbf{v} \in \mathbb{R}^{l \times d} \bar{q} \in \mathbb{R}^{d \times 1} (ll은 feature map에서 H×WH \times W, dd는 feature의 dimension)

AttnPool(qˉ,k,v)=W[vTsoftmax(kqˉT)]=[WvT][softmax(kqˉT)]Rd×1\mathbf{AttnPool}(\bar{q}, \mathbf{k}, \mathbf{v}) = W \cdot [\mathbf{v}^T \cdot \mathbf{softmax}(\mathbf{k} \cdot \bar{q}^T)]= [W \cdot \mathbf{v}^T] \cdot [\mathbf{softmax}(\mathbf{k} \cdot \bar{q}^T)] \in \mathbb{R}^{d \times 1}

여기서, 두번째 [][\cdot]안에 들어 있는 항은, spatial feature에 대한 aggregation function의 역할을 합니다. 하지만, 이것은 segmentation에 필요하지 않은 과정이므로, 과감히 두 번째 항을 버립니다.

즉, WvT=WEmbv(x)Rl×dW \cdot \mathbf{v}^T = W \cdot Emb_v(\mathbf{x}) \in \mathbb{R}^{l \times d}를 통해 산출되는 feature map에 대해 segmentation을 적용함으로써, open concept에 대한 segmentation이 가능합니다.

여기서 파라미터 WWEmbvEmb_v는 이미 CLIP 사전학습을 통해 학습된 파라미터이므로, 아무런 추가적인 학습 없이 CLIP을 사용한 segmentation이 가능합니다.

profile
컴퓨터, 통계, 수학

0개의 댓글