简介
文章主要对比了包括 VideoLLaMA 2 、CogVLM2-video 、MiniCPM-V等模型
目前主流的多模态视觉问答大模型,大部分采用视觉编码器、大语言模型、图像到文本特征的投影模块
目录
- 简介
- 1. VideoLLaMA 2
- 1.1 网络结构
- 1.2 STC connector具体的架构
- 2. MiniCPM-V 2.6
- 2.1 模型的主要架构
- 2.2 Model部分
- 2.3 训练过程
1. VideoLLaMA 2
1.1 网络结构
该部分最主要的为一个STCconnector
主要过程:
- 输入的连续图像帧进入视觉编码器中进行视觉编码
- 后进入STC connector 该部分由空间卷积(ResNet) -> 时间空间的下采样(3D卷积) -> 空间卷积(ResNet)->进行flatten操作 -> 后进入几层全连接层(Priojection W)
- 组后进入Pre-trained Large Lanuage Model(可自主选择不同的大语言模型进行拼接)
1.2 STC connector具体的架构
其中:STC connector的伪代码如下图所示:
2. MiniCPM-V 2.6
2.1 模型的主要架构
2.2 Model部分
(1)引入了一种自适应视觉编码方法,来源于 LLAVA-UHD 方法。
(2)通过分割图像、调整分辨率及压缩视觉 token 来达到高效编码的目的。
但是在实际使用的过程中,虽然模型的准确率在同量级的视觉问答大模型中,但是在推理的速度上相比还是存在较大的差距
- Image Partition(图像分割)
-
输入分辨率与预训练分辨率:
- 输入图像分辨率为 ( W I , H I ) (W_I, H_I) (WI,HI),模型的预训练分辨率为 ( W v , H v ) (W_v, H_v) (Wv,Hv)。
- 通过以下公式计算理想的切片数量:
N = W I × H I W v × H v N = \frac{W_I \times H_I}{W_v \times H_v} N=Wv×HvWI×HI
这里 N N N 是切片数量。
-
选择分割方案:
- 将图像切分为 m m m行和 n n n 列的矩形网格,满足 m × n = N m \times n = N m×n=N。
- 用以下目标函数
S
(
m
,
n
)
S(m, n)
S(m,n) 评估每种分割方案:
S ( m , n ) = − ( log W I / m W v + log H I / n H v ) S(m, n) = - \left( \log \frac{W_I / m}{W_v} + \log \frac{H_I / n}{H_v} \right) S(m,n)=−(logWvWI/m+logHvHI/n)- 该目标函数衡量切片的宽高比与预训练分辨率的偏差,越小越好。
-
最优分割方案选择
- 选择目标函数值
S
(
m
,
n
)
S(m, n)
S(m,n)最大的方案:
( m ∗ , n ∗ ) = argmax ( m , n ) ∈ C N S ( m , n ) (m^*, n^*) = \text{argmax}_{(m, n) \in C_N} S(m, n) (m∗,n∗)=argmax(m,n)∈CNS(m,n) - C N C_N CN是所有可能的 m , n m, n m,n组合集合。
- 选择目标函数值
S
(
m
,
n
)
S(m, n)
S(m,n)最大的方案:
-
实际约束
- 为减少复杂度,限制切片数量 N ≤ 10 N \leq 10 N≤10。
- 当 N N N 是质数时,允许引入更多的分割选项,如 ( N − 1 ) (N-1) (N−1) 和 ( 1 , N + 1 ) (1, N+1) (1,N+1)。
- 目标是在高分辨率(如 1344 × 1344 1344 \times 1344 1344×1344)下兼顾效率和细节。
- Slice Encoding(切片编码)
在图像被分割后,每个切片需要适配模型的输入分辨率。
-
调整切片大小
- 每个切片被调整为与 ViT 预训练分辨率 ( W v , H v ) (W_v, H_v) (Wv,Hv)相匹配。
- 调整大小时保留切片的宽高比,从而尽量减少失真。
-
位置编码调整
- ViT 的预训练位置编码是 1D 的,需要对 2D 图像重新插值:
- 原始位置编码 P 1 ∈ R q × q P_1 \in \mathbb{R}^{q \times q} P1∈Rq×q被插值为 2D 形式 P 2 ∈ R q 2 × q 2 P_2 \in \mathbb{R}^{q^2 \times q^2} P2∈Rq2×q2,以适配切片大小。
- 保留全局信息:
- 额外加入整幅图像的缩略图作为全局信息的补充。
- Token Compression(令牌压缩)
在编码切片后,每个切片会生成大量的视觉 token,这部分讨论了如何压缩这些 token。
- 问题
- 高分辨率图像会生成过多的视觉 token。
- 例如,10 个切片每个生成 1024 个 token,总计 10,240 个 token,这会导致计算负担。
- 压缩方法
- 使用一个跨层注意力(cross-attention)模块对 token 进行压缩。
- 每个切片的 token 从 1024 压缩到 64,总计 640 个 token。
- 在 MiniCPM-Llama-v2 的框架下,这种压缩方法在性能与效率之间取得了平衡。
- Spatial Schema(空间模式)
为帮助模型理解切片之间的空间关系,引入了空间标记。- 位置标记:每个切片前后加上特殊 token:
<slice>
标记切片的开始,<slice_end>
标记切片的结束。行与行之间用特殊 token"n"
分隔。 - 全局信息 将图像整体位置编码加入输入中,帮助模型理解图像切片的全局位置关系。
- 位置标记:每个切片前后加上特殊 token: