eca_resnext26ts.ch_in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes ECA-ResNeXt (ResNeXt con 'Atención de Canal Eficiente'). Este modelo presenta un tallo de 3 capas en niveles y activaciones SiLU. Entrenado en ImageNet-1k por Ross Wightman en timm. Esta arquitectura de modelo se implementa utilizando la flexible BYOBNet (Red de Bloques Trae-Tus-Propios) de timm. BYOBNet permite la configuración de: disposición de bloques/etapas, disposición del tallo, paso de salida (dilatación), activación y capas de norma, capas de atención espacial/canal y también incluye características comunes a muchas otras arquitecturas de timm, incluyendo: profundidad estocástica, puntos de control de gradiente, decaimiento de LR por capa, extracción de características por etapa.

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

# obtener transformaciones específicas del modelo (normalización, redimensionar)
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)) # desempacar única imagen en lote de 1

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


# Extracción de Mapas de Características

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

model = timm.create_model(
'eca_resnext26ts.ch_in1k',
pretrained=True,
features_only=True,
)
model = model.eval()

# obtener transformaciones específicas del modelo (normalización, redimensionar)
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)) # desempacar única imagen en lote de 1

for o in output:
# imprimir forma de cada mapa de características en la salida
# e.g.:
#  torch.Size([1, 64, 128, 128])
#  torch.Size([1, 256, 64, 64])
#  torch.Size([1, 512, 32, 32])
#  torch.Size([1, 1024, 16, 16])
#  torch.Size([1, 2048, 8, 8])

print(o.shape)


# 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(
'eca_resnext26ts.ch_in1k',
pretrained=True,
num_classes=0, # eliminar clasificador nn.Linear
)
model = model.eval()

# obtener transformaciones específicas del modelo (normalización, redimensionar)
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 equivalentemente (sin necesidad de configurar num_classes=0)

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

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

Funcionalidades

Clasificación de imágenes
Extracción de mapas de características
Embeddings de imágenes
Diseño de tallo de 3 capas
Activaciones SiLU
Entrenamiento en ImageNet-1k
Configuración de disposición de bloques/etapas
Configuración de disposición del tallo
Paso de salida (dilatación) configurable
Capas de activación y norma configurables
Capas de atención espacial/canal configurables
Profundidad estocástica
Puntos de control de gradiente
Decaimiento de LR por capa
Extracción de características por etapa

Casos de uso

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