项目介绍:siglip-so400m-14-980-flash-attn2-navit
siglip-so400m-14-980-flash-attn2-navit 是一个计算机视觉项目,旨在对图像进行更高效的处理。该项目基于之前的版本(siglip-so400m-14-384-flash-attn2),仅对视觉部分进行了一些重要的改进,文本部分则完全未变。
主要改进
-
分辨率提升:项目中最大分辨率从384 x 384 提升到了 980 x 980。这是通过对位置嵌入进行插值处理实现的,使得模型在处理更大尺寸的图像时能够保持良好的性能。
-
可变分辨率和长宽比保持:项目采用了 NaViT 的策略,使得模型可以处理可变分辨率的图像,同时保持图像的长宽比。这一改进使得模型在不同图像尺寸的适应性更强。
-
向后兼容:尽管进行了上述改进,新版本仍然与之前的siglip-so400m-14-384-flash-attn2版本保持向后兼容。这意味着用户可以不指定
patch_attention_mask
参数,继续使用之前的方法来调用模型。
使用方法
使用该模型,需要在 Python 环境中导入相关模块,并进行一些简单的设置,具体步骤如下:
import torch
from modeling_siglip import SiglipVisionModel
# 设置设备
DEVICE = torch.device("cuda:0")
PATCH_SIZE = 14
# 模拟输入像素数据
pixel_values = torch.randn(2, 3, 28, 42, dtype=torch.bfloat16, device=DEVICE)
pixel_attention_mask = [...] # 详细数据如项目代码
# 设置关注掩码
pixel_attention_mask = torch.tensor(pixel_attention_mask, dtype=torch.bool, device=DEVICE)
patches_subgrid = pixel_attention_mask.unfold(dimension=1, size=PATCH_SIZE, step=PATCH_SIZE).unfold(dimension=2, size=PATCH_SIZE, step=PATCH_SIZE)
patch_attention_mask = (patches_subgrid.sum(dim=(-1, -2)) > 0).bool()
# 加载模型
model = SiglipVisionModel.from_pretrained("HuggingFaceM4/siglip-so400m-14-980-flash-attn2-navit", _flash_attn_2_enabled=True)
model.train()
model.vision_model.to(DEVICE, dtype=torch.bfloat16)
# 使用模型对输入进行处理
output = model.vision_model(pixel_values=pixel_values, patch_attention_mask=patch_attention_mask)
总结
siglip-so400m-14-980-flash-attn2-navit 项目为处理高分辨率图像提供了更强大的功能,同时大幅提升了在不同类型图像上的适应能力。其运行过程简单易用,使用户可以方便地集成到现有的视觉处理管道中。通过保持向后兼容性,该项目既不需要用户进行繁琐的迁移,又能享受最新技术带来的优势。