resnet50_gn.a1h_in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes ResNet-B. Este modelo presenta activaciones ReLU, una única capa de convolución 7x7 con agrupamiento y un atajo de convolución 1x1 para muestreo descendente. Entrenado en ImageNet-1k usando el receta A1 descrito en 'ResNet Strikes Back'. Usa el optimizador LAMB, tiene un dropout más fuerte, profundidad estocástica, y RandAugment. Emplea un programa de LR Cosine con calentamiento inicial.

Como usar

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

# obten las transformaciones específicas del modelo (normalización, cambiar tamaño)
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ñade una dimensión para convertir la imagen en un lote de 1

top5_probabilities, top5_class_indices = torch.topk(output.softmax(dim=1) * 100, k=5)
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('resnet50_gn.a1h_in1k', pretrained=True, features_only=True)
model = model.eval()

# obten las transformaciones específicas del modelo (normalización, cambiar tamaño)
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ñade una dimensión para convertir la imagen en un lote de 1

for o in output:
print(o.shape)
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('resnet50_gn.a1h_in1k', pretrained=True, num_classes=0)
model = model.eval()

# obten las transformaciones específicas del modelo (normalización, cambiar tamaño)
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 la forma (batch_size, num_features)

# alternativa equivalente (sin necesidad de establecer num_classes=0)

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

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

Funcionalidades

Activaciones ReLU
Capa de convolución única 7x7 con agrupamiento
Atajo de convolución 1x1 para muestreo descendente
Optimizador LAMB
Dropout más fuerte
Profundidad estocástica
RandAugment
Programa de LR Cosine con calentamiento inicial

Casos de uso

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