许可证:apache-2.0
支持语言:
- 英语
- 法语
- 罗马尼亚语
- 德语
任务标签:图像转文本
标签:
- 引用表达式
- 用户界面
由于谷歌未转换并上传文件,我将他们在gcloud中的检查点转换为HF格式。
Pix2Struct模型卡片 - 基于UI引用表达式数据集微调

目录
- 摘要
- 使用模型
- 贡献
- 引用
摘要
Pix2Struct-RefExp细节(基于其预处理)
-> 输入:一张图像,其中候选对象周围绘制了边界框,并包含引用表达式的标题(存储在图像特征中)。
-> 输出:布尔标志(解析特征),指示候选对象是否为引用表达式的正确指代对象。
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全精度运行:
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").to("cuda")
processor = Pix2StructProcessor.from_pretrained("google/pix2struct-textcaps-base")
inputs = processor(images=image, return_tensors="pt").to("cuda")
predictions = model.generate(**inputs)
print(processor.decode(predictions[0], skip_special_tokens=True))
>>> 街角有一个停车标志。
GPU半精度运行:
import requests
import torch
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", torch_dtype=torch.bfloat16).to("cuda")
processor = Pix2StructProcessor.from_pretrained("google/pix2struct-textcaps-base")
inputs = processor(images=image, return_tensors="pt").to("cuda", torch.bfloat16)
predictions = model.generate(**inputs)
print(processor.decode(predictions[0], skip_special_tokens=True))
>>> 街角有一个停车标志。
调整序列长度
模型训练序列长度为2048
。可减少长度以节省内存,但短序列(<512)可能导致性能下降。通过max_patches
参数设置:
inputs = processor(images=image, return_tensors="pt", max_patches=512)
条件生成
可添加输入文本进行条件生成:
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)
text = "一张图片显示"
model = Pix2StructForConditionalGeneration.from_pretrained("google/pix2struct-textcaps-base")
processor = Pix2StructProcessor.from_pretrained("google/pix2struct-textcaps-base")
inputs = processor(images=image, text=text, return_tensors="pt")
predictions = model.generate(**inputs)
print(processor.decode(predictions[0], skip_special_tokens=True))
>>> 一张图片显示停车标志上写着“是”。
贡献
该模型最初由Kenton Lee、Mandar Joshi等人贡献,并由Murali Manohar引入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: 截图解析作为视觉语言理解的预训练},
publisher = {arXiv},
year = {2022},
copyright = {知识共享署名4.0国际许可}
}