seresnext26t_32x4d.bt_in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes SE-ResNeXt-T con atención de canal Squeeze-and-Excitation. Este modelo incluye activaciones ReLU, un tallo de 3 capas en niveles de convoluciones 3x3 con agrupamiento, una agrupación promedio 2x2 con atajo de convolución de 1x1 para reducción de tamaño, convoluciones en cuellos de botella agrupadas de 3x3 y atención de canal Squeeze-and-Excitation.

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

# obtener las transformaciones específicas del modelo (normalización, cambio de 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)) # convertir 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('seresnext26t_32x4d.bt_in1k', pretrained=True, features_only=True)
model = model.eval()

# obtener las transformaciones específicas del modelo (normalización, cambio de 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)) # convertir una sola imagen en un lote de 1

for o in output:
    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('seresnext26t_32x4d.bt_in1k', pretrained=True, num_classes=0) # eliminar el clasificador nn.Linear
model = model.eval()

# obtener las transformaciones específicas del modelo (normalización, cambio de 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 de forma (batch_size, num_features)

# o de manera equivalente (sin necesidad de establecer num_classes=0)

output = model.forward_features(transforms(img).unsqueeze(0))
# la salida es sin agrupar, un tensor de forma (1, 2048, 7, 7)

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

Funcionalidades

Activaciones ReLU
Tallo de 3 capas en niveles de convoluciones 3x3 con agrupamiento
Agrupación promedio 2x2 con atajo de convolución de 1x1 para reducción de tamaño
Convoluciones en cuellos de botella agrupadas de 3x3
Atención de canal Squeeze-and-Excitation
Entrenado en ImageNet-1k
Optimizado con SGD (con Nesterov)
Programa de LR (Learning Rate) con calentamiento coseno

Casos de uso

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