- 패치 단위 텐서
Qwen3-VL 비전 백본은 이미지를 바로 픽셀 단위로 쓰지 않고, 먼저 일정한 크기의 격자(패치)로 잘라서 각 패치를 하나의 벡터로 바꿉니다.
예를 들어 3채널 RGB 이미지를 16×16 패치로 자르면, 한 패치당 3 × 16 × 16 = 768개의 픽셀이 있고, 이를 펼쳐 768차원 벡터로 변환합니다.
최종적으로 한 장의 이미지는 “패치 벡터들의 시퀀스”로 표현됩니다. 바로 이 시퀀스가 pixel_values 에 들어가는 텐서이고, 그래서 “패치 단위 텐서”라고 부르는 겁니다.
pixel_values
ColQwen3Processor.process_images 가 만들어 주는 실제 비전 입력입니다.
- 모양: (batch_size, max_num_patches, patch_dim)
- 여기서 max_num_patches는 배치 안에서 가장 많은 패치를 가진 이미지의 패치 수이고, 다른 이미지는 그 길이에 맞추기 위해 뒤쪽을 0으로 채운 상태(패딩)입니다.
- 예시) 이미지 A(64×64) → 256패치, 이미지 B(32×32) → 64패치라면, pixel_values는 (2, 256, patch_dim)이고 B는 64개 이후가 0으로 채워져 있습니다.
- image_grid_thw
각 이미지가 실제로 몇 개의 패치를 갖는지와 패치들이 3차원 격자(시간 T, 높이 H, 너비 W)로 어떻게 배열되는지를 담은 메타데이터입니다.
Qwen3-VL은 멀티프레임(시간축)까지 지원하기 때문에 이런 3차원 정보가 필요합니다. 단일 이미지라면 T=1이고, H와 W는 “패치 단위의 높이/너비”를 의미합니다.
위 예시에서 64×64 이미지를 16×16 패치로 자르면 H=W=16이 아니라, 패치 병합(merge) 과정 때문에 실제 입력에선 16 / merge_size가 됩니다. 예컨대 merge_size가 4라면 (1, 4, 4)가 됩니다. 32×32 이미지는 (1, 2, 2)가 되겠죠.