[阅读笔记] Pix2struct: screenshot作为视觉语言理解的预训练
论文分享pix2struct,Google于2023年推出了开源项目Pix2struct,用于从图像中提取结构化信息,如表格、流程图等(图生文)。
论文链接:https://arxiv.org/abs/2210.03347
模型部署:click here
在CV领域,尝尝需要解决将图片信息转化为可操作的数据或结构化表示。Google于2023年推出了开源项目Pix2struct,用于从图像中提取结构化信息,如表格、流程图等(图生文)。
模型
该模型的结构是基于ViT的图像编码器加文本解码器。
其核心基于Transformer(通常在NLP中表现出色)。它首先利用CNN对输入图像进行特征提取,然后将这些特征传递给Transformer,以生成对应图像的结构化描述。这种端到端的学习方式使得模型能够直接从像素数据中学习到复杂的模式和结构。
三点创新
- 创新1:提出一个新的预训练模型:用这盖住的网页截图来预测其对应的HTML。
- 创新2:为ViT引入了可变分辨率的输入表示。
- 创新3:引入了新的微调策略,将文本prompt直接渲染在图像上方,无缝集成视觉与语言输入。
但是作者这里对ViT输入做了一些改进,首先等比例缩放图像,保证固定尺寸的patch个数能够达到最大序列长度,之后使用二维绝对位置嵌入。这样有两个好处,首先可以应对极端的图像长宽比,其次可以实时修改序列长度和分辨率。
训练
预训练
预训练时使用自监督的网页截图和其HTML来作为训练数据,另外为了更好地上下文建模,作者还对网页中50%的文字进行了mask。流程如下所示。
这种预训练策略集成了另外几个预训练策略,预测截图上未遮挡的部分,预测被遮挡的部分类似完形填空,预测图像标签的属性类似图像转caption的过程。
warmup
这是因为直接预训练会导致训练过程不稳定且学习缓慢。而通过课程学习(在一个简单的任务上进行训练)有两点好处,首先是模型训练更稳定且收敛更快了,然后就是微调之后性能更好了。
热身时训练任务就是下图展示的这样,从BooksCorpus抽取不超过128个字节的文本,然后设置随机颜色随机字体,让模型根据截图来预测实际文本。
Finetuning
微调过程较简单,是对于不同下游任务进行要数据预处理。对于生成Caption的任务不需要特别处理,对于VQA类的任务将问题直接渲染在图像上方。
结果
Pix2Struct在9个基准测试中有8个优于之前的可视化方法,其中6个优于SOTA测试结果。虽然GIT2的图像字幕预训练可以理解地帮助TextCaps,但截图解析转移到更广泛的下游任务。各个管道SOTA方法在第4节中描述,完整的结果在附录B中。
这项工作的更广泛目标是使视觉语言理解的预训练更接近基于文本的预训练,并为数据和模型缩放带来的类似好处铺平道路。
Attention
在进行复现尝试中,在某些下游任务比如 widget caption中,开源内容中缺少一个bounding box来描述header,部分下游任务没有开源,目前已知可复现的项目为DocVQA去进行conditional generation。
更多推荐
所有评论(0)