timm/eca_halonext26ts.c1_in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes HaloNet (con atención de canal eficiente, basado en la arquitectura ResNeXt). Entrenado en ImageNet-1k en timm por Ross Wightman. NOTA: Este modelo no siguió ninguna configuración específica de un artículo, se ajustó para tiempos de entrenamiento razonables y una frecuencia reducida de bloques de autoatención.

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('eca_halonext26ts.c1_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)) # añadir una dimensión al 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('eca_halonext26ts.c1_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)) # añadir una dimensión al lote de 1

for o in output: 
# imprimir la forma de cada mapa de características en la salida 
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('eca_halonext26ts.c1_in1k', pretrained=True, num_classes=0) # eliminar el clasificador 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 formado (tamaño de lote, número de características) 

# o de manera equivalente (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, número de características) 

Funcionalidades

Basado en recetas de ResNet Strikes Back C
Optimizador SGD (con Nesterov) y AGC (recorte de gradiente adaptativo)
Horario de LR coseno con calentamiento
Arquitectura del modelo se implementa usando la red BYOBNet flexible de timm (Red de bloques traiga su propio Bloque)
Profundidad estocástica
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 mapas de características
Generación de embeddings de imágenes