resnet101d.ra2_in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes ResNet-D. Este modelo presenta activaciones ReLU, un tallo de 3 capas de convoluciones 3x3 con agrupamiento, y un atajo de muestreo por subgrupos con promedio 2x2 y convolución 1x1. Entrenado en ImageNet-1k en timm utilizando la plantilla de receta descrita abajo. Detalles de la receta: Receta RandAugment RA2 inspirada y evolucionada a partir de las recetas RandAugment de EfficientNet. Publicado como receta B en ResNet Strikes Back. Optimizador RMSProp (comportamiento TF 1.0), EMA promedio ponderado. Calendario de LR escalonado (decadencia exponencial con escalones) con calentamiento.

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('resnet101d.ra2_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)) # transformar una sola imagen en un lote de 1

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

Extracción de Mapa 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('resnet101d.ra2_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)) # transformar una sola imagen en un lote de 1

for o in output:
    print(o.shape)

Embeddings de la Imagen

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('resnet101d.ra2_in1k', pretrained=True, num_classes=0) # eliminar 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)) # la salida es un tensor con forma (batch_size, num_features)

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

output = model.forward_features(transforms(img).unsqueeze(0))
# la salida no está agrupada, es un tensor con forma (1, 2048, 8, 8)

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

Funcionalidades

Activaciones ReLU
Tallo de 3 capas de convoluciones 3x3 con agrupamiento
Atajo de muestreo por subgrupos con promedio 2x2 y convolución 1x1

Casos de uso

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