[24’] Cambrian-1: A Fully Open, Vision-Centric Exploration of Multimodal LLMs
카테고리: Multimodal
🔍 Abstract
해당 논문은 Eyes Wide Shut?의 후속 논문으로 해당 논문에서 지적했던 Visual Encoder의 문제를 더 깊게 탐구한다.
- 저자들은 VLM의 Vision Encoder에 대한 고찰이 충분하지 않다고 지적하며 Visual Encoder에 대한 체계적인 다양한 실험을 진행한다. 분석은 위와 같은 부분을 사용한다.
- Vision-centric benchmark인 CV-Bench를 제안한다.
- Visual Grounding 성능을 높이기 위해 효율적으로 여러 Vision Encoder Feature를 종합하는 SVA(Spatial Vision Aggregator)를 제안한다.
- Visual Instruction Tuning에서 Data Distribution을 잘 조절하는 것이 성능에 중요하다는 것을 보인다.
1. Visual Representation Evaluation through MLLMs
지금까지 대부분의 MLLM은 CLIP Visial Encoder에 의존하고 있었다. 물론 CLIP은 Text Pre-alignment로 인해 높은 성능을 보이지만, Visual Representation에 대한 충분한 정보를 가지고 있는지에 대해서는 의문이다. 따라서 저자들은 Vision Encoder에 대한 체계적인 실험을 진행한다. 이를 위해 5단계로 나누어 실험을 진행한다.
- Analyze the Benchmarks
- Introduce CV-Bench
- Study Instruction Tuning Recipes
- Use MLLMs as a Visual Representation Evaluator
- Investigate Combining Multiple Vision Encoders
1.1. Analyze the Benchmarks
저자들은 먼저 기존 Benchmark를 분석하였는데, 많은 Benchmark에서 LLM이 답을 내는 것과 MLLM이 답을 내는 것의 큰 차이가 없었다. 이는 지금까지의 Benchmark가 Vision-centric Capability를 잘 측정하지 못한다는 것을 의미한다. 저자들은 지금까지의 Benchmark를 위 그림과 같이 분류하고, 그 중에서도 MLLM의 성능에 핵심적인 Vision-centric Task는 데이터의 수가 적다고 지적한다.
1.2. Introduce CV-Bench
따라서 저자들은 Spatial Relationship (2D), Object Counting (2D), Depth Order (3D), Relative Distance (3D) 약 2000개로 이루어진 CV-Bench(Cambrian Vision-centric Benchmark)를 제안한다. 이 Benchmark는 Vision-centric Task를 잘 측정할 수 있도록 설계되었다.
1.3. Instruction Tuning Recipes
기존 Prism에서는 LLaVA의 Two-stage training이 아닌 one-stage training으로도 좋은 성능을 보였고, 따라서 two-stage training이 불필요하다고 주장했다. 하지만 저자들은 이를 다시 더 방대한 모델들에 대해 실험하여 다시 검증한다. 그 결과, Two-stage training이 더 좋은 성능을 보인다는 것을 확인하였다.
또한, Vision Encoder Unfreezing이 대부분의 경우 도움이 된다는 것을 확인하였다. Language-supervised model은 항상 성능이 개선되었고, SSL 모델은 특히 vision-centric task에서 성능이 개선되었다. 참고로 다음과 같이 굉장히 다양한 Vision Encoder를 사용하여 실험했다.
1.4. MLLMs as a Visual Representation Evaluator
일반적으로 CLIP, DINOv2와 같은 Representation Model의 성능을 측정하기 위해 ImageNet Linear Probing, Image Retrieval, Downstream Task Backbone Application 등을 사용한다. 하지만 저자들은 이러한 측정 방법이 MLLM의 성능과 완전히 일치하지 않는다고 지적한다. 따라서 저자들은 Vision-centric Benchmark에서 서로 다른 Vision Encoder를 사용한 MLLM의 성능을 비교하여 Vision Encoder의 성능을 평가한다. 그 결과는 다음과 같다.
결과는 CLIP 계열 모델들이 우수하다는 것이다. 저자들은 이러한 이유가 CLIP이 LAION과 같은 방대한 데이터를 사용하여 학습하였기 때문이라고 보았다. CL(Contrastive Learning) 기반 모델들은 400M에서 10B까지 많은 데이터를 사용하였으나, SSL(Self-supervised Learning) 기반 모델들은 아무리 많아도 142M의 데이터만 사용하였다. 만약 더 많은 데이터를 사용해 SSL 모델을 학습한다면 어떻게 성능이 변할지는 미지수이다.
한편 ConvNeXt 기반의 모델은 High-resolution으로 학습이 쉽고, 따라서 Vision-centric Task에서 우수한 성능을 보인다. 이는 ConvLLaVA에서도 확인된 결과이다.
한편 DINOv2와 같은 모델이 CLIP에 비해 적은 데이터로 훈련되었다는 점으로 볼 때 Visual Encoder Unfreezing을 통해 DINOv2가 더 많은 이득을 얻을 것이라 생각할 수 있다. 실제로 저자들은 Instruction Tuning 시 Visual Encoder도 학습시키는 경우 CLIP과 DINOv2의 성능 차이가 줄어드는 것을 확인하였다. 그럼에도 불구하고 CLIP이 여전히 우수한 성능을 보인다.
1.5. Combining Multiple Vision Encoders
저자들은 마지막으로 Eyes Wide Shut?에서 제안한 Visual Encoder Ensemble을 다시 실험하여 검증한다. 여기서는 A-MoF 방식을 사용하였다. 그 결과 특히 Vision-centric task에서 DINOv2와 같은 non-language-supervised model을 합치는 것이 좋은 성능을 보였다. 이는 Vision Encoder의 다양성이 중요하다는 것을 보여준다. 그러나 이는 너무 단순한 방식으로, 저자들은 Spatial Vision Aggregator(SVA)를 제안한다.
2. Spatial Vision Aggregator (SVA)
2.1. Concepts
SVA는 Vision Encoder의 다양성을 높이기 위해 여러 Vision Encoder의 Feature를 종합하는 Connector이다. SVA는 Latent Query에 여러 Visual Encoder의 Feature를 Cross-Attention하는 방식으로 구성되며, 각 LLM Layer마다 다양한 Visual Encoder Feature를 사용할 수 있도록 되어 있다. 식을 활용해 설명하면 다음과 같다.
먼저 Query, 즉 Latent Token $\mathbf{X} \in \mathbb{R}^ {L^ 2 \times C}$에 대하여 $N$개의 Visual Encoder의 Visual Feature $\mathbf{F}$는 Key-Value와 같다. 이때 $k$번째 Visual Encoder의 $\mathbf{F}_ k \in \mathbb{R}^ {m_ k L \times m_ k L \times C}$이다. $m_ k$는 자연수로, 편의상 모든 Feature가 $L$로 나누어 떨어지게 설계한 것이다.
Cross Attention 동안 Spatial Structure를 보존하기 위해, Spatial Inductive Bias를 도입한다. 즉 Query의 $\mathbf{x}_ {ij}$는 $\mathbf{F}_ k$의 해당 부분에만 적용된다.
\[\mathbf{F}_ k \left[m_ k i : m_ k (i + 1), m_ k j : m_ k (j + 1), : \right] \in \mathbb{R}^ {m_ k ^ 2 \times C}\]즉, Visual Token $\mathbf{x}_ {ij}$는 $N$개의 Visual Encoder의 Feature 총 $\sum_ k m_ k ^ 2$개를 Aggregation하여 계산되는 것이다. Attention 식은 다음과 같다.
이러한 방법을 통해 Visual Encoder의 Feature $\sum_ k m_ k ^ 2$개를 종합하여 하나의 Token으로 Aggregation되므로 효율적으로 Token의 수를 줄이면서 추가적인 정보를 얻을 수 있다. 대신, 이러한 방식은 하나의 Token이 모든 정보를 담고 있다는 점에서 Information Loss가 발생할 수 있으므로, LLM의 Transformer Layer 사이에도 SVA를 적용하여 Uncompressed Visual Information에 접근할 수 있도록 한다. 이를 Multi-layer vision aggregation이라 하였다.
2.2. Experiments
저자들은 OpenAI CLIP ViT-L/14@336, SigLIP ViT-SO400M/14@384, OpenCLIP ConvNeXt-XXL@1024, and DINOv2 ViT-L/14@518을 사용하여 실험을 진행하였다. 실험 결과는 다음과 같다.
이러한 SVA Adapter Design은 다른 Connector에 비해 효과적이었다. 다만, SVA는 Concat이나 Resampler에 비해 더 많은 Parameter가 필요하다. 이러한 점에서 직접적인 비교는 어렵다고 생각한다.
추가로 Ablation Study도 진행했는데, Query Group의 수 $G$를 늘리고, SVA의 Layer 수 $D$를 늘리고, Multi-Layer Vision Aggregation을 적용하는 것이 성능을 높이는데 도움이 된다는 것을 확인하였다.
3. Instruction Tuning Data for Training MLLMs
3.1. Data Balancing
저자들은 마지막으로 Instruction Tuning Data를 어떻게 구성할지에 대해 분석하였다. 처음에 저자들은 수많은 데이터들을 수집하였고, 이를 Cambrian-10M이라 명명하였다. 그러나, 이는 long-tail distribution을 가지고 있어서 Data Imbalance가 발생하였다. 따라서 저자들은 한 데이터셋에서의 최대 데이터 수를 threshold $t$로 설정하여 Data Balancing을 진행하였다. 이를 통해 Data Distribution을 조절한 데이터를 Cambrian-7M이라 명명하였다.
이렇게 잘 조절된 Data Distribution을 가지고 Instruction Tuning을 진행하면 더 많은 데이터를 가졌지만 Data Imbalance가 있는 경우보다 더 좋은 성능을 보인다. 이는 Data Distribution이 Instruction Tuning에 중요하다는 것을 보여준다. 한편, 어떠한 카테고리의 데이터를 더 많이 사용할지에 대해서는 확실한 결론을 내리지 못했다. 다만, General, OCR, Language Data를 잘 조합하는 것이 좋은 성능을 보인다는 것을 확인하였다.
3.2. System Prompting for Instruction Tuning
마지막으로 저자들은 System Prompting을 사용하여 Instruction Tuning을 진행하는 것이 중요하다는 것을 강조하였다. 일반적으로 Short VQA를 학습에 사용하게 되면 모델들이 답을 짧게 뱉어버리고 더 이상 추론을 진행하지 않는 일명 Answer Machine Phenomenon이 발생하게 된다. 이러한 문제는 LLaVA-1.5에서도 확인된 결과이다. 이러한 문제는 Instruction Tuning 시 Short VQA 학습에 “Answer the question using a single word or phrase.“와 같은 Prompt를 사용하면 간단히 해결할 수 있다. 일종의 Condition을 부여한 채 학습을 진행하는 것이다.
4. Cambrian-1
이를 모두 종합하면 Cambrian-1이라는 모델이 된다. 이 모델은 특히 Visual Encoder 부분을 건드린 만큼 Vision-centric Task, OCR Task에서 높은 성능을 보인다. 위 그래프의 빨간 점선은 GPT-4V를 나타낸 것인데, Vision-centric Task에서는 Cambrian-1이 더 높은 성능을 보인다. 이는 Vision Encoder의 중요성을 보여주는 결과이다.
💡 Summary
지금까지의 내용을 정리하면 다음과 같다.
- 지금까지의 MLLM Benchmark가 MLLM의 성능을 잘 평가하지 못한다고 지적하며, Vision-centric Benchmark인 CV-Bench를 제안한다.
- Vision Encoder Unfreezing, Vision Encoder Ensemble을 통해 성능이 향상되는 것을 확인하였다. 특히, DINOv2와 ConvNeXt의 의미를 재확인하였다.
- Spatial Vision Aggregator(SVA)를 제안하여 여러 Vision Encoder의 Feature를 효율적으로 종합하는 방법을 제안하였다.
- Data Distribution이 Instruction Tuning에 중요하다는 것을 확인하고, 이를 조정한 Cambrian-7M 데이터셋을 제작하였다. 또한 System Prompting을 통해 Condition을 주고 Instruction Tuning을 진행하는 것이 중요하다는 것을 확인하였다.
댓글 남기기