timm/res2net50_14w_8s.in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes Res2Net (ResNet multi-escala) entrenado en ImageNet-1k por los autores del artículo. Permite la clasificación de imágenes, la extracción de mapas de características y la obtención de incrustaciones de imágenes.

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

# obtener transformaciones específicas del modelo (normalización, redimensionamiento)
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)) # un pequeño lote de imagen única

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

# obtener transformaciones específicas del modelo (normalización, redimensionamiento)
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)) # un pequeño lote de imagen única

for o in output:
    print(o.shape)

Incrustaciones 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(
'res2net50_14w_8s.in1k',
pretrained=True,
num_classes=0, # eliminar la capa clasificador nn.Linear
)
model = model.eval()

# obtener transformaciones específicas del modelo (normalización, redimensionamiento)
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)) # salida es (tamaño_lote, num_features) tensor

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

output = model.forward_features(transforms(img).unsqueeze(0))
# salida sin agrupación, un tensor de forma (1, 2048, 7, 7)

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

Funcionalidades

Clasificación de imágenes
Extracción de mapas de características
Incrustaciones de imágenes

Casos de uso

Clasificación avanzada de imágenes
Extracción de detalles finos de características en imágenes
Generación de incrustaciones para tareas de visión por computadora