Florence-2-large-no-flash-attn项目介绍
项目概述
Florence-2-large-no-flash-attn是一个基于Microsoft的Florence-2模型的修改版本。这个项目的主要目标是移除原始模型对flash-attn包的依赖,使其更容易部署和使用。Florence-2是一个先进的视觉基础模型,能够处理广泛的视觉和视觉-语言任务。
主要特点
-
多任务能力:该模型可以执行多种视觉任务,如图像描述、物体检测和分割等。
-
提示式方法:Florence-2使用基于提示的方法来处理不同的任务,使其在各种应用场景中具有灵活性。
-
大规模预训练:模型基于FLD-5B数据集进行预训练,该数据集包含126百万张图像的54亿个注释。
-
序列到序列架构:这种架构使模型在零样本和微调设置中都表现出色。
-
无flash-attn依赖:本项目移除了对flash-attn包的依赖,通过替换为常规注意力机制来实现。
模型版本
Florence-2有多个版本可供使用:
- Florence-2-base:0.23B参数,使用FLD-5B预训练
- Florence-2-large:0.77B参数,使用FLD-5B预训练
- Florence-2-base-ft:0.23B参数,在下游任务上微调
- Florence-2-large-ft:0.77B参数,在下游任务上微调
使用方法
用户可以通过Hugging Face的transformers库轻松加载和使用Florence-2-large-no-flash-attn模型。以下是一个简单的示例代码:
import torch
from transformers import AutoProcessor, AutoModelForCausalLM
# 加载模型和处理器
model = AutoModelForCausalLM.from_pretrained("microsoft/Florence-2-large", trust_remote_code=True)
processor = AutoProcessor.from_pretrained("microsoft/Florence-2-large", trust_remote_code=True)
# 准备输入
prompt = "<OD>"
image = ... # 加载图像
# 处理输入
inputs = processor(text=prompt, images=image, return_tensors="pt")
# 生成输出
outputs = model.generate(**inputs)
# 解码输出
result = processor.decode(outputs[0], skip_special_tokens=True)
支持的任务
Florence-2-large-no-flash-attn支持多种视觉任务,包括但不限于:
- 图像描述(Caption)
- 详细图像描述(Detailed Caption)
- 图像描述到短语定位(Caption to Phrase Grounding)
- 物体检测(Object Detection)
- 密集区域描述(Dense Region Caption)
- 区域提议(Region Proposal)
- 光学字符识别(OCR)
- 带区域的光学字符识别(OCR with Region)
性能表现
Florence-2模型在各种视觉任务上展现出了优秀的性能。在零样本设置下,Florence-2-large在COCO Caption测试集上达到了135.6的CIDEr分数,在COCO Detection val2017上达到了37.5的mAP。在微调后的设置中,Florence-2-large-ft在更广泛的任务中表现出色,如VQA、物体检测和指代表达理解等。
结论
Florence-2-large-no-flash-attn项目为研究人员和开发者提供了一个强大而灵活的视觉模型,无需依赖flash-attn包。它在多种视觉任务中展现出卓越的性能,同时保持了易用性和广泛的适用性。这个项目为计算机视觉领域的研究和应用提供了宝贵的资源。