项目介绍: mobilenetv4_conv_medium.e500_r256_in1k
mobilenetv4_conv_medium.e500_r256_in1k 是一种专为图像分类任务设计的 MobileNet-V4 模型。这一模型使用 ImageNet-1k 数据集进行训练,由 Ross Wightman 制作,通过使用 timm
库的训练脚本,并结合 MobileNet-V4 论文中提供的超参数及 timm
的增强功能进行优化。目前,这可能是已知的唯一一套 MNV4 权重,因为 Tensorflow 官方模型的权重尚未发布。
模型详情
- 模型类型: 图像分类/特征骨架
- 模型统计:
- 参数(百万): 9.7
- GMACs: 1.1
- 激活(百万): 7.6
- 图像尺寸: 训练时使用 256 x 256,测试时使用 320 x 320
- 数据集: ImageNet-1k
- 模型来源: GitHub
- 相关论文:
模型使用
图像分类
该模型支持在 Python 中使用 timm
库进行图像分类。首先加载图片,然后创建并载入预训练模型。接下来,通过模型特定的数据变换(如标准化和调整大小)来处理图像,最后获取概率分布和分类结果。
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('mobilenetv4_conv_medium.e500_r256_in1k', 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)) # 将单张图片添加到批处理中
特征图提取
还可以配置模型以仅提取特征图,这对于需要中间层信息的任务非常有用。
model = timm.create_model(
'mobilenetv4_conv_medium.e500_r256_in1k',
pretrained=True,
features_only=True,
)
model = model.eval()
# 运用相同的预处理来获取特征图
output = model(transforms(img).unsqueeze(0))
for o in output:
print(o.shape)
图像嵌入
另外,该模型也能用于生成图像嵌入,其直接从不含分类器的最后一层提取特征向量,将其用作高级别语义特征。
model = timm.create_model(
'mobilenetv4_conv_medium.e500_r256_in1k',
pretrained=True,
num_classes=0, # 去掉分类层
)
model = model.eval()
output = model(transforms(img).unsqueeze(0)) # 输出为 (batch_size, num_features) 形状的张量
模型比较
在不同的评估指标下,该模型的 Top-1 和 Top-5 准确率为 80.858 和 95.768,参数数量为 9.72M。与其他 MobileNetV4 变种模型相比,其参数较少且准确率较高。
通过以上介绍,希望能够帮助您更好地了解和使用 mobilenetv4_conv_medium.e500_r256_in1k 模型。