regnetz_c16_evos.ch_in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes RegNetZ. Entrenado en ImageNet-1k por Ross Wightman en timm. Estos modelos RegNetZ B / C / D exploran diferentes tamaños de grupo y configuraciones de capas y no siguieron las descripciones de ningún artículo. Al igual que EfficientNets, esta arquitectura utiliza salidas de bloque lineales (no activadas) y un cuello de botella invertido (expansión de bloque medio). Este modelo utiliza capas de normalización y activación EvoNorm-S0 personalizadas en lugar de BatchNorm con activaciones SiLU. La arquitectura del modelo está implementada utilizando BYOBNet flexible (trae tus propios bloques de red) de timm, lo que permite la configuración de diseño de bloques/etapas, diseño de tallo, stride de salida (dilatación), capas de activación y normalización, así como capas de atención espacial/automática.

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

# obtener las 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)) # redimensionar imagen única 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

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

# obtener las 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)) # redimensionar imagen única en lote de 1

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, 48, 64, 64])
#  torch.Size([1, 96, 32, 32])
#  torch.Size([1, 192, 16, 16])
#  torch.Size([1, 1536, 8, 8])

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

# obtener las 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 tiene forma de tensor (batch_size, num_features)

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

output = model.forward_features(transforms(img).unsqueeze(0))
# la salida está sin agrupar, tiene forma de tensor (1, 1536, 8, 8)

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

Funcionalidades

clasificación de imágenes
extracción de mapas de características
extracción de incrustaciones de imágenes
profundidad estocástica
verificación de gradiente
decaimiento de tasa de aprendizaje por capa
extracción de características por etapa

Casos de uso

clasificación de imágenes
extracción de características
incrustaciones de imágenes
comparación de modelos