Hub 文档

在 Hugging Face 使用 timm

Hugging Face's logo
加入 Hugging Face 社区

并获取增强版文档体验

开始使用

在 Hugging Face 中使用 timm

timm,也称为 pytorch-image-models,是一个开源的集合,包含最先进的 PyTorch 图像模型、预训练权重以及用于训练、推理和验证的实用脚本。

本篇文档重点介绍 Hugging Face Hub 中的 timm 功能,而不是 timm 库本身。有关 timm 库的详细信息,请访问 其文档

您可以使用模型页面左侧的过滤器在 Hub 上找到许多 timm 模型,请访问 模型页面

Hub 上的所有模型都具有几个有用的功能

  1. 自动生成的模型卡片,模型作者可以使用它来补充 有关其模型的信息
  2. 元数据标签可帮助用户发现相关的 timm 模型。
  3. 一个 交互式小部件,您可以使用它直接在浏览器中试用模型。
  4. 一个 推理 API,允许用户发出推理请求。

使用 Hub 中的现有模型

只要安装了 timm,就可以用一行代码加载 Hugging Face Hub 中的任何 timm 模型!从 Hub 中选择一个模型后,将以 hf-hub: 为前缀的模型 ID 传递给 timmcreate_model 方法,即可下载并实例化模型。

import timm

# Loading https://huggingface.co/timm/eca_nfnet_l0
model = timm.create_model("hf-hub:timm/eca_nfnet_l0", pretrained=True)

如果想查看如何加载特定模型,可以点击“在 timm 中使用”,您将获得一个可工作的代码片段来加载它!

推理

以下代码片段展示了如何对从 Hub 加载的 timm 模型执行推理

import timm
import torch
from PIL import Image
from timm.data import resolve_data_config
from timm.data.transforms_factory import create_transform

# Load from Hub 🔥
model = timm.create_model(
    'hf-hub:nateraw/resnet50-oxford-iiit-pet',
    pretrained=True
)

# Set model to eval mode for inference
model.eval()

# Create Transform
transform = create_transform(**resolve_data_config(model.pretrained_cfg, model=model))

# Get the labels from the model config
labels = model.pretrained_cfg['label_names']
top_k = min(len(labels), 5)

# Use your own image file here...
image = Image.open('boxer.jpg').convert('RGB')

# Process PIL image with transforms and add a batch dimension
x = transform(image).unsqueeze(0)

# Pass inputs to model forward function to get outputs
out = model(x)

# Apply softmax to get predicted probabilities for each class
probabilities = torch.nn.functional.softmax(out[0], dim=0)

# Grab the values and indices of top 5 predicted classes
values, indices = torch.topk(probabilities, top_k)

# Prepare a nice dict of top k predictions
predictions = [
    {"label": labels[i], "score": v.item()}
    for i, v in zip(indices, values)
]
print(predictions)

这将为您提供一个预测列表,如下所示

[
    {'label': 'american_pit_bull_terrier', 'score': 0.9999998807907104},
    {'label': 'staffordshire_bull_terrier', 'score': 1.0000000149011612e-07},
    {'label': 'miniature_pinscher', 'score': 1.0000000149011612e-07},
    {'label': 'chihuahua', 'score': 1.0000000149011612e-07},
    {'label': 'beagle', 'score': 1.0000000149011612e-07}
]

分享您的模型

您可以将您的timm模型直接分享到Hugging Face Hub。这将发布模型的新版本到Hugging Face Hub,如果模型仓库尚不存在,则会为您创建一个。

在推送模型之前,请确保您已登录Hugging Face。

python -m pip install huggingface_hub
huggingface-cli login

或者,如果您更喜欢在Jupyter或Colaboratory笔记本中工作,安装huggingface_hub后,您可以使用以下命令登录:

from huggingface_hub import notebook_login
notebook_login()

然后,使用push_to_hf_hub方法推送您的模型。

import timm

# Build or load a model, e.g. timm's pretrained resnet18
model = timm.create_model('resnet18', pretrained=True, num_classes=4)

###########################
# [Fine tune your model...]
###########################

# Push it to the 🤗 Hub
timm.models.hub.push_to_hf_hub(
    model,
    'resnet18-random-classifier',
    model_config={'labels': ['a', 'b', 'c', 'd']}
)

# Load your model from the Hub
model_reloaded = timm.create_model(
    'hf-hub:<your-username>/resnet18-random-classifier',
    pretrained=True
)

推理小部件和API

Hub 上的所有 timm 模型都自动配备了推理小部件,如下所示为nateraw/timm-resnet50-beans。此外,timm 模型可通过推理 API访问,您可以通过 HTTP 使用 cURL、Python 的 requests 库或您首选的网络请求方法访问它。

curl https://api-inference.huggingface.co/models/nateraw/timm-resnet50-beans \
        -X POST \
        --data-binary '@beans.jpeg' \
        -H "Authorization: Bearer {$HF_API_TOKEN}"
# [{"label":"angular_leaf_spot","score":0.9845947027206421},{"label":"bean_rust","score":0.01368315052241087},{"label":"healthy","score":0.001722085871733725}]

其他资源

< > 在 GitHub 上更新