【人工智能】Transformers之Pipeline(二十三):文档视觉问答(document-question-answering)

​​​​​​​

目录

一、引言 

二、文档问答(document-question-answering)

2.1 概述

2.2 impira/layoutlm-document-qa

2.2.1 LayoutLM v1

2.2.2 LayoutLM v2

2.2.3 LayoutXLM

2.2.4 LayoutLM v3

2.3 pipeline参数

2.3.1 pipeline对象实例化参数

2.3.2 pipeline对象使用参数 

2.3.3 pipeline返回参数 ​​​​​​​​​​​​​​

2.4 pipeline实战

2.5 模型排名

三、总结


一、引言 

pipeline(管道)是huggingface transformers库中一种极简方式使用大模型推理的抽象,将所有大模型分为音频(Audio)、计算机视觉(Computer vision)、自然语言处理(NLP)、多模态(Multimodal)等4大类,28小类任务(tasks)。共计覆盖32万个模型

今天介绍多模态的第一篇:文档问答(document-question-answering),在huggingface库内有201个文档问答(document-question-answering)模型。

二、文档问答(document-question-answering)

2.1 概述

文档问答(也称为文档视觉问答)是回答文档图像上的问题的任务。文档问答模型以(文档,问题)对作为输入,并以自然语言返回答案。模型通常依赖于多模态特征,结合文本、单词位置(边界框)和图像。

2.2 impira/layoutlm-document-qa

LayoutLM系列模型是微软发布的、文档理解多模态基础模型领域最重要和有代表性的工作。目前为止总计发布LayoutLM v1、LayoutLM v2、LayoutXLM、LayoutLM v3四个版本:

  • LayoutLM v1:首次在一个框架内联合学习文本(text)和布局(layout)用于文档级预训练的模型。
  • LayoutLM v2:在一个单一的多模态框架中对文本(text)、布局(layout)和图像(image)之间的交互进行建模。
  • LayoutXLM:LayoutXLM是 LayoutLMv2的多语言扩展版本。
  • LayoutLM v3:借鉴了ViLT和BEIT,不需要经过预训练的视觉backbone,通过MLM、MIM和WPA进行预训练的多模态Transformer。在以视觉为中心的任务上(如文档图像分类和文档布局分析)和以文本为中心的任务上(表单理解、收据理解、文档问答)都表现很好。

2.2.1 LayoutLM v1

LayoutLMv1的架构相当简洁,其输入源于表格图像(见图3右下角),该图像经处理后产出两部分关键信息:

  1. 文本特征表示:这一过程涉及从图像中提取文字信息。具体来说,通过应用PDF/OCR技术,图像被解析为一系列bounding boxes(边界框),每个框界定了一段文本的位置,用坐标(x0, y0, x1, y1)表示,相当于文本在表单中的位置编码。接下来,执行文本嵌入,这是NLP领域的一项基本操作,即将识别的文字转换为高维向量。此外,为了整合位置信息,这些坐标经过归一化处理至0到1000之间,旨在消除因图像尺寸差异可能引起的识别偏差。
  2. 图像特征表示:至于图像本身的特征提取,则借助Faster R-CNN模型作为基础网络,负责捕捉图像的视觉特征。特别地,为了与文本特征中的[CLS]标记相对应,采用整个图像的ROI特征作为全局表示,其余特征则与特定文本块一一匹配

完成上述步骤后,经过预训练的模型(LayoutLM依然依托Transformer架构)会融合这些经过预处理的文本特征与图像特征。此综合特征向量随后可被用于各种下游任务的进一步处理和分析。

2.2.2 LayoutLM v2

文本和版式的预训练已经在多种富含视觉元素的文档理解任务中证明了其有效性,这得益于其高效的模型架构以及大规模未标注扫描/数字文档的优势。微软提出了LayoutLMv2架构,并引入新的预训练任务,以便在一个单一的多模态框架中对文本、版式和图像之间的交互进行建模。具体而言,通过使用双流多模态Transformer编码器,LayoutLMv2不仅利用现有的掩码视觉语言建模任务,还采用了新的文本-图像对齐和文本-图像匹配任务,这使得模型在预训练阶段能更好地捕捉跨模态交互。同时,它还将空间感知的自注意力机制整合到Transformer架构中,从而使模型能够充分理解不同文本块之间的相对位置关系。实验结果显示,LayoutLMv2大幅度超越了LayoutLM,并在多种下游富含视觉元素的文档理解任务上达到了新的最佳水平,包括FUNSD(0.7895 → 0.8420)、CORD(0.9493 → 0.9601)、SROIE(0.9524 → 0.9781)、Kleister-NDA(0.8340 → 0.8520)、RVL-CDIP(0.9443 → 0.9564)以及DocVQA(0.7295 → 0.8672)。

2.2.3 LayoutXLM

LayoutXLM是 LayoutLMv2的多语言扩展版本。结合文本、版式和图像的多模态预训练已经在视觉丰富的文档理解任务上达到了最先进的(SOTA)性能,这展示了跨不同模态联合学习的巨大潜力。LayoutXLM是一个面向多语言文档理解的多模态预训练模型,旨在为视觉丰富的文档理解打破语言障碍。为了准确评估LayoutXLM,论文中还引入了一个多语言表单理解基准数据集,名为XFUND,该数据集包含了7种语言(中文、日语、西班牙语、法语、意大利语、德语、葡萄牙语)的表单理解样本,并为每种语言的手工标注了键值对。实验结果表明,LayoutXLM模型在XFUND数据集上显著超越了它之前的跨语言预训练模型的SOTA性能。

2.2.4 LayoutLM v3

自监督预训练技术在文档AI领域取得了显著进展。大多数多模态预训练模型采用掩码语言建模(MLM)目标来学习文本模态上的双向表示,但它们在图像模态的预训练目标上存在差异。这种不一致性为多模态表示学习增加了难度。LayoutLMv3旨在通过统一的文本和图像掩码方式预训练多模态Transformer以服务文档AI。此外,LayoutLMv3还通过word-patch alignment目标进行预训练,通过预测文本词对应的图像块是否被掩码,来学习跨模态对齐

这一简单统一的架构和训练目标使得LayoutLMv3成为既适用于文本为中心也适用于图像为中心的文档AI任务的通用预训练模型。

实验结果表明,LayoutLMv3不仅在以文本为中心的任务上,包括表单理解、收据理解及文档视觉问答,取得了最前沿的表现,而且在以图像为中心的任务上,如文档图像分类和文档布局分析,也同样表现出色

如下图所示,与之前的工作(例如,DocFormer[2]和SelfDoc[31])的比较:

(1)图像嵌入:LayoutLMv3使用线性patches来减少CNN的计算瓶颈,并消除在训练目标检测器时对区域监督的需求;

(2)图像模态的预训练目标:LayoutLMv3学习重构遮罩patches的离散图像tokens,而不是原始像素或区域特征,以捕获高层次的布局结构而不是噪声细节

2.3 pipeline参数

2.3.1 pipeline对象实例化参数

  • model(PreTrainedModel或TFPreTrainedModel)— 管道将使用其进行预测的模型。 对于 PyTorch,这需要从PreTrainedModel继承;对于 TensorFlow,这需要从TFPreTrainedModel继承。
  • tokenizer ( PreTrainedTokenizer ) — 管道将使用其对模型的数据进行编码的 tokenizer。此对象继承自 PreTrainedTokenizer。
  • image_processor ( BaseImageProcessor ) — 管道将使用的图像处理器来为模型编码数据。此对象继承自 BaseImageProcessor。
  • modelcardstrModelCard可选) — 属于此管道模型的模型卡。
  • frameworkstr可选)— 要使用的框架,"pt"适用于 PyTorch 或"tf"TensorFlow。必须安装指定的框架。
  • taskstr,默认为"")— 管道的任务标识符。
  • num_workersint可选,默认为 8)— 当管道将使用DataLoader(传递数据集时,在 Pytorch 模型的 GPU 上)时,要使用的工作者数量。
  • batch_sizeint可选,默认为 1)— 当管道将使用DataLoader(传递数据集时,在 Pytorch 模型的 GPU 上)时,要使用的批次的大小,对于推理来说,这并不总是有益的,请阅读使用管道进行批处理。
  • args_parser(ArgumentHandler,可选) - 引用负责解析提供的管道参数的对象。
  • deviceint可选,默认为 -1)— CPU/GPU 支持的设备序号。将其设置为 -1 将利用 CPU,设置为正数将在关联的 CUDA 设备 ID 上运行模型。您可以传递本机torch.devicestr
  • torch_dtypestrtorch.dtype可选) - 直接发送model_kwargs(只是一种更简单的快捷方式)以使用此模型的可用精度(torch.float16,,torch.bfloat16...或"auto"
  • binary_outputbool可选,默认为False)——标志指示管道的输出是否应以序列化格式(即 pickle)或原始输出数据(例如文本)进行。

2.3.2 pipeline对象使用参数 

  • imagestrPIL.Image)——管道处理三种类型的图像:

    • 包含指向图像的 http 链接的字符串
    • 包含图像本地路径的字符串
    • 直接在 PIL 中加载的图像

    该管道可以接受单幅图像或一批图像。如果给定单幅图像,则可以将其广播到多个问题。

  • questionstr) — 针对文档提出的问题。
  • word_boxesList[str, Tuple[float, float, float, float]]可选)— 单词和边界框的列表(标准化 0->1000)。如果您提供此可选输入,则管道将使用这些单词和边界框,而不是在图像上运行 OCR 来为需要它们的模型(例如 LayoutLM)导出它们。这允许您在管道的多次调用中重复使用 OCR 的结果,而不必每次都重新运行它。
  • top_k可选int,默认为 1)— 返回的答案数量(将按可能性顺序选择)。请注意,如果上下文中没有足够的选项,我们将返回少于 top_k 个答案。
  • doc_strideint可选,默认为 128)— 如果文档中的单词太长,无法满足模型的问题,则会将其分成几个部分,并有一定的重叠。此参数控制重叠的大小。
  • max_answer_lenint可选,默认为 15)——预测答案的最大长度(例如,只考虑长度较短的答案)。
  • max_seq_len ( int可选,默认为 384) — 传递给模型的每个块的标记中整个句子(上下文 + 问题)的最大长度。如果需要,上下文将被分成几个块(使用doc_stride重叠)。
  • max_question_len ( int可选,默认为 64) — 标记化后问题的最大长度。如果需要,它将被截断。
  • handle_impossible_answerbool可选,默认为False)——我们是否接受不可能作为答案。
  • langstr可选)— 运行 OCR 时使用的语言。默认为英语。
  • tesseract_configstr可选)——运行 OCR 时传递给 tesseract 的附加标志。
  • timeout可选float,默认为 None)— 等待从网络获取图像的最长时间(以秒为单位)。如果为 None,则不设置超时,并且调用可能会永远阻塞。

2.3.3 pipeline返回参数 ​​​​​​​​​​​​​​

  • scorefloat)—— 与答案相关的概率。
  • start ( int) — 答案的起始词索引(在输入的 OCR 版本中或提供的 中 word_boxes)。
  • end ( int) — 答案的结束词索引(在输入的 OCR 版本中或提供的 中 word_boxes)。
  • answerstr) — 问题的答案。
  • words ( list[int]) — 答案中每个单词/框对的索引

2.4 pipeline实战

基于pipeline的document-question-answering任务,采用impira/layoutlm-document-qa进行文档视觉问答,代码如下:

import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
os.environ["CUDA_VISIBLE_DEVICES"] = "2"

from transformers import pipeline
from PIL import Image

document_qa = pipeline(task="document-question-answering",model="impira/layoutlm-document-qa")
image = Image.open("./image.jpg")                   
output=document_qa(
    image=image,
    question="What is the purchase amount?",
)
print(output)

需要先安装tesseract-ocr:

apt-get install tesseract-ocr

执行后,自动下载模型文件并进行识别:

2.5 模型排名

在huggingface上,我们将文档视觉问答(document-question-answering)模型按热度从高到低排序,总计200个模型,layoutlm排名第一。

三、总结

本文对transformers之pipeline的文档视觉问答(document-question-answering)从概述、技术原理、pipeline参数、pipeline实战、模型排名等方面进行介绍,读者可以基于pipeline使用文中的2行代码极简的使用多模态中的文档视觉问答(document-question-answering)模型。

期待您的3连+关注,如何还有时间,欢迎阅读我的其他文章:

《Transformers-Pipeline概述》

【人工智能】Transformers之Pipeline(概述):30w+大模型极简应用

《Transformers-Pipeline 第一章:音频(Audio)篇》

【人工智能】Transformers之Pipeline(一):音频分类(audio-classification)

【人工智能】Transformers之Pipeline(二):自动语音识别(automatic-speech-recognition)

【人工智能】Transformers之Pipeline(三):文本转音频(text-to-audio/text-to-speech)

【人工智能】Transformers之Pipeline(四):零样本音频分类(zero-shot-audio-classification)

《Transformers-Pipeline 第二章:计算机视觉(CV)篇》

【人工智能】Transformers之Pipeline(五):深度估计(depth-estimation)

【人工智能】Transformers之Pipeline(六):图像分类(image-classification)

【人工智能】Transformers之Pipeline(七):图像分割(image-segmentation)

【人工智能】Transformers之Pipeline(八):图生图(image-to-image)

【人工智能】Transformers之Pipeline(九):物体检测(object-detection)

【人工智能】Transformers之Pipeline(十):视频分类(video-classification)

【人工智能】Transformers之Pipeline(十一):零样本图片分类(zero-shot-image-classification)

【人工智能】Transformers之Pipeline(十二):零样本物体检测(zero-shot-object-detection)​​​​​​​

《Transformers-Pipeline 第三章:自然语言处理(NLP)篇》

【人工智能】Transformers之Pipeline(十三):填充蒙版(fill-mask)​​​​​​​

【人工智能】Transformers之Pipeline(十四):问答(question-answering)

【人工智能】Transformers之Pipeline(十五):总结(summarization)

【人工智能】Transformers之Pipeline(十六):表格问答(table-question-answering)

【人工智能】Transformers之Pipeline(十七):文本分类(text-classification)

【人工智能】Transformers之Pipeline(十八):文本生成(text-generation)​​​​​​​

【人工智能】Transformers之Pipeline(十九):文生文(text2text-generation)

【人工智能】Transformers之Pipeline(二十):令牌分类(token-classification)

【人工智能】Transformers之Pipeline(二十一):翻译(translation)

【人工智能】Transformers之Pipeline(二十二):零样本文本分类(zero-shot-classification)

《Transformers-Pipeline 第四章:多模态(Multimodal)篇》

【人工智能】Transformers之Pipeline(二十三):文档问答(document-question-answering)

【人工智能】Transformers之Pipeline(二十四):特征抽取(feature-extraction)

【人工智能】Transformers之Pipeline(二十五):图片特征抽取(image-feature-extraction)

【人工智能】Transformers之Pipeline(二十六):图片转文本(image-to-text)

【人工智能】Transformers之Pipeline(二十七):掩码生成(mask-generation)

【人工智能】Transformers之Pipeline(二十八):视觉问答(visual-question-answering)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/914382.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入浅出 ChatGPT 底层原理:Transformer

Transformer 在人工智能和自然语言处理领域,Transformer架构的出现无疑是一个里程碑式的突破。它不仅推动了GPT(Generative Pre-trained Transformer)等大型语言模型的发展,还彻底改变了我们处理和理解自然语言的方式。 GPT与Transformer GPT 近几年,人工智能技…

显示器接口种类 | 附图片

显示器接口类型主要包括VGA、DVI、HDMI、DP和USB Type-C等。 VGA、DVI、HDMI、DP和USB Type-C 1. 观察 VGA接口:15针 DP接口:在DP接口旁,都有一个“D”型的标志。 电脑主机:DP(D) 显示器:VGA(15针) Ref https://cloud.tenc…

【详细】如何优雅地删除 Docker 容器与镜像

内容预览 ≧∀≦ゞ 镜像与容器的区别删除容器和镜像的具体步骤1. 删除容器步骤 1:查看当前运行的容器步骤 2:停止容器步骤 3:删除容器 2. 删除镜像步骤 1:查看镜像列表步骤 2:删除镜像 3. 删除所有容器和镜像 使用 1Pa…

面试击穿mysql

Mysql三大范式: 第一范式(1NF): 不符合第一范式的典型情况是在一个字段中存放多种不同类型的详细信息。例如,在商品表中,若将商品名称、价格和类型都存储在同一个字段中,会带来诸多弊端。首先,在…

RK3568 Android12跳过认证 预置谷歌服务GMS

在Rom开发中需要发布海外版本时基本都需要内置google服务,而规范方式集成的话都需要设备进行认证,获取google应用签名等非常复杂的一套流程,一般大厂才有这些资质和资源,这里介绍一种非常规方式集成GMS,跳过设置认证流程,在RK3568 android12环境亲测有效。 谷歌全家桶中…

算法(第一周)

一周周五,总结一下本周的算法学习,从本周开始重新学习许久未见的算法,当然不同于大一时使用的 C 语言以及做过的简单题,现在是每天一题 C 和 JavaScript(还在学,目前只写了一题) 题单是代码随想…

一文了解珈和科技在农业遥感领域的服务内容和能力

2020年,农业农村部、中央网信办联合印发了《数字农业农村发展规划(2019-2025年)》,对数字农业农村建设作出了具体部署。其中,农业遥感作为推进数字农业农村的重要力量贯穿《规划》始终。 今年10月,农业农村…

基于STM32的智能停车场管理系统设计

引言 本项目基于STM32微控制器设计了一个智能停车场管理系统,通过集成多个传感器模块和控制设备,实现对停车位的实时监测、显示空闲车位数量,并通过车牌识别实现车辆的自动出入管理。该系统能够实时检测停车位的状态,并通过LCD屏…

springboot智慧自习室管理系统-计算机设计毕业源码96430

目录 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.1.1技术可行性 2.1.2经济可行性 2.1.3社会可行性 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 2.2.5 …

光流法与直接法在SLAM中的应用

本文总结视觉SLAM中常用的光流法与直接法 1、Lucas-Kanade光流法 相机所拍摄到的图像随相机视角的变化而变化,这种变化也可以理解为图像中像素的反向移动。“光流”(Optical Flow)是指通过分析连续图像帧来估计场景中像素或特征点的运动的技…

【在Linux世界中追寻伟大的One Piece】多路转接epoll

目录 1 -> I/O多路转接之poll 1.1 -> poll函数接口 1.2 -> poll的优点 1.3 -> poll的缺点 1.4 -> poll示例 1.4.1 -> 使用poll监控标准输入 2 -> I/O多路转接之epoll 2.1 -> 初识epoll 2.2 -> epoll的相关系统调用 2.2.1 -> epoll_cre…

鸿蒙华为商城APP案例

模拟器运行效果如下: 鸿蒙版APP-华为商城-演示视频

在公司中,如何表现出自己的高情商,学会这三句话就可以了

在职场中,高情商的重要性不言而喻。它能帮助你更好地处理人际关系,提升团队协作效率,还能让你在职场上获得更多的机会。 在职场中,适时地给予同事、上级和下属赞美、感谢和鼓励,能够拉近彼此的距离,增强团…

linux进行磁盘分区

1. lsblk查看磁盘信息 2. 进行磁盘分区 fdisk /dev/sdb 输入n 创建一个新的分区 输入p 创建一个主分区 输入1-4的一个分区号 输入开始扇地址 输入分区的大小 100G就是分100G出来 输入wq保存 3. 设置磁盘格式 /dev/sdb1为刚分出来的磁盘空间 mkfs -t ext4 /dev/sdb1 4…

边缘计算在智能物流中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 边缘计算在智能物流中的应用 边缘计算在智能物流中的应用 边缘计算在智能物流中的应用 引言 边缘计算概述 定义与原理 发展历程 …

恒创科技:什么是 RAID 3 ? RAID 3、4 和5之间有什么区别?

RAID 是一种存储数据以提高性能并减少数据丢失的特定技术。您可以根据自己的需求选择多种 RAID 类型。RAID 3 是列表中比较有效的类型之一。本文将重点介绍这种特定的 RAID 技术,并比较 RAID 3、4 和 5。 RAID 3 的定义 RAID 3 是一种特定的磁盘配置,用于…

光模块基础知识

1. 光模块的封装 光模块是光收发模块的简称,主要根据不同的外型来区分,而在同一外型中,又有着多种规格;在数据通信领域,最常见的光模块(根据外型区分)分别是SFF、GBIC、SFP、和XFP、QSFP 、XEN…

推荐一款DBF文件查看器:DBF Viewer 2000

DBF Viewer 2000是一款强大、简洁且易于使用的 DBF(Clipper、dBase、FoxBase、Foxpro、Visual Foxpro、Visual DBase、VO、DB2K)文件浏览器和编辑器。 软件特点: - 能够快速、有效地浏览和编辑各种类型的 DBF 文件。 - 支持多种文件格式,包括 dBase、V…

javascript-Web APLs (四)

日期对象 用来表示时间的对象 作用:可以得到当前系统时间 在代码中发现了 new 关键字时,一般将这个操作称为 实例化 //创建一个时间对象并获取时间 //获得当前时间 const date new Date() //获得指定时间 const date new Date(2006-6-6) console.log(…

云计算在智能交通系统中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 云计算在智能交通系统中的应用 云计算在智能交通系统中的应用 云计算在智能交通系统中的应用 引言 云计算概述 定义与原理 发展历…