引言
在计算机视觉领域,随着大规模图像-文本对的兴起,视觉-语言模型(VLMs)已成为研究的热点。ViTamin,全称为“Vision TrAnsforMer for vIsion-laNguage”,是由 Johns Hopkins University 和 ByteDance 的研究者共同开发的一种新型视觉模型,旨在为视觉-语言时代设计可扩展的视觉模型。ViTamin 在多项任务中取得了显著的性能提升,包括零样本分类、开放词汇检测和分割,以及大型多模态模型(LMMs)。
概述
ViTamin 的设计灵感来源于 Vision Transformer (ViT) 和 CoAtNet,它采用了一个三阶段的网络架构,结合了移动卷积块(MBConv)和 Transformer 块(TFB)。ViTamin 在保持计算效率的同时,通过混合架构和精细的块设计,提高了特征的分辨率和模型的可扩展性。在 DataComp-1B 数据集上进行预训练后,ViTamin 在多个基准测试中取得了优异的成绩。
ViTamin 模型参数
参数/型号 | ViTamin-S | ViTamin-B | ViTamin-L | ViTamin-L2 | ViTamin-XL |
---|---|---|---|---|---|
图像尺寸 | 224 | 224 | 224 | 224 | 256 |
补丁数 | 196 | 196 | 196 | 196 | 256 |
文本编码器深度/宽度 | – | – | 12/768 | 24/1024 | 27/1152 |
训练样本数 (B) | 12.8 | 12.8 | 12.8 | 12.8 | 12.8+0.5 |
可训练参数 (M) | 22.0 | 87.5 | 333.3 | 333.6 | 436.1 |
浮点运算次数 (G) | 5.50 | 21.84 | 72.6 | 72.6 | 125.3 |
ImageNet 准确率 | 43.3 | 50.8 | 80.8 | 80.9 | 82.1 |
平均数据集准确率 | 40.8 | 44.6 | 66.7 | 66.4 | 67.6 |
参数解释
补丁数
“补丁数”(num patches)指的是图像在输入到模型之前被分割成的小块(或称为“补丁”)的数量。这是 Vision Transformer(ViT)架构的一个关键特性,例如,ViTamin-S 模型使用的补丁数是 196,这意味着无论输入图像的原始尺寸如何,它都会被分割成 196 个小块,然后这些小块被用作模型的输入。
文本编码器深度/宽度
- 深度:这指的是网络中层的数量。可以把它想象成一栋楼的楼层数。楼层越多,你就能在不同的层上做更多的处理,每层都可以是对信息的进一步精细化处理。在文本编码器中,每一层都会从文本中学习和提取不同类型的信息,比如从单词意义到句子结构,再到上下文语境。深度越大,理论上模型能学到的内容就越丰富,处理更复杂的任务也就更有优势。
- 宽度:这通常指的是每层中的单元(或神经元)数量。这可以类比为每层楼的“宽度”或“面积”。如果一层楼面积更大,你可以放进去更多的办公桌和设备。同理,在神经网络中,层的宽度越大,能同时处理的信息就越多,提高了模型捕捉数据中细微特征的能力。
浮点运算次数
浮点运算次数是一个衡量计算性能的指标,这个指标描述了一个系统在每秒内可以执行多少次浮点运算,包括加法、减法、乘法和除法等。一个拥有较高FLOPs的深度学习模型可能需要更强大的硬件支持以达到实时处理的需求。
技术创新与优势
技术创新
- 混合架构:ViTamin 结合了 MBConv 块和 TFB,利用 MBConv 块在前两个阶段提供强大的空间特征提取能力,同时利用 TFB 在第三阶段增强数据和模型的可扩展性。
- 特征分辨率:ViTamin 通过三阶段网络设计生成高分辨率的特征图,最终输出步长为 16,类似于 ViT/16。
- 简化的 MBConv-LN:移除了 MBConv 中的所有 BN 层和 SE 层,仅使用单个 LayerNorm(LN),简化了模型同时保持了性能。
- TFB-GeGLU:在 TFB 中使用 GeGLU 激活函数,提高了 FFN 的性能,同时减少了模型参数。
- Locked-Text Tuning (LTT):提出了一种新的训练方案,利用预训练的文本编码器指导图像编码器的训练,提高了小规模数据上的性能。
优势
- 参数效率:ViTamin-XL 仅使用 436M 参数就达到了 82.9% 的 ImageNet 零样本准确率。
- 性能卓越:在开放词汇检测和分割任务中,ViTamin-L 取得了新的最佳性能。
- 可扩展性:ViTamin 在不同大小的模型和不同规模的数据集上都展现了良好的性能和可扩展性。
- 训练效率:通过 LTT,ViTamin 能够在较小的数据集上实现更高效的训练。
应用场景
- 图像分类:包括传统的固定词汇分类和开放词汇分类。
- 对象检测和分割:ViTamin 提供了强大的特征表示,适用于目标检测和图像分割任务。
- 多模态学习:ViTamin 可以作为大型多模态模型的图像编码器,提高模型在多模态任务上的性能。
- 零样本学习:ViTamin 在零样本任务中表现出色,能够识别在训练期间未见过的类别。
局限性
- 计算资源:尽管 ViTamin 设计了高效的架构,但大规模模型训练仍然需要显著的计算资源。
- 数据依赖性:ViTamin 的性能提升部分依赖于大规模的图像-文本对数据集,这可能限制了其在数据受限的应用场景中的适用性。
- 泛化能力:ViTamin 在大规模数据集上表现良好,但在某些特定的、分布不同的数据集上可能需要进一步的调整和优化。
- 模型复杂性:ViTamin 的混合架构虽然带来了性能上的提升,但也可能增加了模型理解和解释的复杂性。
参考资料
github: https://github.com/Beckschen/ViTamin