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

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

模型摘要指出:
视觉化语言无处不在——来源涵盖带图解的教科书、含图像表格的网页,以及带按钮表单的移动应用。可能由于这种多样性,先前研究通常依赖领域特定方法,限制了底层数据、模型架构和目标的共享。我们提出Pix2Struct,一个纯视觉语言理解的预训练图像到文本模型,可微调用于包含视觉化语言的任务。Pix2Struct通过解析网页截图掩码为简化HTML进行预训练。网络以其视觉元素丰富性清晰地反映在HTML结构中,为适应下游任务多样性提供了大量预训练数据源。直观上,该目标涵盖了OCR、语言建模、图像描述等常见预训练信号。除新颖的预训练策略外,我们还引入了可变分辨率输入表示和更灵活的语言视觉输入整合方式,问题等语言提示直接渲染在输入图像上。首次证明单个预训练模型能在文档、插图、用户界面和自然图像四大领域的九项任务中,六项达到最先进效果。
使用模型
从T5x转换至HuggingFace
使用以下脚本转换:
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))
>>> 街角有一个停车标志。
GPU全精度模式
model = Pix2StructForConditionalGeneration.from_pretrained("google/pix2struct-textcaps-base").to("cuda")
inputs = processor(images=image, return_tensors="pt").to("cuda")
GPU半精度模式
model = Pix2StructForConditionalGeneration.from_pretrained("google/pix2struct-textcaps-base", torch_dtype=torch.bfloat16).to("cuda")
inputs = processor(images=image, return_tensors="pt").to("cuda", torch.bfloat16)
调整序列长度
模型默认训练序列长度为2048。可通过max_patches
参数减少长度以节省内存(但低于512可能影响性能):
inputs = processor(images=image, return_tensors="pt", max_patches=512)
条件生成
可添加前缀文本进行条件生成:
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}
}