❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦
🎧 “视觉与文本的完美融合!苹果开源AIMv2:多模态自回归预训练模型,性能超越CLIP和DINOv2!”
大家好,我是蚝油菜花。你是否也遇到过——
- 👉 图像识别任务中,模型对复杂场景的理解能力不足?
- 👉 多模态任务中,图像和文本的结合效果不理想?
- 👉 需要处理大量图像和文本数据,但训练过程复杂且耗时?
今天揭秘的 AIMv2,是苹果公司开源的多模态自回归预训练视觉模型,通过创新的预训练框架,将图像和文本深度融合,显著提升了模型在视觉和多模态任务中的表现。AIMv2 不仅简化了训练过程,还支持多种参数规模的版本,适用于从手机到PC等不同设备。接下来,我们将深入探讨 AIMv2 的核心功能和技术原理,带你全面了解这款强大的视觉模型!
🚀 快速阅读
AIMv2 是苹果公司开源的多模态自回归预训练视觉模型,通过图像和文本的深度融合提升视觉模型的性能。
- 核心功能:支持视觉问答、指代表达理解、图像字幕生成、多媒体检索等任务。
- 技术原理:采用多模态自回归预训练框架,结合视觉编码器和多模态解码器,实现图像和文本的高效融合。
AIMv2 是什么

AIMv2 是苹果公司开源的多模态自回归预训练视觉模型,通过图像和文本的深度融合提升视觉模型的性能。该模型采用创新的预训练框架,将图像划分为非重叠的图像块,将文本分解为子词令牌,然后将两者拼接为统一序列进行自回归预训练。这种设计简化了训练过程,增强了模型对多模态数据的理解能力。
AIMv2 提供了多种参数规模的版本(如300M、600M、1.2B和2.7B),适用于从手机到PC等不同设备。在性能方面,AIMv2 在多模态任务和传统视觉任务中均表现出色,尤其在视觉问答、指代表达理解和图像字幕生成等任务中展现了强大的能力。
AIMv2 的主要功能
- 视觉问答(VQA):AIMv2 提取视觉特征并与问题文本结合,传递给大型语言模型(LLM),生成准确且贴合上下文的答案。
- 指代表达理解:在 RefCOCO 和 RefCOCO+ 等基准测试中,AIMv2 能精准地将自然语言描述与视觉区域对应起来。
- 图像字幕生成:结合 LLM,AIMv2 可以生成高质量的图像描述。
- 多媒体检索:AIMv2 的多模态表示能力能高效地处理多媒体检索任务,支持对图像和文本的联合检索。
- 与大型语言模型(LLM)集成:AIMv2 的架构与 LLM 驱动的多模态应用高度契合,能无缝集成到各种多模态系统中。
- 零样本适应性:AIMv2 支持零样本识别适应性,能在不进行额外训练的情况下适应新的视觉任务。
AIMv2 的技术原理
- 多模态自回归预训练框架:AIMv2 将图像分割为不重叠的小块(Patch),将文本分解为子词标记,然后将两者拼接为一个多模态序列。在预训练阶段,模型通过自回归的方式预测序列中的下一个元素,图像块还是文本标记。这种设计使得模型能够同时学习视觉和语言模态之间的关联。
- 视觉编码器与多模态解码器:AIMv2 的架构由视觉编码器和多模态解码器组成。视觉编码器基于视觉 Transformer(ViT)架构,负责处理图像 Patch。多模态解码器则使用因果自注意力机制,根据前文内容预测下一个元素。
- 损失函数设计:AIMv2 定义了图像和文本领域的单独损失函数。文本损失采用标准的交叉熵损失,图像损失则采用像素级回归损失,用于比较预测的图像块与真实图像块。整体目标是最小化文本损失和图像损失的加权和,以平衡模型在两个模态上的性能。
- 训练数据与扩展性:AIMv2 使用了大量图像和文本配对数据集进行预训练,包括公开的 DFN-2B 和 COYO 数据集。训练过程简单高效,不需要过大的批量大小或特殊的跨批次通信方法。AIMv2 的性能随着数据量和模型规模的增加而提升,展现出良好的可扩展性。
- 预训练后的优化策略:AIMv2 探索了多种训练后策略,例如高分辨率适配和原始分辨率微调。这些策略使得模型能够更好地处理不同分辨率和宽高比的图像,进一步提升其在下游任务中的表现。
如何运行 AIMv2
安装
请使用官方安装说明安装 PyTorch。之后,安装 AIMv2 包:
pip install 'git+https://github.com/apple/ml-aim.git#subdirectory=aim-v1'
pip install 'git+https://github.com/apple/ml-aim.git#subdirectory=aim-v2'
我们还支持MLX后端,用于在 Apple 芯片上进行研究和实验。要启用 MLX 支持,只需运行:
pip install mlx
- PyTorch 安装说明:https://pytorch.org/get-started/locally/
- MLX 文档:https://ml-explore.github.io/mlx/
使用 PyTorch
from PIL import Image
from aim.v2.utils import load_pretrained
from aim.v1.torch.data import val_transforms
img = Image.open(...)
model = load_pretrained("aimv2-large-patch14-336", backend="torch")
transform = val_transforms(img_size=336)
inp = transform(img).unsqueeze(0)
features = model(inp)
使用 MLX
from PIL import Image
import mlx.core as mx
from aim.v2.utils import load_pretrained
from aim.v1.torch.data import val_transforms
img = Image.open(...)
model = load_pretrained("aimv2-large-patch14-336", backend="mlx")
transform = val_transforms(img_size=336)
inp = transform(img).unsqueeze(0)
inp = mx.array(inp.numpy())
features = model(inp)
使用 JAX
from PIL import Image
import jax.numpy as jnp
from aim.v2.utils import load_pretrained
from aim.v1.torch.data import val_transforms
img = Image.open(...)
model, params = load_pretrained("aimv2-large-patch14-336", backend="jax")
transform = val_transforms(img_size=336)
inp = transform(img).unsqueeze(0)
inp = jnp.array(inp)
features = model.apply({
"params": params}, inp)
资源
- GitHub 仓库:https://github.com/apple/ml-aim
- HuggingFace 仓库:https://huggingface.co/collections/apple/aimv2-6720fe1558d94c7805f7688c
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦