快速上手tf_efficientnetv2_m.in21k_ft_in1k:3行代码实现Top-5图像识别
·
快速上手tf_efficientnetv2_m.in21k_ft_in1k:3行代码实现Top-5图像识别
tf_efficientnetv2_m.in21k_ft_in1k是一款基于EfficientNet-v2架构的图像分类模型,它在ImageNet-21k数据集上进行预训练,然后在ImageNet-1k数据集上进行微调,由论文作者使用Tensorflow训练,并由Ross Wightman移植到PyTorch。该模型非常适合新手和普通用户快速实现图像识别功能。
模型亮点 ✨
tf_efficientnetv2_m.in21k_ft_in1k具有以下出色特性:
- 强大性能:拥有54.1M参数,15.9 GMACs和57.5M激活值,能提供高精度的图像分类结果
- 优化设计:训练时使用384x384图像尺寸,测试时采用480x480,在速度和精度间取得平衡
- 多用途:不仅可用于图像分类,还支持特征图提取和图像嵌入生成
准备工作 📋
在开始使用tf_efficientnetv2_m.in21k_ft_in1k之前,需要先进行简单的准备工作:
- 克隆仓库:
git clone https://gitcode.com/hf_mirrors/timm/tf_efficientnetv2_m.in21k_ft_in1k
- 安装依赖:确保已安装timm库和PyTorch环境
3行核心代码实现图像识别 🚀
下面是使用tf_efficientnetv2_m.in21k_ft_in1k进行图像识别的核心代码,只需3行关键代码即可实现Top-5图像识别:
import timm
from PIL import Image
# 1. 创建模型
model = timm.create_model('tf_efficientnetv2_m.in21k_ft_in1k', pretrained=True).eval()
# 2. 获取模型特定的变换
transforms = timm.data.create_transform(**timm.data.resolve_model_data_config(model), is_training=False)
# 3. 执行预测并获取Top-5结果
output = model(transforms(Image.open("test_image.jpg")).unsqueeze(0))
top5_probabilities, top5_class_indices = torch.topk(output.softmax(dim=1) * 100, k=5)
完整使用示例 🔍
以下是一个完整的图像分类示例,展示如何使用tf_efficientnetv2_m.in21k_ft_in1k识别图像:
from urllib.request import urlopen
from PIL import Image
import timm
import torch
# 加载图像
img = Image.open(urlopen(
'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
))
# 创建模型
model = timm.create_model('tf_efficientnetv2_m.in21k_ft_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)) # 将单张图像转换为批量为1的输入
# 获取Top-5结果
top5_probabilities, top5_class_indices = torch.topk(output.softmax(dim=1) * 100, k=5)
# 打印结果
print("Top 5 预测结果:")
for i in range(5):
print(f"类别 {top5_class_indices[0][i]}: {top5_probabilities[0][i]:.2f}%")
高级应用场景 🌟
tf_efficientnetv2_m.in21k_ft_in1k不仅可以用于简单的图像分类,还支持多种高级应用:
特征图提取
model = timm.create_model(
'tf_efficientnetv2_m.in21k_ft_in1k',
pretrained=True,
features_only=True,
)
output = model(transforms(img).unsqueeze(0))
# 输出包含多个特征图,形状如:
# torch.Size([1, 24, 192, 192])
# torch.Size([1, 48, 96, 96])
# ...
图像嵌入生成
model = timm.create_model(
'tf_efficientnetv2_m.in21k_ft_in1k',
pretrained=True,
num_classes=0, # 移除分类器
)
output = model(transforms(img).unsqueeze(0)) # 输出形状为 (batch_size, num_features)
模型配置详情 📊
tf_efficientnetv2_m.in21k_ft_in1k的配置信息可以在config.json中找到,主要包括:
- 输入大小:[3, 384, 384](训练)和[3, 480, 480](测试)
- 均值和标准差:[0.5, 0.5, 0.5]
- 池化大小:[12, 12]
- 类别数量:1000
引用与致谢 🙏
如果您在研究中使用了tf_efficientnetv2_m.in21k_ft_in1k,请考虑引用以下论文:
@inproceedings{tan2021efficientnetv2,
title={Efficientnetv2: Smaller models and faster training},
author={Tan, Mingxing and Le, Quoc},
booktitle={International conference on machine learning},
pages={10096--10106},
year={2021},
organization={PMLR}
}
@misc{rw2019timm,
author = {Ross Wightman},
title = {PyTorch Image Models},
year = {2019},
publisher = {GitHub},
journal = {GitHub repository},
doi = {10.5281/zenodo.4414861},
howpublished = {\url{https://github.com/huggingface/pytorch-image-models}}
}
通过本文介绍的方法,您可以轻松上手tf_efficientnetv2_m.in21k_ft_in1k模型,快速实现高效准确的图像识别功能。无论是新手还是有经验的开发者,都能从中受益。
更多推荐


所有评论(0)