快速上手deit_tiny_patch16_224.fb_in1k:3行代码实现ImageNet-1k图像识别
·
快速上手deit_tiny_patch16_224.fb_in1k:3行代码实现ImageNet-1k图像识别
deit_tiny_patch16_224.fb_in1k是一款基于DeiT架构的轻量级图像分类模型,由Facebook团队训练并开源,专为ImageNet-1k数据集优化。这款模型以仅5.7M的参数量和1.3 GMACs的计算量,实现了高效的图像识别能力,非常适合新手和普通用户快速部署图像分类任务。
为什么选择deit_tiny_patch16_224.fb_in1k? 🚀
超轻量级架构
该模型采用Transformer架构设计,通过16x16的图像分块(patch)策略,在保持识别精度的同时大幅降低计算资源需求。相比传统CNN模型,它在移动设备和低配置环境中表现更优。
即插即用的预训练权重
模型已在包含1000个类别的ImageNet-1k数据集上完成训练,开箱即可用于常见场景的图像分类任务,无需从零开始训练。
极简部署流程
借助PyTorch和timm库的支持,仅需3行核心代码即可完成模型加载、图像预处理和分类预测,极大降低了AI应用的入门门槛。
3行代码实现图像识别 👨💻
环境准备
首先确保已安装必要依赖:
pip install timm torch pillow
核心实现代码
import timm
from PIL import Image
# 加载预训练模型(第1行核心代码)
model = timm.create_model('deit_tiny_patch16_224.fb_in1k', pretrained=True).eval()
# 获取模型专用图像转换器(第2行核心代码)
transforms = timm.data.create_transform(**timm.data.resolve_model_data_config(model), is_training=False)
# 执行图像分类(第3行核心代码)
output = model(transforms(Image.open("test_image.jpg")).unsqueeze(0))
完整使用示例
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('deit_tiny_patch16_224.fb_in1k', pretrained=True).eval()
# 图像预处理
data_config = timm.data.resolve_model_data_config(model)
transforms = timm.data.create_transform(**data_config, is_training=False)
# 预测并获取Top5结果
output = model(transforms(img).unsqueeze(0))
top5_prob, top5_idx = torch.topk(output.softmax(dim=1)*100, k=5)
print("Top5预测结果:")
for prob, idx in zip(top5_prob[0], top5_idx[0]):
print(f"类别{idx}: {prob:.2f}%")
模型技术细节 📊
关键参数
- 输入尺寸:224×224×3(RGB图像)
- 分块大小:16×16像素
- 特征维度:192
- 分类头:全连接层(配置文件定义于config.json)
数据预处理配置
模型要求特定的图像归一化参数,可通过以下代码获取:
print(timm.data.resolve_model_data_config(model))
# 输出:{'mean': [0.485, 0.456, 0.406], 'std': [0.229, 0.224, 0.225], ...}
高级应用:生成图像嵌入 🔍
除图像分类外,模型还可用于提取图像特征向量:
model = timm.create_model('deit_tiny_patch16_224.fb_in1k', pretrained=True, num_classes=0)
features = model(transforms(img).unsqueeze(0)) # 输出(1, 192)特征向量
这些特征可用于图像检索、相似度计算等下游任务,扩展模型的应用场景。
本地部署指南 📦
克隆项目仓库
git clone https://gitcode.com/hf_mirrors/timm/deit_tiny_patch16_224.fb_in1k
cd deit_tiny_patch16_224.fb_in1k
模型权重文件pytorch_model.bin和安全权重文件model.safetensors已包含在仓库中,无需额外下载。
总结
deit_tiny_patch16_224.fb_in1k凭借其轻量级设计和高效性能,成为图像分类任务的理想选择。无论是开发原型、教育学习还是实际应用部署,这款模型都能以极简的代码实现强大的功能。现在就尝试用3行代码开启你的图像识别之旅吧!
引用
@InProceedings{pmlr-v139-touvron21a,
title = {Training data-efficient image transformers & distillation through attention},
author = {Touvron, Hugo and Cord, Matthieu and Douze, Matthijs and Massa, Francisco and Sablayrolles, Alexandre and Jegou, Herve},
booktitle = {International Conference on Machine Learning},
pages = {10347--10357},
year = {2021},
volume = {139}
}
更多推荐
所有评论(0)