Paligemma 3b Mix 448 Ft TableDetection
P
Paligemma 3b Mix 448 Ft TableDetection
由 ucsahin 开发
基于google/paligemma-3b-mix-448微调的多模态表格检测模型,专用于识别图像中的表格区域
下载量 19
发布时间 : 5/25/2024
模型简介
该模型通过结合图像和文本输入来预测图像中表格的边界框坐标,适用于文档处理和数据提取等场景
模型特点
多模态输入处理
支持同时处理图像和文本输入,实现视觉-语言联合理解
高精度表格检测
在pubtables-detection数据集上微调,专门优化表格区域识别能力
标准化输出格式
输出规范化坐标值,便于转换为多种边界框格式
模型能力
图像中的表格检测
边界框坐标预测
多模态理解
使用案例
文档处理
PDF表格提取
从扫描文档中自动定位表格区域
输出标准化坐标便于后续OCR处理
数据采集
网页截图分析
识别截图中的表格结构
为数据爬虫提供定位参考
🚀 paligemma-3b-mix-448-ft-TableDetection
本模型是 google/paligemma-3b-mix-448 在 ucsahin/pubtables-detection-1500-samples 数据集上进行混合精度微调后的版本。该模型在评估集上取得了以下结果:
- 损失值:1.3544
✨ 主要特性
- 这是一个多模态语言模型,针对给定文本提示检测图像中表格的任务进行了微调。模型结合图像和文本输入,预测给定图像中表格的边界框。
- 该模型的主要用途是协助自动化图像中表格的检测过程。它可用于各种应用程序,如文档处理、数据提取和图像分析,在这些应用中,识别图像中的表格至关重要。
🚀 快速开始
模型加载
在 Transformers 中,你可以按以下方式加载模型:
from transformers import PaliGemmaForConditionalGeneration, PaliGemmaProcessor
import torch
model_id = "ucsahin/paligemma-3b-mix-448-ft-TableDetection"
device = "cuda:0"
dtype = torch.bfloat16
model = PaliGemmaForConditionalGeneration.from_pretrained(
model_id,
torch_dtype=dtype,
device_map=device
)
processor = PaliGemmaProcessor.from_pretrained(model_id)
推理过程
进行推理时,你可以使用以下代码:
# # 指示模型检测表格
prompt = "detect table"
model_inputs = processor(text=prompt, images=image, return_tensors="pt").to(device)
input_len = model_inputs["input_ids"].shape[-1]
with torch.inference_mode():
generation = model.generate(**model_inputs, max_new_tokens=128, do_sample=False)
generation = generation[0][input_len:]
bbox_text = processor.decode(generation, skip_special_tokens=True)
print(bbox_text)
量化模型加载
你还可以使用 bitsandbytes
加载 4 位或 8 位量化模型。不过要注意,模型生成的输出可能需要进一步的后处理,例如可能会出现五个位置标签 "<loc[value]>" 而不是四个,以及除 "table" 之外的不同标签。提供的后处理脚本应该可以处理第一种情况。
使用以下代码加载 4 位量化模型:
from transformers import PaliGemmaForConditionalGeneration, PaliGemmaProcessor, BitsAndBytesConfig
import torch
model_id = "ucsahin/paligemma-3b-mix-448-ft-TableDetection"
device = "cuda:0"
dtype = torch.bfloat16
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=dtype
)
model = PaliGemmaForConditionalGeneration.from_pretrained(
model_id,
torch_dtype=dtype,
device_map=device,
quantization_config=bnb_config
)
processor = PaliGemmaProcessor.from_pretrained(model_id)
💻 使用示例
基础用法
# 模型加载代码
from transformers import PaliGemmaForConditionalGeneration, PaliGemmaProcessor
import torch
model_id = "ucsahin/paligemma-3b-mix-448-ft-TableDetection"
device = "cuda:0"
dtype = torch.bfloat16
model = PaliGemmaForConditionalGeneration.from_pretrained(
model_id,
torch_dtype=dtype,
device_map=device
)
processor = PaliGemmaProcessor.from_pretrained(model_id)
# 推理代码
prompt = "detect table"
model_inputs = processor(text=prompt, images=image, return_tensors="pt").to(device)
input_len = model_inputs["input_ids"].shape[-1]
with torch.inference_mode():
generation = model.generate(**model_inputs, max_new_tokens=128, do_sample=False)
generation = generation[0][input_len:]
bbox_text = processor.decode(generation, skip_special_tokens=True)
print(bbox_text)
高级用法
# 后处理代码
import re
def post_process(bbox_text, image_width, image_height):
loc_values_str = [bbox.strip() for bbox in bbox_text.split(";")]
converted_bboxes = []
for loc_value_str in loc_values_str:
loc_values = re.findall(r'<loc(\d+)>', loc_value_str)
loc_values = [int(x) for x in loc_values]
loc_values = loc_values[:4]
loc_values = [value/1024 for value in loc_values]
# convert to (xmin, ymin, xmax, ymax)
loc_values = [
int(loc_values[1]*image_width), int(loc_values[0]*image_height),
int(loc_values[3]*image_width), int(loc_values[2]*image_height),
]
converted_bboxes.append(loc_values)
return converted_bboxes
🔧 技术细节
输入
- 图像:模型需要包含一个或多个表格的图像作为输入。图像应采用标准格式,如 JPEG 或 PNG。
- 文本提示:此外,需要一个文本提示来引导模型关注表格检测任务。提示应明确指出所需的操作。请使用 "detect table" 作为你的文本提示。
输出
- 边界框:模型以特殊的
<loc[value]>
标记形式输出边界框坐标的位置,其中 value 是一个表示归一化坐标的数字。每个检测结果由四个位置坐标按 y_min、x_min、y_max、x_max 的顺序表示,后面跟着该框中检测到的标签。要将值转换为坐标,首先需要将数字除以 1024,然后将 y 乘以图像高度,将 x 乘以图像宽度。这将为你提供相对于原始图像大小的边界框坐标。 如果一切顺利,模型将根据图像中检测到的表格数量输出类似于 "<loc[value]><loc[value]><loc[value]><loc[value]> table; <loc[value]><loc[value]><loc[value]><loc[value]> table" 的文本。然后,你可以使用以下脚本将文本输出转换为 PASCAL VOC 格式的边界框。
训练超参数
以下是训练期间使用的超参数:
属性 | 详情 |
---|---|
学习率 | 0.0001 |
训练批次大小 | 4 |
评估批次大小 | 4 |
随机种子 | 42 |
梯度累积步数 | 4 |
混合精度 | True (bf16) |
总训练批次大小 | 16 |
优化器 | Adam(beta=(0.9, 0.999),epsilon=1e-08) |
学习率调度器类型 | 线性 |
学习率调度器热身步数 | 5 |
训练轮数 | 3 |
训练结果
训练损失 | 轮数 | 步数 | 验证损失 |
---|---|---|---|
2.957 | 0.1775 | 15 | 2.1300 |
1.9656 | 0.3550 | 30 | 1.8421 |
1.6716 | 0.5325 | 45 | 1.6898 |
1.5514 | 0.7101 | 60 | 1.5803 |
1.5851 | 0.8876 | 75 | 1.5271 |
1.4134 | 1.0651 | 90 | 1.4771 |
1.3566 | 1.2426 | 105 | 1.4528 |
1.3093 | 1.4201 | 120 | 1.4227 |
1.2897 | 1.5976 | 135 | 1.4115 |
1.256 | 1.7751 | 150 | 1.4007 |
1.2666 | 1.9527 | 165 | 1.3678 |
1.2213 | 2.1302 | 180 | 1.3744 |
1.0999 | 2.3077 | 195 | 1.3633 |
1.1931 | 2.4852 | 210 | 1.3606 |
1.0722 | 2.6627 | 225 | 1.3619 |
1.1485 | 2.8402 | 240 | 1.3544 |
框架版本
- PEFT 0.11.1
- Transformers 4.42.0.dev0
- Pytorch 2.3.0+cu121
- Datasets 2.19.1
- Tokenizers 0.19.1
📄 许可证
本模型使用 gemma 许可证。
⚠️ 重要提示
你可以使用
bitsandbytes
加载量化的 4 位或 8 位模型。但要注意,模型生成的输出可能需要进一步的后处理,例如可能会出现五个位置标签 "<loc[value]>" 而不是四个,以及除 "table" 之外的不同标签。提供的后处理脚本应该可以处理第一种情况。
💡 使用建议
请使用 "detect table" 作为文本提示,以引导模型关注表格检测任务。
Clip Vit Large Patch14
CLIP是由OpenAI开发的视觉-语言模型,通过对比学习将图像和文本映射到共享的嵌入空间,支持零样本图像分类
图像生成文本
C
openai
44.7M
1,710
Clip Vit Base Patch32
CLIP是由OpenAI开发的多模态模型,能够理解图像和文本之间的关系,支持零样本图像分类任务。
图像生成文本
C
openai
14.0M
666
Siglip So400m Patch14 384
Apache-2.0
SigLIP是基于WebLi数据集预训练的视觉语言模型,采用改进的sigmoid损失函数,优化了图像-文本匹配任务。
图像生成文本
Transformers

S
google
6.1M
526
Clip Vit Base Patch16
CLIP是由OpenAI开发的多模态模型,通过对比学习将图像和文本映射到共享的嵌入空间,实现零样本图像分类能力。
图像生成文本
C
openai
4.6M
119
Blip Image Captioning Base
Bsd-3-clause
BLIP是一个先进的视觉-语言预训练模型,擅长图像描述生成任务,支持条件式和非条件式文本生成。
图像生成文本
Transformers

B
Salesforce
2.8M
688
Blip Image Captioning Large
Bsd-3-clause
BLIP是一个统一的视觉-语言预训练框架,擅长图像描述生成任务,支持条件式和无条件式图像描述生成。
图像生成文本
Transformers

B
Salesforce
2.5M
1,312
Openvla 7b
MIT
OpenVLA 7B是一个基于Open X-Embodiment数据集训练的开源视觉-语言-动作模型,能够根据语言指令和摄像头图像生成机器人动作。
图像生成文本
Transformers 英语

O
openvla
1.7M
108
Llava V1.5 7b
LLaVA 是一款开源多模态聊天机器人,基于 LLaMA/Vicuna 微调,支持图文交互。
图像生成文本
Transformers

L
liuhaotian
1.4M
448
Vit Gpt2 Image Captioning
Apache-2.0
这是一个基于ViT和GPT2架构的图像描述生成模型,能够为输入图像生成自然语言描述。
图像生成文本
Transformers

V
nlpconnect
939.88k
887
Blip2 Opt 2.7b
MIT
BLIP-2是一个视觉语言模型,结合了图像编码器和大型语言模型,用于图像到文本的生成任务。
图像生成文本
Transformers 英语

B
Salesforce
867.78k
359
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers 支持多种语言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers 英语

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统 中文
R
uer
2,694
98