项目介绍:regnety_320.seer
概述
regnety_320.seer是一个用于图像特征提取和分类的模型。其基础架构为RegNetY-32GF,经过自我监督学习方法SwAV在20亿张随机互联网图像上进行预训练。SEER项目由Meta Platforms, Inc.开发,并根据SEER许可证进行使用和分发。模型实现中采用的timm
库包含了一些增强特性,例如随机深度、梯度检查点、层级学习率衰减等。
模型详细信息
- 模型类型: 图像分类/特征提取
- 模型统计数据:
- 参数数量(M):141.3
- 每秒十亿次乘加运算(GMACs):32.3
- 激活数(M):30.3
- 图像尺寸:224 x 224
- 相关论文:
- 源代码: GitHub链接
- 预训练数据集: RandomInternetImages-2B
模型使用
图像分类
通过以下代码可以实现图像分类:
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('regnety_320.seer', 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(
'regnety_320.seer',
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(
'regnety_320.seer',
pretrained=True,
num_classes=0, # 移除分类层
)
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)) # 输出为(批次大小,特征数)形状的张量
output = model.forward_features(transforms(img).unsqueeze(0))
output = model.forward_head(output, pre_logits=True)
模型对比
可以通过timm
库的模型结果页面,了解该模型的数据集性能和运行时指标,进行详细的模型对比。