lcnet_050.ra2_in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes LCNet. Entrenado en ImageNet-1k en timm utilizando la plantilla de receta descrita a continuación. Detalles de la receta: receta RandAugment RA2. Inspirado y evolucionado a partir de recetas RandAugment EfficientNet. Publicado como receta B en ResNet Strikes Back. Optimizador RMSProp (comportamiento TF 1.0), ponderación EMA promediada. Horario LR de paso (decaimiento exponencial con escalones) con calentamiento.

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('lcnet_050.ra2_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 dimensión batch

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

Extracción de Mapas 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(
'lcnet_050.ra2_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 dimensión batch

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(
'lcnet_050.ra2_in1k',
pretrained=True,
num_classes=0, # eliminar clasificador
)
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)) # tensor con forma (batch_size, num_features)

# o equivalentemente (sin necesidad de establecer num_classes=0)

output = model.forward_features(transforms(img).unsqueeze(0))
# tensor desagregado, con forma (1, 256, 7, 7)

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

Funcionalidades

Red neuronal convolucional ligera para CPU
Utiliza receta RandAugment RA2
Optimizador RMSProp con ponderación EMA
Horario LR de paso con calentamiento
Tamaño de imagen: 224 x 224
Params (M): 1.9
GMACs: 0.0
Activaciones (M): 1.3

Casos de uso

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