模型简介
模型特点
模型能力
使用案例
🚀 XGen-MM系列大模型
XGen-MM是Salesforce AI Research研发的一系列最新大型多模态基础模型。该系列在BLIP系列的成功设计基础上进行了改进,为多模态技术提供了更强大的基础。这些模型在高质量图像描述数据集和交错的图像文本数据上进行了大规模训练,具有出色的性能和特性。
🚀 快速开始
你可以按照以下步骤使用XGen-MM
模型:
from transformers import AutoModelForVision2Seq, AutoTokenizer, AutoImageProcessor
import requests
from PIL import Image
import IPython.display as display
import torch
model_name_or_path = "Salesforce/xgen-mm-phi3-mini-base-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=True, legacy=False)
image_processor = AutoImageProcessor.from_pretrained(model_name_or_path, trust_remote_code=True)
tokenizer = model.update_special_tokens(tokenizer)
model = model.to('cuda')
tokenizer.padding_side = "left"
def apply_prompt_template(prompt, num_images=1, num_tokens_per_vis = 128, in_context=False, output=None):
"""
num_tokens_per_vis: model.vlm.num_tokens_per_vis
"""
placeholder_image_tokens = "<image placeholder>" * (num_tokens_per_vis - 1)
if in_context:
formatted_prompt = f"<image>{placeholder_image_tokens}" + f"{prompt}" + f"{output}" + "<|endofchunk|>"
else:
formatted_prompt = f"<image>{placeholder_image_tokens}"*num_images + f"{prompt}"
return formatted_prompt
############ Zero shot inference ##########
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')
instruction = "Describe what is the dog doing in this image in one sentence:"
print("==> Instruction: ", instruction)
print("==> Image: ")
display.display(raw_image.resize((int(raw_image.width*0.3), int(raw_image.height*0.3))))
inputs = image_processor([raw_image], return_tensors="pt")
prompt = apply_prompt_template(instruction)
language_inputs = tokenizer([prompt], return_tensors="pt")
inputs.update(language_inputs)
inputs = {name: tensor.cuda() for name, tensor in inputs.items()}
with torch.cuda.amp.autocast(dtype=torch.bfloat16):
generated_text = model.generate(**inputs,
pad_token_id=tokenizer.pad_token_id,
do_sample=False, max_new_tokens=64, top_p=None, num_beams=1,
length_penalty=1.0, repetition_penalty=3.0)
prediction = tokenizer.decode(generated_text[0], skip_special_tokens=True)
print("==> prediciton: ", prediction)
print("-"*120)
# ==> prediciton: The dog is sitting on the beach and waving at his owner.
更多全面的示例可在notebook中找到,其中分别提供了零样本和少样本示例。
✨ 主要特性
- 预训练基础模型:
xgen-mm-phi3-mini-base-r-v1
在50亿参数下达到了最先进的性能,并展示了强大的上下文学习能力。 - 指令微调模型:
xgen-mm-phi3-mini-instruct-r-v1
在50亿参数的开源和闭源视觉语言模型中达到了最先进的性能。 - 灵活的高分辨率图像编码:
xgen-mm-phi3-mini-instruct-r-v1
支持灵活的高分辨率图像编码,并采用高效的视觉令牌采样。
📚 详细文档
模型描述
我们很高兴地宣布,将我们的BLIP系列更名为XGen-MM,以更好地与Salesforce统一的大型基础模型XGen计划保持一致!这次品牌重塑标志着我们在前沿多模态技术持续发展中的重要一步。
XGen-MM
是Salesforce AI Research开发的一系列最新大型多模态基础模型(LMMs)。该系列在BLIP
系列的成功设计基础上进行了改进,融入了基础增强功能,确保了更强大、更卓越的基础。这些模型在高质量图像描述数据集和交错的图像文本数据上进行了大规模训练。XGen-MM具有以下几个特点:
结果
预训练(无指令微调的基础模型)
模型 | 样本数 | 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 |
可重复性
我们的SFT评估基于VLMEvalKit,在其中我们修复了与官方基准测试(如LLM评判API)的一些不一致之处。在开发过程中,我们注意到在某些情况下,输入图像的原始分辨率会显著影响模型输出。
偏差、风险、局限性和伦理考量
主要数据来源来自互联网,包括网页、图像素材网站和研究社区发布的精选数据集。由于已知的CSAM问题,我们排除了某些数据,如LAION。模型可能会受到原始数据源的偏差以及大语言模型和商业API的偏差影响。我们强烈建议用户在应用于下游任务之前评估安全性和公平性。
伦理考量
此版本仅用于支持学术论文的研究目的。我们的模型、数据集和代码并非专门为所有下游用途设计或评估。我们强烈建议用户在部署此模型之前评估并解决与准确性、安全性和公平性相关的潜在问题。我们鼓励用户考虑人工智能的常见局限性,遵守适用法律,并在选择用例时采用最佳实践,特别是在错误或滥用可能对人们的生活、权利或安全产生重大影响的高风险场景中。有关用例的进一步指导,请参考我们的AUP和AI AUP。
🔧 技术细节
该模型用于研究目的,更多技术细节将随技术报告很快公布。
📄 许可证
我们的代码和权重遵循Apache-2.0许可证发布。训练数据的版权归原始数据所有者所有。
代码致谢
引用
@misc{xue2024xgenmmblip3familyopen,
title={xGen-MM (BLIP-3): A Family of Open Large Multimodal Models},
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
。








