许可证: cc-by-nc-4.0
语言:
📣 新闻动态
📌 [2024年8月19日] xGen-MM-v1.5版本发布:
模型描述
我们激动地宣布将BLIP系列延续并更名为XGen-MM,以更好地与Salesforce统一的大模型计划XGen保持一致!这一更名标志着我们在前沿多模态技术持续发展中的重要一步。
XGen-MM
是Salesforce AI Research开发的最新基础大型多模态模型(LMMs)系列。该系列在BLIP
系列成功设计的基础上进行了改进,融入了基础性增强,确保了更强大和卓越的基础。
这些模型已在高质量图像描述数据集和交错图文数据上进行了大规模训练。XGen-MM具有以下特点:
- 预训练基础模型
xgen-mm-phi3-mini-base-r-v1
在5b参数下实现了最先进的性能,并展现出强大的上下文学习能力。
- 指令微调模型
xgen-mm-phi3-mini-instruct-r-v1
在5b参数下在开源和闭源视觉语言模型中均实现了最先进的性能。
xgen-mm-phi3-mini-instruct-r-v1
支持灵活的高分辨率图像编码,具有高效的视觉标记采样能力。
更多技术细节将在即将发布的技术报告中公布。
结果
预训练(未经指令微调的基础模型)
模型 |
样本数 |
COCO (验证集) |
NoCaps (验证集) |
TextCaps (验证集) |
OKVQA (验证集) |
TextVQA (验证集) |
VizWiz (测试开发集) |
VQAv2 (测试开发集) |
Flamingo-3B |
4 |
85.0 |
- |
- |
43.3 |
32.7 |
34 |
53.2 |
|
8 |
90.6 |
- |
- |
44.6 |
32.4 |
38.4 |
55.4 |
MM1-3B |
0 |
73.5 |
55.6 |
63.3 |
26.1 |
29.4 |
15.6 |
46.2 |
|
4 |
112.3 |
99.7 |
84.1 |
48.6 |
45.3 |
38.0 |
57.9 |
|
8 |
114.6 |
104.7 |
88.8 |
48.4 |
44.6 |
46.4 |
63.6 |
xgen-mm-phi3-mini-base-r-v1 (我们的模型) |
0 |
81.7 |
80.2 |
60.7 |
26.5 |
36.0 |
21.2 |
48.1 |
|
4 |
110.5 |
101.7 |
84.6 |
49.2 |
46.1 |
38.4 |
63.9 |
|
8 |
112.1 |
104.4 |
87.7 |
49.1 |
46.4 |
44.3 |
63.8 |
指令微调(指令微调后)
模型 |
SEED-IMG |
MMBench(开发集) |
MME-总分 |
MME-P |
MME-C |
MMStar |
MMMU (验证集) |
MMVet |
MathVista (迷你版) |
ScienceQA (测试集) |
POPE |
AI2D |
|
MM1-3B-Chat |
68.8 |
67.8 |
1761 |
1482 |
279 |
- |
33.9 |
43.7 |
- |
- |
87.4 |
- |
|
openbmb/MiniCPM-V-2 |
67.1 |
69.6 |
1808 |
- |
- |
- |
38.2 |
- |
38.7 |
- |
- |
- |
|
VILA1.5-3B |
67.9 |
63.4 |
- |
1442 |
- |
- |
33.3 |
35.4 |
- |
69.0 |
85.9 |
- |
|
xtuner/llava-phi-3-mini-hf |
70.0 |
69.2 |
1790 |
1477 |
313 |
43.7 |
41.4 |
- |
- |
73.7 |
87.3 |
69.3 |
|
xgen-mm-phi3-mini-instruct-r-v1 (我们的模型) |
72.1 |
74.1 |
1827 |
1467 |
360 |
44.6 |
39.8 |
45.1 |
39.3 |
74.2 |
87.2 |
75.8 |
|
使用方法
> 我们需要使用transformers
库的开发版本("4.41.0.dev0"
)。截至2024年5月7日,可以通过pip uninstall -y transformers && pip install git+https://github.com/huggingface/transformers
安装。
from transformers import AutoModelForVision2Seq, AutoTokenizer, AutoImageProcessor, StoppingCriteria
import torch
import requests
from PIL import Image
def apply_prompt_template(prompt):
s = (
'<|system|>\n一个好奇的用户和人工智能助手之间的对话。'
"助手对用户的问题提供有帮助、详细和礼貌的回答。<|end|>\n"
f'<|user|>\n<image>\n{prompt}<|end|>\n<|assistant|>\n'
)
return s
class EosListStoppingCriteria(StoppingCriteria):
def __init__(self, eos_sequence = [32007]):
self.eos_sequence = eos_sequence
def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor, **kwargs) -> bool:
last_ids = input_ids[:,-len(self.eos_sequence):].tolist()
return self.eos_sequence in last_ids
model_name_or_path = "Salesforce/xgen-mm-phi3-mini-instruct-r-v1"
model = AutoModelForVision2Seq.from_pretrained(model_name_or_path, trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True, use_fast=False, legacy=False)
image_processor = AutoImageProcessor.from_pretrained(model_name_or_path, trust_remote_code=True)
tokenizer = model.update_special_tokens(tokenizer)
img_url = 'https://storage.googleapis.com/sfr-vision-language-research/BLIP/demo.jpg'
raw_image = Image.open(requests.get(img_url, stream=True).raw).convert('RGB')
query = "图片中有多少只狗?"
model = model.cuda()
inputs = image_processor([raw_image], return_tensors="pt", image_aspect_ratio='anyres')
prompt = apply_prompt_template(query)
language_inputs = tokenizer([prompt], return_tensors="pt")
inputs.update(language_inputs)
inputs = {name: tensor.cuda() for name, tensor in inputs.items()}
generated_text = model.generate(**inputs, image_size=[raw_image.size],
pad_token_id=tokenizer.pad_token_id,
do_sample=False, max_new_tokens=768, top_p=None, num_beams=1,
stopping_criteria = [EosListStoppingCriteria()],
)
prediction = tokenizer.decode(generated_text[0], skip_special_tokens=True).split("<|end|>")[0]
print("==> 预测结果: ", prediction)
更多完整示例可在笔记本中找到。
可复现性:
我们的SFT评估基于VLMEvalKit,其中我们修复了与官方基准测试(如LLM评判API)的一些不一致之处。在开发过程中,我们注意到输入图像的原始分辨率在某些情况下会显著影响模型输出。
偏见、风险、限制和伦理考量
主要数据来源包括互联网上的网页、图片库网站以及研究社区发布的精选数据集。由于已知的CSAM问题,我们排除了某些数据,如LAION。
模型可能受到原始数据源的偏见以及LLMs和商业API的偏见影响。
我们强烈建议用户在下游应用前评估安全性和公平性。
伦理考量
此版本仅用于支持学术论文的研究目的。我们的模型、数据集和代码并非为所有下游用途专门设计或评估。我们强烈建议用户在部署此模型前评估并解决与准确性、安全性和公平性相关的潜在问题。我们鼓励用户考虑AI的常见限制,遵守适用法律,并在选择用例时采用最佳实践,特别是对于错误或滥用可能严重影响人们生活、权利或安全的高风险场景。有关用例的进一步指导,请参阅我们的AUP和AI AUP。
许可证
我们的代码和权重根据知识共享署名非商业4.0许可证发布。如需商业使用模型权重,请填写此表格。
代码致谢
LAVIS
openflamingo
VLMEvalKit
引用
@misc{xue2024xgenmmblip3familyopen,
title={xGen-MM (BLIP-3): 一个开放的大型多模态模型家族},
author={Le Xue and Manli Shu and Anas Awadalla and Jun Wang and An Yan and Senthil Purushwalkam and Honglu Zhou and Viraj Prabhu and Yutong Dai and Michael S Ryoo and Shrikant Kendre and Jieyu Zhang and Can Qin and Shu Zhang and Chia-Chih Chen and Ning Yu and Juntao Tan and Tulika Manoj Awalgaonkar and Shelby Heinecke and Huan Wang and Yejin Choi and Ludwig Schmidt and Zeyuan Chen and Silvio Savarese and Juan Carlos Niebles and Caiming Xiong and Ran Xu},
year={2024},
eprint={2408.08872},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2408.08872},
}
故障排除
- 如果缺少任何包,请考虑以下安装:
pip install torch==2.2.1 torchvision==0.17.1 torchaudio==2.2.1 --index-url https://download.pytorch.org/whl/cu121
pip install open_clip_torch==2.24.0
pip install einops
pip install einops-exts
pip install transformers==4.41.1
更新日志
- 2024年5月24日
- 更新代码库以兼容
transformers==4.41.1
。