项目介绍:VLM2Vec-Full
VLM2Vec-Full项目致力于通过创建一个统一的多模态嵌入模型,从而提高视觉-语言(Vision-Language)模型在大规模多模态嵌入任务上的表现。其核心在于将已经训练好的视觉-语言模型(VLM),通过简单的结构改进,转换为一个高性能的嵌入模型。
模型特点
VLM2Vec模型的关键方法是通过在序列末尾添加一个[EOS]标记,作为多模态输入的表示。这个标记帮助模型更好地将图像和文本信息结合在一起,从而提升模型在不同任务中的应用能力。
模型训练与评估
数据集
VLM2Vec模型的训练数据集为MMEB-train,评估则使用MMEB-eval。模型在这些数据集上分别通过对比学习进行训练和评估。训练过程中使用了批内负采样的方法,确保模型能够在各种条件下学习到准确的嵌入表示。
模型检查点
VLM2Vec提供了不同的训练检查点,其中包括Lora训练和完整模型训练的版本,具体的设置如下:
实验结果
实验结果显示,VLM2Vec模型在36个评估数据集上均显著超越了现有基线模型。而且,这种优势不仅体现在准确性上,也展现出在多样化任务中的广泛适应性。
使用指南
环境配置与运行
首先需要从GitHub克隆项目:
git clone https://github.com/TIGER-AI-Lab/VLM2Vec.git
pip -r requirements.txt
然后可以在目录中运行以下示例代码,以探究图像和文本之间的相似性计算:
from src.model import MMEBModel
from src.arguments import ModelArguments
import torch
from transformers import HfArgumentParser, AutoProcessor
from PIL import Image
import numpy as np
model_args = ModelArguments(
model_name='TIGER-Lab/VLM2Vec-Full',
pooling='last',
normalize=True)
model = MMEBModel.load(model_args)
model.eval()
model = model.to('cuda', dtype=torch.bfloat16)
通过这些步骤,用户可以体验VLM2Vec如何将图像和文本转换为紧凑的嵌入,并计算它们之间的相似度。在这个过程中,模型展现了出色的性能和灵活性,能够有效地处理多模态任务。