About Problem

Idea

기존의 LVLMs(Large Vision Language Models)는 text-to-text만을 허용하던 LLM에서 진보하여, 시각에 해당하는 정보를 처리하므로써, Real-world의 문제를 해결에 더욱 기여를 하고 있다.

기존의 LVLMs들은 시각의 정보의 흐름에 있어, 대부분 아래의 ‘Next-token’을 예측하도록 하는 흔한 구조를 사용한다. Visual Encoder -> Cross-modal connector -> LLM
이러한 구조를 활용하는 모델의 경우, 대부분 입력 이미지를 고정된 해상도로 인코딩하기 위해 down-sampling, up-sampling 등의 방법론을 사용한다.

Fixed Resolution

고정된 해상도를 사용할 경우, 서로 다른 스케일도 일률적으로 처리하도록 하여, 모델이 서로 다른 스케일의 정보를 포착하지 못하게 되고, 이는 곧 세부 정보의 손실을 야기하게 된다.

그렇다면, 고정된 해상도(224x224)를 사용하는 것이 아닌, 다양한 해상도에 대해서 모델이 적응하도록 할 수 있을까?

위의 질문에서부터 시작하여, 저자들은 Dynamic Resolution Training를 위해 ViT에 RoPE(2D Rotary Position Embedding) 등을 적용하므로써, 해당 문제를 해결하고자 하였다.

Video Temporal Information

비디오는 단순 사진의 집합이 아닌, 시계열적인 정보를 포함하고 있는 형태입니다. 그러나, 대부분의 LVLMs들은 각각의 frame을 독집적인 modality로 취급하여 시계열적인 정보의 손실을 야기하였다.

해당 손실을 최소화하기 위해, 1D positional embedding을 추가하는 방법이 있지만, 해당 방법 또한, 1차원적인 text에 초점이 맞추어져 있기에 3차원 공간 구조와 Temporal dynamics를 모델링하는 것에 큰 제약이 있다.

이러한 문제를 해결하기 위해, 저자들은 M-RoPE(Multimodal Rotary Positional Embedding)을 통해 모델에 현실의 dynamic한 contents에 대한 정보를 주입하여 Real-world와 상호작용하도록 하였다.

Key Previous Papers

  • Qwen2 : Qwen2 Technical Report [PAPER]
  • Qwen-VL : Qwen-VL: A Versatile Vision-Language Model for Understanding, Localization, Text Reading, and Beyond [PAPER]
  • ViT : An image is worth 16x16 words: Transformers for image recognition at scale [PAPER]
  • NaViT : Patch n’ Pack: NaViT, a Vision Transformer for any Aspect Ratio and Resolution [PAPER]
  • Roformer RoFormer: Enhanced Transformer with Rotary Position Embedding [PAPER]

Model Architecture

보통의 LVLMs들은 LLM과 Vision Encoder로 구성된다. Qwen2-VL 또한, 해당 구성을 사용하였다.

LLM

Qwen2-VL의 LLM은 이름에서도 유추할 수 있다시피, Qwen2 LLM을 사용하였고, 3개의 size(1.5B,7.6B,72B)에 대해서 학습을 진행하였다.

Vision Encoder

Qwen2-VL의 Vision Encoder는 DFN(Data Filtering Network)을 사용한 ViT(Vision Transformer)를 사용하였고, image와 video 모두 다룰 수 있도록 수정되었다.

SIZE : 675M

Naive Dynamic Resolution

ViT는 Patch 단위로 image를 embedding 하게되며, 이 과정에서 [CLS] token만을 사용하는 것이 아니라면, image size에 따라 patch의 개수가 바뀌게 된다. 그러나, 이렇게 patch의 개수가 이미지마다 바뀌면 문제가 생기게 되는데, Batch 단위로 이미지를 처리할 때, 어떻게 Batch를 구성해야할 지, 복잡해지는 것이 문제였다. 그래서, NaViT 이전의 모델들은, 고정된 크기의 정사각형 종횡비로 resize를 진행하거나, padding을 더하는 등의 전처리를 진행함으로서, [Batch, Token length, Embedding Dimension]으로 구성하여 학습을 진행하였다. 그러나, 이러한 접근 방식은 여러 문제점을 가지고 있는데, 실제 세상의 이미지는 종횡비가 다양할 뿐만 아니라, 해상도도 다양하다. 그래서 이러한 Real-world를 반영하기 위해, 한 vector

이전 Qwen-VL에서는 Openclip’s ViT-bigG를 image encoder로 사용하였기에, Learnable Absolute Position Encoding을 사용하였다. 그러나, 이 방식에는 한 가지 문제가 있는데, 고정된 positional embedding을 사용하였기에, 학습때 본 이미지 patch보다 많은 patch가 input으로 들어올 경우, 작동하지 않거나 bicubic interpolation을 통해서 만들게 된다. 이렇게 interpolation을 통해 만들어진 embedding은 모델이 보지 못했던 embedding이기에, 성능이 저하될 수 있는 위험성을 가지고 있다. 따라서, Qwen2-VL에서는 이러한 문제점을 해결하고자 Naive Dynamic Resolution을 도입하였다. 이는, 다양한 token 길이를 가지는 이미지들을 하나의 sequence로 만들고, self-attention시 같은 이미지만 attention을 수행하도록 변형한 것이다. 이렇게 되면, padding으로 낭비되던 sequence를 줄여 VRAM을 적게 사용하면서 훈련을 진행할 수 있다.

2D RoPE

NaViT 논문에서는, Absolute PE와 Fractional & Factorized PE를 사용하였다. Fractional & Factorized PE의 경우, 2D image sequence를 1D로 reshape한 후 1D에 대해서 PE를 수행하던 Absolute PE와 달리, (width,height)에 대한 각각의 embedding을 만들고, 0~1 scale로 변환한 것이다. 그러나, 이런 PE의 경우, 상대적인 정보를 충분히 담고있지 않으며, Fractional & Factorized PE의 경우에도, extrapolation에 강건하게 설계한 것이여서, 여전히 보지 못한 길이에 대해서 문제가 발생할 수 있다. 따라서, 저자들은 2D RoPE를 통해 상대적인 위치를 넣어 문제를 해결하고자 하였다.

2D RoPE는, Roformer를 통해 RoPE를 제안한 사람의 아이디어 중 하나로, 1D에 적용가능한 RoPE의 2D 확장 버전이라고 할 수 있다. [원 저자의 2D RoPE 포스트]

2D RoPE의 식은 다음과 같으며, 1D RoPE에서 복소수의 회전을 도구로 사용하였기에, Quaternion을 통해 유도하려고 했으나, 기대했던 성질을 만족시키지 않았다. 따라서, 다음과 같은 식을 유도를 통해 알아냈다.

\[R_{x,y}(\theta)= \begin{pmatrix} \cos(x\theta) & -\sin(x\theta) & 0 & 0\\ \sin(x\theta) & \cos(x\theta) & 0 & 0\\ 0 & 0 & \cos(y\theta) & -\sin(y\theta)\\ 0 & 0 & \sin(y\theta) & \cos(y\theta) \end{pmatrix}\]

N-dimension에 대한 확장은, 논문 및 코드에서 들어나 있지 않은 것으로 보인다. 그래서, N-dimension으로 직접 확장해보고자 한다. RoPE에서 짝수라고 가정을 한 것처럼, 4의 배수라고 가정을 하고자 한다.

\[\begin{aligned} \{q,k\}_{m_x,m_y} &= R^{d}_{\Theta,(m_x,m_y)}\,W_{\{q,k\}}\,x_{m_x,m_y}, \\[6pt] R^{d}_{\Theta,(m_x,m_y)} &= \mathrm{diag}\!\Big( R^{(1)}_{\Theta,(m_x,m_y)},\; R^{(2)}_{\Theta,(m_x,m_y)},\; \dots,\; R^{(d/4)}_{\Theta,(m_x,m_y)} \Big), \\[6pt] R^{(j)}_{\Theta,(m_x,m_y)} &= \begin{pmatrix} \cos(m_x\theta_{j}) & -\sin(m_x\theta_{j}) & 0 & 0\\ \sin(m_x\theta_{j}) & \cos(m_x\theta_{j}) & 0 & 0\\ 0 & 0 & \cos(m_y\theta_{j}) & -\sin(m_y\theta_{j})\\ 0 & 0 & \sin(m_y\theta_{j}) & \cos(m_y\theta_{j}) \end{pmatrix}, \\[8pt] \Theta &= \Big\{\theta_j = 10000^{-4(j-1)/d}\;,\; j\in\big[1,2,\cdots,d/4\big]\Big\}, \\[10pt] \Theta &= \Big\{\theta_j = 10000^{-4(j-1)/d}\;,\; j\in\big[1,2,\cdots,d/4\big]\Big\}, \\[10pt] \therefore\quad q^{\top}_{m_x,m_y}k_{n_x,n_y} &= \big(R^{d}_{\Theta,(m_x,m_y)}W_qx_{m_x,m_y}\big)^{\top} \big(R^{d}_{\Theta,(n_x,n_y)}W_kx_{n_x,n_y}\big) \\[4pt] &= x_{m_x,m_y}^{\top}W_q^{\top} \Big(R^{d}_{\Theta,(m_x,m_y)}\Big)^{\!\top} R^{d}_{\Theta,(n_x,n_y)}\,W_kx_{n_x,n_y} \\[4pt] &= x_{m_x,m_y}^{\top}W_q^{\top}\, R^{d}_{\Theta,(n_x-m_x,\;n_y-m_y)}\, W_kx_{n_x,n_y}. \end{aligned}\]

이와 비슷하게, Naver-Ai에서 출판한 논문 또한 이런 방식을 사용하여 2D RoPE를 진행하였다.

Multimodal RoPE

Multimodal RoPE는 temporal, height, width에 대해 RoPE를 적용한 결과이다.

  • Text : (temporal, height, width)에 대해 같은 ID(constant)를 할당한다.
  • Image : (temporal, height, width)에 대해서, temporal은 ID(constant)를 할당하고, height와 width에 대해서 RoPE를 시행한다.
  • Video : (temporal, height, width)에 대해서 모든 변수를 할당한다.

해당 논문에서, Multimodal-RoPE로 참조한 블로그에서는, Text를 2D에 표현하는 방식으로 Image-Text에 대해서 2D-RoPE를 사용하였다.

그렇다면, Temporal한 성분은 어떻게 RoPE로 표현한 것일까?

정확하게 나와있는 것은 깃헙에도 Technical Report에도 없었다. 그러나, temporal한 것에 있어, “ID”라는 이름을 사용한 것으로 볼때, 2D-RoPE로 구한 것 + temporal에 대한 1D-RoPE를 더하거나 하는 식으로 사용하지 않았을까 추정된다.

Qwen2-VL 이후 나온 논문이긴 하지만, 이 논문에서는 Video-RoPE를 2D-RoPE가 아닌 1D-RoPE를 사용하면서, (temporal,width,height)를 다른 frequency에 투영하여 RoPE를 진행하였다.

Unified Image and Video Understanding

Video의 정보를 최대한 보존하기 위해, 비디오를 2 frame per second로 sampling하였고, 3D convolution을 사용하여 2D patch 대신, 3D tubes를 사용하여 더 많은 비디오 프레임을 처리할 수 있도록 하였다. 긴 비디오에 대비해, 각 비디오 프레임의 해상도를 동적으로 조절하고, 총 16,384를 초과하지 않도록 제한하였다.

Video와 Image를 같이 표현하기 위해, 각 이미지는 2개의 프레임으로 처리하였다.

Training Method

Qwen-VL과 비슷하게 진행되었다. 이 포스트를 참고하라.