🚀 Florence-2-DocLayNet-Fixed
本项目微调后的模型能够有效解决类别名称生成问题,提升了检测性能,在特定场景下表现出色,同时为相关研究提供了可复用的模型权重。
🚀 快速开始
使用以下代码即可开始使用该模型:
import requests
from PIL import Image
from transformers import AutoProcessor, AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("yifeihu/Florence-2-DocLayNet-Fixed", trust_remote_code=True)
processor = AutoProcessor.from_pretrained("yifeihu/Florence-2-DocLayNet-Fixed", trust_remote_code=True)
prompt = "<OD>"
url = "https://huggingface.co/yifeihu/TF-ID-base/resolve/main/arxiv_2305_10853_5.png?download=true"
image = Image.open(requests.get(url, stream=True).raw)
inputs = processor(text=prompt, images=image, return_tensors="pt")
generated_ids = model.generate(
input_ids=inputs["input_ids"],
pixel_values=inputs["pixel_values"],
max_new_tokens=1024,
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="<OD>", image_size=(image.width, image.height))
print(parsed_answer)
若要可视化结果,请参考 此教程笔记本 获取更多详情。
✨ 主要特性
- 微调模型:使用 [DocLayNet-v1.1] 数据集对 Florence-2-large-ft [HF] 模型进行微调。
- 类别名称重映射:为防止模型生成幻觉类别名称,将所有类别名称重新映射为单个标记,提升了 mAP50 - 95 分数,并加快了训练和推理速度。
- 性能表现:在 DocLayNet 测试集上 mAP50 - 95 分数有 7% 的提升;在科学文章子集上,与最佳的 Yolo 模型表现相当;在绘制边界框方面表现更优,边界更清晰。
📚 详细文档
模型概述
我们使用 [DocLayNet-v1.1] 数据集对 Florence-2-large-ft [HF] 模型进行了微调。为防止模型生成幻觉类别名称,我们将所有类别名称重新映射为单个标记:
原始类别名称 |
新类别名称 |
Caption |
Cap |
Footnote |
Footnote |
Formula |
Math |
List-item |
List |
Page-footer |
Bottom |
Page-header |
Header |
Picture |
Picture |
Section-header |
Section |
Table |
Table |
Text |
Text |
Title |
Title |
通过这一简单更改,我们观察到在 DocLayNet 测试集上 mAP50 - 95 分数提高了 7%。由于类别名称使用的标记减少,训练和推理速度也更快。
从 mAP50 - 95 分数来看,该模型在 DocLayNet 测试集上远未达到 SOTA(70%)。更小的 Yolo 模型(github.com/ppaanngggg/yolo-doclaynet)有更好的基准测试结果(~79%)。在科学文章子集上,该模型在 mAP50 - 95 方面与最佳的 Yolo 模型表现相当(87%)。
然而,经过一些定性分析(论文即将发表),我们发现 Florence - 2 在绘制边界框时边界更清晰。Yolo 模型有时会将文本从中间切断,或者在同一对象上绘制多个边界框。这些行为在 mAP50 - 95 中未得到严重体现,但在实际应用中处理起来很麻烦。在计算 mAP 分数时,我们不得不手动将所有 Florence - 2 输出的置信度分数设置为 1。
我们发布微调后的模型权重,供社区进一步研究相关主题。
📄 许可证
本项目采用 Apache - 2.0 许可证。
📖 BibTex和引用信息
@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}},
}
@article{doclaynet2022,
title = {DocLayNet: A Large Human-Annotated Dataset for Document-Layout Analysis},
doi = {10.1145/3534678.353904},
url = {https://arxiv.org/abs/2206.01062},
author = {Pfitzmann, Birgit and Auer, Christoph and Dolfi, Michele and Nassar, Ahmed S and Staar, Peter W J},
year = {2022}
}