语言:
- 英语
- 法语
- 罗马尼亚语
- 德语
- 多语言
任务标签: 图像转文本
推理: 不支持
许可证: Apache-2.0
Pix2Struct模型卡片 - TextCaps微调版 - 大模型

目录
- 摘要
- 使用模型
- 贡献
- 引用
摘要
Pix2Struct是一个图像编码器-文本解码器模型,通过图像-文本对进行多任务训练,包括图像描述生成和视觉问答。完整模型列表参见论文表1:

模型摘要指出:
视觉语言无处不在——来源涵盖带图解的教科书、含图像表格的网页,以及带按钮表单的移动应用。可能由于这种多样性,先前研究通常依赖领域特定方案,限制了底层数据、模型架构和目标的共享。我们提出Pix2Struct,一个纯视觉语言理解的预训练图像到文本模型,可微调用于包含视觉语言的任务。Pix2Struct通过解析网页截图掩码为简化HTML进行预训练。网络以其视觉元素丰富性清晰地反映在HTML结构中,为适应下游任务多样性提供了大量预训练数据。直观上,该目标涵盖了OCR、语言建模、图像描述等常见预训练信号。除新颖的预训练策略外,我们还引入了可变分辨率输入表示和更灵活的语言视觉输入集成,问题等语言提示直接渲染在输入图像上。首次证明单个预训练模型能在文档、插图、用户界面和自然图像四个领域的九项任务中,六项达到最先进效果。
使用模型
从T5x转换到huggingface
使用convert_pix2struct_checkpoint_to_pytorch.py
脚本:
python convert_pix2struct_checkpoint_to_pytorch.py --t5x_checkpoint_path T5X检查点路径 --pytorch_dump_path 保存路径
转换大模型时添加:
python convert_pix2struct_checkpoint_to_pytorch.py --t5x_checkpoint_path T5X检查点路径 --pytorch_dump_path 保存路径 --use-large
转换后可通过以下代码推送模型:
from transformers import Pix2StructForConditionalGeneration, Pix2StructProcessor
model = Pix2StructForConditionalGeneration.from_pretrained(保存路径)
processor = Pix2StructProcessor.from_pretrained(保存路径)
model.push_to_hub("用户名/模型名")
processor.push_to_hub("用户名/模型名")
运行模型
CPU全精度运行:
import requests
from PIL import Image
from transformers import Pix2StructForConditionalGeneration, Pix2StructProcessor
url = "https://www.ilankelman.org/stopsigns/australia.jpg"
image = Image.open(requests.get(url, stream=True).raw)
model = Pix2StructForConditionalGeneration.from_pretrained("google/pix2struct-textcaps-base")
processor = Pix2StructProcessor.from_pretrained("google/pix2struct-textcaps-base")
inputs = processor(images=image, return_tensors="pt")
predictions = model.generate(**inputs)
print(processor.decode(predictions[0], skip_special_tokens=True))
>>> 街景中有个写着"STOP"的标识牌
GPU全精度运行:
model = Pix2StructForConditionalGeneration.from_pretrained("google/pix2struct-textcaps-large").to("cuda")
processor = Pix2StructProcessor.from_pretrained("google/pix2struct-textcaps-large")
inputs = processor(images=image, return_tensors="pt").to("cuda")
GPU半精度运行:
model = Pix2StructForConditionalGeneration.from_pretrained("google/pix2struct-textcaps-large", torch_dtype=torch.bfloat16).to("cuda")
inputs = processor(images=image, return_tensors="pt").to("cuda", torch.bfloat16)
调整序列长度
模型默认训练序列长度4096。可通过max_patches
参数减少内存占用(但可能影响性能):
inputs = processor(images=image, return_tensors="pt", max_patches=1024)
条件生成
可添加前缀文本进行条件生成:
text = "一张包含"
inputs = processor(images=image, text=text, return_tensors="pt")
贡献
该模型由Kenton Lee、Mandar Joshi等人原创贡献,Younes Belkada接入Hugging Face生态。
引用
若需引用,请参考原论文:
@misc{https://doi.org/10.48550/arxiv.2210.03347,
doi = {10.48550/ARXIV.2210.03347},
url = {https://arxiv.org/abs/2210.03347},
author = {Lee, Kenton and Joshi, Mandar and Turc, Iulia and Hu, Hexiang and Liu, Fangyu and Eisenschlos, Julian and Khandelwal, Urvashi and Shaw, Peter and Chang, Ming-Wei and Toutanova, Kristina},
title = {Pix2Struct: Screenshot Parsing as Pretraining for Visual Language Understanding},
publisher = {arXiv},
year = {2022},
copyright = {Creative Commons Attribution 4.0 International}
}