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