regnetx_040.pycls_in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes RegNetX-4GF. Preentrenado en ImageNet-1k por los autores del artículo. La implementación timm de RegNet incluye una serie de mejoras que no están presentes en otras implementaciones, incluidas: profundidad estocástica, verificación de gradientes, decaimiento de la tasa de aprendizaje por capa, paso de salida configurable (dilatación), capas de activación y normativas configurables, opción para un bloque de embotellamiento de preactivación utilizado en la variante RegNetV, y las únicas definiciones de modelos RegNetZ conocidas con pesos preentrenados.

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

# obtener transformaciones específicas del modelo (normalización, redimensionamiento)
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 dimensión para dar forma a un lote de tamaño 1

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

# obtener transformaciones específicas del modelo (normalización, redimensionamiento)
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 dimensión para dar forma a un lote de tamaño 1

for o in output:
    print(o.shape) 

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

# obtener transformaciones específicas del modelo (normalización, redimensionamiento)
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)) # salida es un tensor de forma (batch_size, num_features)

# o de forma equivalente (sin necesidad de establecer num_classes=0)

output = model.forward_features(transforms(img).unsqueeze(0)) # salida sin agrupación, un tensor de forma (1, 1360, 7, 7)

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

Funcionalidades

profundidad estocástica
verificación de gradientes
decaimiento de la tasa de aprendizaje por capa
paso de salida configurable (dilatación)
capas de activación y normativas configurables
opción para un bloque de embotellamiento de preactivación utilizado en la variante RegNetV
definiciones de modelos RegNetZ con pesos preentrenados

Casos de uso

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