项目介绍:convnextv2_large.fcmae
ConvNeXtV2 是一种面向图像特征表示的自监督学习模型,其目的是为了图像分类和特征提取。它采用了全卷积掩码自编码器框架(简称FCMAE)的预训练方法。这个模型没有预训练的头部,主要用于微调或特征提取。
模型详情
- 模型类型: 图像分类/特征提取骨干网络(feature backbone)
- 模型参数:
- 参数量(百万):196.4
- GMACs(十亿次乘加运算):34.4
- 激活量(百万):43.1
- 图像尺寸:224 x 224
- 相关论文:
- "ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders" 论文链接
- 原始代码库:GitHub链接
- 预训练数据集: ImageNet-1k
模型使用
图像分类
from urllib.request import urlopen
from PIL import Image
import timm
img = Image.open(urlopen(
'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
))
model = timm.create_model('convnextv2_large.fcmae', pretrained=True)
model = model.eval()
# 获取模型特定的变换(标准化,缩放)
data_config = timm.data.resolve_model_data_config(model)
transforms = timm.data.create_transform(**data_config, is_training=False)
output = model(transforms(img).unsqueeze(0)) # 将单张图像扩展为大小为1的批量
top5_probabilities, top5_class_indices = torch.topk(output.softmax(dim=1) * 100, k=5)
特征图提取
from urllib.request import urlopen
from PIL import Image
import timm
img = Image.open(urlopen(
'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
))
model = timm.create_model(
'convnextv2_large.fcmae',
pretrained=True,
features_only=True,
)
model = model.eval()
# 获取模型特定的变换(标准化,缩放)
data_config = timm.data.resolve_model_data_config(model)
transforms = timm.data.create_transform(**data_config, is_training=False)
output = model(transforms(img).unsqueeze(0)) # 将单张图像扩展为大小为1的批量
for o in output:
print(o.shape) # 打印每个输出特征图的形状
图像嵌入
from urllib.request import urlopen
from PIL import Image
import timm
img = Image.open(urlopen(
'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
))
model = timm.create_model(
'convnextv2_large.fcmae',
pretrained=True,
num_classes=0, # 移除分类器nn.Linear
)
model = model.eval()
# 获取模型特定的变换(标准化,缩放)
data_config = timm.data.resolve_model_data_config(model)
transforms = timm.data.create_transform(**data_config, is_training=False)
output = model(transforms(img).unsqueeze(0)) # 输出为形状为(batch_size, num_features)的张量
# 或等效地(无需设置num_classes=0)
output = model.forward_features(transforms(img).unsqueeze(0))
output = model.forward_head(output, pre_logits=True) # 输出为(1, num_features)形状的张量
模型对比
在timm模型结果页面中,可以探索该模型的数据集和运行时指标。
所有时间测试都由PyTorch 1.13版本在RTX 3090显卡上使用AMP进行。
模型名称 | top1 | top5 | 图像尺寸 | 参数量 | GMACs | MACTs | 每秒处理样本数 | 批次大小 |
---|---|---|---|---|---|---|---|---|
convnextv2_large.fcmae_ft_in22k_in1k | 87.26 | 98.248 | 224 | 197.96 | 34.4 | 43.13 | 376.84 | 256 |
以上是关于convnextv2_large.fcmae项目的详细介绍。这个项目不仅为研究人员和开发者提供了强大的图像特征提取和分类工具,还提供了丰富的预训练资源以便在不同的应用场景中进行微调。