TF-ID
该存储库包含完整的训练代码,可以复现所有TF-ID模型。我们还开源了模型权重和人工标注的数据集,全部采用MIT许可证。
模型概述
TF-ID(表格/图像识别器)是一系列经过微调的目标检测模型,用于提取学术论文中的表格和图像,由Yifei Hu创建。它们有四个版本:
模型 | 模型大小 | 模型描述 |
---|---|---|
TF-ID-base[HF] | 0.23B | 提取表格/图像及其说明文字 |
TF-ID-large[HF] (推荐) | 0.77B | 提取表格/图像及其说明文字 |
TF-ID-base-no-caption[HF] | 0.23B | 提取表格/图像,不包括说明文字 |
TF-ID-large-no-caption[HF] (推荐) | 0.77B | 提取表格/图像,不包括说明文字 |
所有TF-ID模型都是基于microsoft/Florence-2检查点进行微调的。
使用示例
- 使用
python inference.py
从给定图像中提取边界框 - 使用
python pdf_to_table_figures.py
从一篇PDF论文中提取所有表格和图像,并将裁剪后的图像和表格保存在./sample_output
下 - 脚本默认使用TF-ID-large。你可以通过更改脚本中的model_id来切换到不同的变体,但始终建议使用large模型。
从头开始训练TF-ID模型
- 克隆仓库:
git clone https://github.com/ai8hyf/TF-ID
cd TF-ID
- 从Hugging Face下载huggingface.co/datasets/yifeihu/TF-ID-arxiv-papers
- 将annotations_with_caption.json移动到
./annotations
(如果你不希望边界框包含文本说明,请使用annotations_no_caption.json) - 解压arxiv_paper_images.zip并将.png图像移动到
./images
- 将COCO格式数据集转换为Florence 2格式:
python coco_to_florence.py
- 你应该能在
./annotations
下看到train.jsonl和test.jsonl - 使用Accelerate训练模型:
accelerate launch train.py
- 检查点将保存在
./model_checkpoints
下
硬件要求
使用microsoft/Florence-2-large-ft,BATCH_SIZE=4
在单个GPU上至少需要40GB显存。microsoft/Florence-2-base-ft模型所需显存要少得多。开始训练前,请在train.py
中修改BATCH_SIZE
和CHECKPOINT
参数。
基准测试
我们在训练数据集之外的论文页面上测试了这些模型。这些论文是Hugging Face每日论文的一个子集。 正确输出 - 模型为给定页面中的每个表格/图像绘制正确的边界框。
模型 | 总图像数 | 正确输出 | 成功率 |
---|---|---|---|
TF-ID-base[HF] | 258 | 251 | 97.29% |
TF-ID-large[HF] | 258 | 253 | 98.06% |
TF-ID-base-no-caption[HF] | 261 | 253 | 96.93% |
TF-ID-large-no-caption[HF] | 261 | 254 | 97.32% |
根据使用情况,某些"不正确"的输出可能完全可用。例如,模型为一个包含两个子组件的图像绘制了两个边界框。
致谢
- 我从这个Roboflow的优秀教程中学习了如何使用Florence 2模型。
- 我的朋友Yi Zhang帮助标注了一些数据,用于训练我们的概念验证模型,包括一个基于YOLO的TF-ID模型。
引用
如果你觉得TD-ID有用,请引用本项目:
@misc{TF-ID,
author = {Yifei Hu},
title = {TF-ID: Table/Figure IDentifier for academic papers},
year = {2024},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/ai8hyf/TF-ID}},
}