eca_resnet33ts.ra2_in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes ECA-ResNet (ResNet con 'Atención de Canal Eficiente'). Este modelo presenta un tallo de 3 capas escalonadas sin agrupamiento y activaciones SiLU. Entrenado en ImageNet-1k por Ross Wightman en timm. La arquitectura de este modelo está implementada usando la red flexible BYOBNet (Bring-Your-Own-Blocks Network) de timm, que permite la configuración de la disposición de bloques/etapas, disposición del tallo, la salida por paso (dilación), capas de activación y normalización, capas de canal y atención espacial/autonoma, e incluye características comunes a muchas otras arquitecturas de timm, incluido el depth estocástico, punto de control de gradiente, decaimiento de LR por capa y 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_resnet33ts.ra2_in1k', pretrained=True)
model = model.eval()

# obtener las 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)) # agregar una dimensión para formar un lote de 1 imagen

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(
'eca_resnet33ts.ra2_in1k',
pretrained=True,
features_only=True,
)
model = model.eval()

# obtener las 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)) # agregar una dimensión para formar un lote de 1 imagen

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

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

# obtener las 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 de manera equivalente (sin necesidad de establecer num_classes=0)

output = model.forward_features(transforms(img).unsqueeze(0))
# la salida no está agrupada, un tensor de forma (1, 1280, 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
Disposición de bloques/etapas configurable
Disposición del tallo configurable
Salida por paso configurable (dilación)
Capas de activación y normalización configurables
Capas de canal y atención espacial/autonoma configurables
Depth estocástico
Punto 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 específicas de una imagen
Obtención de embeddings de imágenes para tareas de aprendizaje profundo adicionales