🚀 Fuyu-8B模型卡片
Fuyu-8B是一款多模态模型的轻量版本,为我们的产品提供支持。该模型已在HuggingFace上发布。我们认为Fuyu-8B令人期待,原因如下:
- 与其他多模态模型相比,其架构和训练过程更为简单,便于理解、扩展和部署。
- 它专为数字智能体设计,能够支持任意图像分辨率,回答有关图表和示意图的问题、基于用户界面的问题,并在屏幕图像上进行细粒度定位。
- 响应速度快,处理大尺寸图像的响应时间少于100毫秒。
- 尽管针对特定用例进行了优化,但在标准图像理解基准测试(如图像问答和自然图像描述)中仍表现出色。
请注意,我们发布的是基础模型。针对特定用例(如详细描述或多模态对话),您可能需要对模型进行微调。根据我们的经验,该模型在少样本学习和针对各种用例的微调方面表现良好。
🚀 快速开始
模型简介
Fuyu-8B 是由 Adept AI 训练的多模态文本和图像Transformer模型。
从架构上看,Fuyu是一个纯粹的仅解码器Transformer模型,没有图像编码器。相反,图像块被线性投影到Transformer的第一层,绕过了嵌入查找。我们简单地将Transformer解码器视为图像Transformer(尽管没有池化和因果注意力)。更多细节请参考下图。

这种简化使我们能够支持任意图像分辨率。为此,我们将图像令牌序列视为文本令牌序列。我们移除了特定于图像的位置嵌入,并按光栅扫描顺序输入所需数量的图像令牌。为了告知模型一行何时结束,我们使用了一个特殊的图像换行符。模型可以利用现有的位置嵌入来推理不同的图像大小,并且我们可以在训练时使用任意大小的图像,从而无需单独的高分辨率和低分辨率训练阶段。
模型描述
属性 |
详情 |
开发方 |
Adept-AI |
模型类型 |
仅解码器多模态Transformer模型 |
许可证 |
CC-BY-NC |
模型描述 |
这是一个多模态模型,可以处理图像和文本并生成文本。 |
更多信息资源 |
请查看我们的 博客文章。 |
✨ 主要特性
架构简化
Fuyu-8B采用了简洁的架构,没有图像编码器,图像块直接线性投影到Transformer的第一层,这种设计不仅简化了模型结构,还支持任意图像分辨率。
多模态处理能力
能够处理图像和文本输入,并生成文本输出,可用于图像问答、自然图像描述等多种任务。
快速响应
处理大尺寸图像的响应时间少于100毫秒,适用于对实时性要求较高的场景。
📦 安装指南
文档未提及安装步骤,故跳过此章节。
💻 使用示例
基础用法
from transformers import FuyuProcessor, FuyuForCausalLM
from PIL import Image
import requests
model_id = "adept/fuyu-8b"
processor = FuyuProcessor.from_pretrained(model_id)
model = FuyuForCausalLM.from_pretrained(model_id, device_map="cuda:0")
text_prompt = "Generate a coco-style caption.\n"
url = "https://huggingface.co/adept/fuyu-8b/resolve/main/bus.png"
image = Image.open(requests.get(url, stream=True).raw)
inputs = processor(text=text_prompt, images=image, return_tensors="pt").to("cuda:0")
generation_output = model.generate(**inputs, max_new_tokens=7)
generation_text = processor.batch_decode(generation_output[:, -7:], skip_special_tokens=True)
assert generation_text == ['A blue bus parked on the side of a road.']
高级用法
text_prompt = "What color is the bus?\n"
url = "https://huggingface.co/adept/fuyu-8b/resolve/main/bus.png"
image = Image.open(requests.get(url, stream=True).raw)
inputs = processor(text=text_prompt, images=image, return_tensors="pt").to("cuda:0")
generation_output = model.generate(**inputs, max_new_tokens=6)
generation_text = processor.batch_decode(generation_output[:, -6:], skip_special_tokens=True)
assert generation_text == ["The bus is blue.\n"]
text_prompt = "What is the highest life expectancy at birth of male?\n"
url = "https://huggingface.co/adept/fuyu-8b/resolve/main/chart.png"
image = Image.open(requests.get(url, stream=True).raw)
model_inputs = processor(text=text_prompt, images=image, return_tensors="pt").to("cuda:0")
generation_output = model.generate(**model_inputs, max_new_tokens=16)
generation_text = processor.batch_decode(generation_output[:, -16:], skip_special_tokens=True)
assert generation_text == ["The life expectancy at birth of males in 2018 is 80.7.\n"]
💡 使用建议
为获得最佳性能,建议像上述示例一样,在问题末尾加上 \n
。
📚 详细文档
评估结果
尽管评估并非该模型的重点,但我们仍在标准图像理解基准测试中对其进行了评估:
评估任务 |
Fuyu-8B |
Fuyu-Medium |
LLaVA 1.5 (13.5B) |
QWEN-VL (10B) |
PALI-X (55B) |
PALM-e-12B |
PALM-e-562B |
VQAv2 |
74.2 |
77.4 |
80 |
79.5 |
86.1 |
76.2 |
80.0 |
OKVQA |
60.6 |
63.1 |
n/a |
58.6 |
66.1 |
55.5 |
66.1 |
COCO Captions |
141 |
138 |
n/a |
n/a |
149 |
135 |
138 |
AI2D |
64.5 |
73.7 |
n/a |
62.3 |
81.2 |
n/a |
n/a |
使用场景
直接使用
该模型仅用于研究目的。由于这是一个原始模型版本,我们未添加进一步的微调、后处理或采样策略来控制不良输出。您可能需要针对特定用例对模型进行微调。
可能的研究领域和任务包括:
- 计算机控制或数字智能体应用。
- 多模态模型的一般研究。
以下是不适用的使用场景。
超出适用范围的使用
该模型并非用于生成关于人物或事件的事实性或真实性内容,因此使用该模型生成此类内容超出了其能力范围。
🔧 技术细节
局限性
偏差
尽管这些模型的能力令人印象深刻,但它们也可能强化或加剧社会偏差。
📄 许可证
本模型采用 CC-BY-NC 许可证。