🚀 Florence-2-large-TableDetection
本项目是一个基于图像文本输入进行表格检测的多模态语言模型,通过微调实现对图像中表格的精准定位,可广泛应用于文档处理、数据提取等领域。
🚀 快速开始
在Transformers中,你可以按以下方式加载模型并进行推理:(注意,运行该模型需要设置trust_remote_code=True
,它只会从原始的HuggingFaceM4/Florence - 2 - DocVQA下载外部自定义代码。)
from transformers import AutoProcessor, AutoModelForCausalLM
import matplotlib.pyplot as plt
import matplotlib.patches as patches
model_id = "ucsahin/Florence-2-large-TableDetection"
model = AutoModelForCausalLM.from_pretrained(model_id, trust_remote_code=True, device_map="cuda")
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
def run_example(task_prompt, image, max_new_tokens=128):
prompt = task_prompt
inputs = processor(text=prompt, images=image, return_tensors="pt")
generated_ids = model.generate(
input_ids=inputs["input_ids"].cuda(),
pixel_values=inputs["pixel_values"].cuda(),
max_new_tokens=max_new_tokens,
early_stopping=False,
do_sample=False,
num_beams=3,
)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=False)[0]
parsed_answer = processor.post_process_generation(
generated_text,
task=task_prompt,
image_size=(image.width, image.height)
)
return parsed_answer
def plot_bbox(image, data):
fig, ax = plt.subplots()
ax.imshow(image)
for bbox, label in zip(data['bboxes'], data['labels']):
x1, y1, x2, y2 = bbox
rect = patches.Rectangle((x1, y1), x2-x1, y2-y1, linewidth=1, edgecolor='r', facecolor='none')
ax.add_patch(rect)
plt.text(x1, y1, label, color='white', fontsize=8, bbox=dict(facecolor='red', alpha=0.5))
ax.axis('off')
plt.show()
from datasets import load_dataset
dataset = load_dataset("ucsahin/pubtables-detection-1500-samples")
example_id = 5
image = dataset["train"][example_id]["image"]
parsed_answer = run_example("<OD>", image=image)
plot_bbox(image, parsed_answer["<OD>"])
✨ 主要特性
- 这是一个多模态语言模型,针对给定文本提示在图像中检测表格的任务进行了微调。该模型结合图像和文本输入,预测提供图像中表格周围的边界框。
- 该模型的主要目的是协助自动化图像中表格的检测过程。它可用于各种应用,如文档处理、数据提取和图像分析,在这些应用中,识别图像中的表格至关重要。
📚 详细文档
模型描述
- 此模型是一个多模态语言模型,针对在给定文本提示的情况下检测图像中表格的任务进行了微调。该模型利用图像和文本输入的组合,预测所提供图像中表格周围的边界框。
- 该模型的主要用途是协助自动化图像中表格的检测过程。它可应用于各种场景,如文档处理、数据提取和图像分析,在这些场景中,识别图像中的表格是必不可少的。
训练超参数
以下超参数在训练过程中使用:
- 学习率:1e - 06
- 训练批次大小:8
- 评估批次大小:8
- 随机种子:42
- 优化器:Adam(β1 = 0.9,β2 = 0.999,ε = 1e - 08)
- 学习率调度器类型:线性
- 训练轮数:10
训练结果
训练损失 |
轮数 |
步数 |
验证损失 |
1.3199 |
1.0 |
169 |
1.0372 |
0.7922 |
2.0 |
338 |
0.9169 |
0.6824 |
3.0 |
507 |
0.8411 |
0.6109 |
4.0 |
676 |
0.8168 |
0.5752 |
5.0 |
845 |
0.7915 |
0.5605 |
6.0 |
1014 |
0.7862 |
0.5291 |
7.0 |
1183 |
0.7740 |
0.517 |
8.0 |
1352 |
0.7683 |
0.5139 |
9.0 |
1521 |
0.7642 |
0.5005 |
10.0 |
1690 |
0.7601 |
框架版本
- Transformers 4.42.0.dev0
- Pytorch 2.3.0+cu121
- Datasets 2.20.0
- Tokenizers 0.19.1
📄 许可证
本项目采用MIT许可证。
其他说明
microsoft/Florence - 2 - large - ft可以在零样本设置下使用任务提示“”检测各种对象。有关如何在推理中使用Florence - 2模型,请查看Florence - 2 - large样本推理。但是,ft - base模型无法在给定图像上检测表格。
以下Colab笔记本展示了如何使用自定义数据微调模型以检测对象。
Florence2 - Object Detection - Finetuning - HF - Trainer.ipynb