[22’ CVPR] Splicing ViT Features for Semantic Appearance Transfer
카테고리: Vision
🔍 Abstract
CVPR 2022 논문이다. 저자들은 DINO-ViT의 Feature를 Appearance와 Structure의 2가지로 나누고, 이를 Semantic Appearance Transfer에 적용하는 방법을 제안한다. 이를 통해 DINO-ViT Feature의 특성을 더 잘 이해할 수 있어 논문을 소개하게 되었다.
1. Analysis
저자들은 먼저 DINO-ViT Feature의 특성을 이해하기 위해 Visualization을 진행했다. 특히 Feature Inversion을 사용하였다. 이는 Feature를 Image로 변환하는 과정으로, 이를 통해 Image와 Feature Level에서 동등한 다른 Image를 얻을 수 있다. 즉 아래 식에서 $F_ \theta (z)$를 얻는 것이다.
\[\arg \min_ \theta \Vert \phi (F_ \theta (z)) - \phi (I) \Vert _ F\]저자들은 이로부터 3가지 결론을 얻었다.
(1) 먼저 저자들은 $\phi(I) = t^ l _ {cls} (I)$로 설정하여 [CLS]
token inversion을 수행하였다. 이를 통해 [CLS]
token이 점진적으로 Appearance Information을 축적한다는 것을 알 수 있었다. 즉 Early layer에서는 local texture pattern을, Deeper layer에서는 Object Part와 같은 Global information을 담고 있다.
(2) 두 번째로 저자들은 위 방식을 여러 번 반복하였다. 그 결과는 모두 달랐고, 따라서 feature space는 spatially flexible하다는 것을 알게 되었다. 즉, object part가 늘어나거나, 변형되거나, 뒤집히더라도 실제 feature space는 동일하다는 것이다. 따라서 [CLS]
token은 Structure 정보보다는 Appearance 정보를 더 많이 담고 있다고 이해할 수 있다.
(3) 마지막으로 저자들은 $\phi(I) = K^ L (I)$로 두었다. 즉, Last Layer의 Spatial Key를 추출한 것이다. 놀랍게도 원래 이미지가 거의 그대로 복원되었다. 이때 저자들은 각 패치에 대한 Self-similarity를 계산하였다.
\[S^ L (I)_ {ij} = \text{cos-sim} (k^ L _ i (I), k^ L _ j (I)) \in \mathbb{R}^ {(n+1) \times (n+1)}\]이후 각 패치에 대한 self-similarity를 PCA로 시각화하였더니 해당 정보들은 Semantic component에 대한 Structure를 담고 있었다. 즉, 얼룩말이라면 얼룩말의 Stripe 패턴은 어느 정도 무시하면서, 얼룩말의 형태를 담고 있는 것이다. 지금까지의 내용을 바탕으로 저자들은 다음과 같이 Feature Space로부터 정보를 추출했다.
- Appearance:
[CLS]
token의 Global Image Representation을 사용하여 Spatially Flexible한 Feature를 추출함 (Pose, Spatial Layout은 무시함) - Structure: Last Layer Spatial Key의 Self-similarity를 사용하여 Semantic Component를 추출함 (Appearance는 무시함)
2. Architecture
전체 과정은 위와 같이 두 이미지만을 사용하여 이루어지며, 이 과정은 딥러닝 모델의 배치 학습이 아닌 두 이미지에 대한 최적화(optimization) 과정임을 미리 밝힌다. 최적화는 Appearance Loss, Structure Loss, Regularization Loss로 이루어진다.
\[\begin{aligned} \mathcal{L} _ {app} &= \left\Vert t^ L _ {cls} (I_ t) - t^ L _ {cls} (I_ s) \right\Vert _ 2 \\ \mathcal{L} _ {str} &= \left\Vert S^ L (I_ t) - S^ L (I_ s) \right\Vert _ F \\ \mathcal{L} _ {id} &= \left\Vert K^ L (I_ t) - K^ L (G_ \theta (I_ t) \right\Vert _ F \end{aligned}\]3. Results
결과는 위와 같다. Style Transfer가 자연스럽게 이루어진 모습이다.
💡 Summary
지금까지의 핵심 내용은 다음과 같이 정리된다.
- Appearance:
[CLS]
token의 Global Image Representation을 사용하여 Spatially Flexible한 Feature를 추출함 (Pose, Spatial Layout은 무시함) - Structure: Last Layer Spatial Key의 Self-similarity를 사용하여 Semantic Component를 추출함 (Appearance는 무시함)
이를 통해 DINO-ViT의 [CLS]
Token과 Spatial Token의 특징을 잘 이해할 수 있었다.
댓글 남기기