Hub documentation
Использование timm на Hugging Face
Использование timm на Hugging Face
timm, также известный как pytorch-image-models, — это открытая коллекция передовых моделей изображений PyTorch, предобученных весов и вспомогательных скриптов для обучения, инференса и валидации.
Эта документация посвящена функциональности timm в Hugging Face Hub, а не самой библиотеке timm. Подробную информацию о библиотеке timm можно найти в её документации.
На странице моделей с помощью фильтров слева можно найти множество моделей timm на Hub.
Все модели на Hub обладают рядом полезных функций:
- Автоматически сгенерированная карточка модели, которую авторы могут дополнить информацией о своей модели.
- Метки метаданных помогают пользователям находить подходящие модели
timm. - Интерактивный виджет interactive widget, который позволяет работать с моделью прямо в браузере.
- Поставщик инференса, который позволяет пользователям отправлять запросы на инференс.
Использование существующих моделей из Hub
Любую модель timm из Hugging Face Hub можно загрузить одной строкой кода, если у вас установлен timm. После выбора модели на Hub передайте её идентификатор с префиксом hf-hub: в метод create_model библиотеки timm, чтобы скачать и инициализировать модель.
import timm
# Loading https://huggingface.co/timm/eca_nfnet_l0
model = timm.create_model("hf-hub:timm/eca_nfnet_l0", pretrained=True)Если вы хотите узнать, как загрузить конкретную модель, нажмите Use in timm — вам будет предоставлен рабочий фрагмент кода для её загрузки!


Вывод
Ниже приведён фрагмент кода, показывающий, как выполнить инференс на модели timm, загруженной из Hub:
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 hf auth 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
)Дополнительные ресурсы
- timm (pytorch-image-models) Репозиторий на GitHub.
- Документация timm.
- Дополнительная документация на timmdocs от Aman Arora.
- Начало работы с моделями изображений PyTorch (timm): практическое руководство от Chris Hughes.