regnetz_c16_evos.ch_in1k
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