timm/tf_efficientnetv2_xl.in21k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes EfficientNet-v2 entrenado en ImageNet-21k en Tensorflow por los autores del artículo, y portado a PyTorch por Ross Wightman.

Como usar

Clasificación de Imágenes

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('tf_efficientnetv2_xl.in21k', pretrained=True)
model = model.eval()

# obtener transformaciones específicas del modelo (normalización, redimensionado)
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)) # añadir dimensión de batch para una sola imagen

top5_probabilities, top5_class_indices = torch.topk(output.softmax(dim=1) * 100, k=5)

Extracción de Mapas de Características

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(
'tf_efficientnetv2_xl.in21k',
pretrained=True,
features_only=True,
)
model = model.eval()

# obtener transformaciones específicas del modelo (normalización, redimensionado)
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)) # añadir dimensión de batch para una sola imagen

for o in output:
# imprimir la forma de cada mapa de características en el output
# e.g.:
#  torch.Size([1, 32, 192, 192])
#  torch.Size([1, 64, 96, 96])
#  torch.Size([1, 96, 48, 48])
#  torch.Size([1, 256, 24, 24])
#  torch.Size([1, 640, 12, 12])

print(o.shape)

Embeddings de Imágenes

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(
'tf_efficientnetv2_xl.in21k',
pretrained=True,
num_classes=0, # eliminar la capa clasificadora nn.Linear
)
model = model.eval()

# obtener transformaciones específicas del modelo (normalización, redimensionado)
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)) # el output es un tensor con forma (batch_size, num_features)

# o equivalentemente (sin necesidad de ajustar num_classes=0)

output = model.forward_features(transforms(img).unsqueeze(0))
# el output está sin agrupar, es un tensor con forma (1, 1280, 12, 12)

output = model.forward_head(output, pre_logits=True)
# el output es un tensor con forma (1, num_features)

Funcionalidades

Clasificación de imágenes
Extracción de mapas de características
Embeddings de imágenes
Modelo de backbone de características

Casos de uso

Clasificación de imágenes
Extracción de características de imágenes para otras aplicaciones
Generación de embeddings de imágenes