timm/coatnet_0_rw_224.sw_in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes específico para CoAtNet, entrenado en timm en ImageNet-1k por Ross Wightman. El entrenamiento en ImageNet-1k se realizó en TPUs gracias al apoyo del programa TRC. CoAtNet combina bloques de convolución MBConv (separables de profundidad) en las primeras etapas con bloques de transformador de autoatención en etapas posteriores. La arquitectura también incluye variantes adicionales como MaxViT y CoAtNeXt.

Como usar

from urllib.request import urlopen
from PIL import Image
import timm

# Clasificación de imágenes
img = Image.open(urlopen(
'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
))

model = timm.create_model('coatnet_0_rw_224.sw_in1k', pretrained=True)
model = model.eval()

# Obtener 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)) # Unsqueeze para imagen única en batch 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

# Extracción de mapa de características
img = Image.open(urlopen(
'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
))

model = timm.create_model(
'coatnet_0_rw_224.sw_in1k',
pretrained=True,
features_only=True,
)
model = model.eval()

# Obtener 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)) # Unsqueeze para imagen única en batch de 1

for o in output:
    print(o.shape)
from urllib.request import urlopen
from PIL import Image
import timm

# Embeddings de imágenes
img = Image.open(urlopen(
'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
))

model = timm.create_model(
'coatnet_0_rw_224.sw_in1k',
pretrained=True,
num_classes=0, # Eliminar classificador nn.Linear
)
model = model.eval()

# Obtener 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 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 es un tensor no agrupado con forma (1, 768, 7, 7)

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

Funcionalidades

Modelo específico para CoAtNet en timm
Clasificación de imágenes
Extracción de mapa de características
Embeddings de imágenes
Trained en ImageNet-1k

Casos de uso

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