[24’ CVPR] Osprey: Pixel Understanding with Visual Instruction Tuning
카테고리: Multimodal
🔍 Abstract
이 논문에서는 지금까지 Visual Perception Model이 Bounding Box와 같은 Coarse Input만 받을 수 있었다는 점을 지적한다. 그리고 그 이유를 Mask-based Instruction Data의 부족으로 두고 (1) GPT-4를 활용하여 Osprey-724K의 데이터셋을 생성한다. 이를 학습에 사용하여 (2) Pixel-level Visual Understanding을 수행하는 Osprey를 제안한다. 이때, High-resolution input을 받기 위해 (3) ViT이 아닌 Convolutional CLIP을 사용하며, 이것이 성능에 중요한 역할을 한다는 것을 보였다. 이 리뷰에서는 데이터셋에 대한 리뷰는 생략하고, Osprey에 대한 내용에 집중하여 리뷰하고자 한다.
1. Architecture
처음 Abstract를 읽고 든 생각은 Ferret과 너무 비슷하다는 것이었다. Ferret 또한 Free-form spatial input을 지원한다. 그러나 접근 방법에서 차이가 있다. Ferret에서는 Sampling Point를 추출하여 그 주변의 Feature Aggregation을 수행한다. 반면, Osprey는 Mask Pooling을 통해 Feature Extraction을 수행한다. 좀 더 자세히 들여다보면 다음과 같다.
먼저, Visual Encoder로 일반적인 ViT이 아닌 ConvNeXt를 사용한다. 이러한 이유는 High-resolution input을 얻기에는 ViT의 계산량이 너무 많다는 것이었다. 대신 ConvNeXt와 같은 모델은 High-resolution input을 더 적은 계산량으로 계산할 수 있고, 이미 Open-Vocabulary Segmentation에서는 좋은 성능을 보여주고 있었다. 따라서 저자들은 512x512 Input을 처리하는 ConvNeXt-L CLIP을 사용하였다.
이제 Mask를 처리하는 Mask-Aware Visual Extractor에 대해 알아보자. Region $i$의 mask를 $\mathbf{R} _ i$, ConvNeXt level $j$에서 얻은 Visual Feature를 $\mathbf{Z} (x)_ j$라고 하자. 이때 Mask Region에 해당하는 구역에 대해 Mask Pooling을 수행한다. 이는 다음과 같이 정의된다.
\[V_ {ij} = \mathcal{MP}(\mathbf{R} _ i, \mathbf{Z} (x)_ j)\]이들은 Projection 후 Add 과정을 거쳐 최종적으로 MLP를 통과하여 visual mask token $t_ i$가 된다.
\[t_ i = \sigma \left( \sum_ {j=1} ^ 4 \mathbf{P} _ j \left( V_ {ij} \right) \right)\]한편 이러한 방법으로만 특성을 추출하게 되면 Mask 내부의 Feature라는 사실은 잘 전달할 수 있지만 Mask의 위치, 즉 spatial geometry를 잘 전달하기 어렵다. 따라서 저자들은 Binary Mask $\mathbf{M}_ i$를 Flatten하고 Projection을 거쳐 Spatial Token $s_ i$로 변환하여 같이 넣어주었다. 일종의 Positional Encoding과 같은 역할을 한다. 참고로 학습 시에는 다음 단계를 거친다.
- Image-Text Alignment Pre-training: Adapter만 학습한다.
- Mask-Text Alignment Pre-training: Mask-Aware Visual Extractor만 학습한다.
- End-to-End Fine-tuning: 전체 모델을 학습한다.
2. Experiments
2.1. Main Results
Ferret과 비교하여 Mask-based Instruction을 사용하는 Osprey가 더 좋은 성능을 보여주었다. 실제로 Osprey의 Mask Pooling이 Ferret의 Sampling Point보다 더 좋은지는 쉽게 비교하기 어렵지만, Mask Pooling이 Spatial Geometry를 잘 전달할 수 있다는 점에서 더 좋은 성능을 보여주었다고 생각해볼 수 있다.
2.2. Ablation Study
궁금했던 부분은 ConvNeXt가 High-resolution input에 대하여 ViT보다 좋은 성능을 보여주는지였다. 그런데 Table 8에서는 ConvNeXt는 512x512 Input으로 실험하고, ViT에서는 224x224 Input으로 실험하여 비교하였다. 따라서 이러한 비교는 적절하지 않다고 생각하여, Table 9에서 ConvNeXt 224x224 Input 결과와 비교해보았다. 그 결과 적어도 224x224 Input에서는 ViT이 ConvNeXt보다 좋은 성능을 보였다. 물론 ViT을 사용해 High-resolution input을 받는 데에 계산량이 많이 든다는 점에서 ConvNeXt를 사용하는 것은 이해가 되나, 실제로 성능이 개선되는지의 여부는 추가 실험이 필요할 듯하다.
💡 Summary
Osprey는 Mask Input을 Mask-Aware Visual Extractor를 통해 처리하는 방법을 제안한다. Ferret과 달리 Spatial Geometry를 잘 전달할 수 있다는 장점이 있다. 추가로 High-resolution Input을 처리하기 위해 ConvNeXt를 사용하였는데, 계산량 면에서는 ViT보다 좋지만 성능 면에서는 아직 추가 실험이 필요하다.
댓글 남기기