timm/repvgg_b3.rvgg_in1k
timm
Clasificación de imagen
Un modelo de clasificación de imágenes RepVGG. Entrenado en ImageNet-1k por los autores del artículo. Esta arquitectura de modelo se implementa utilizando la red flexible BYOBNet (Bring-Your-Own-Blocks Network) de timm. BYOBNet permite la configuración de: diseño de bloques/etapas, disposición del tallo, salida con dilatación, capas de activación y normalización, capas de atención espacial y por canal, entre otras características comunes a muchas otras arquitecturas de timm, incluyendo: profundidad estocástica, punto de control de gradiente, disminución de la tasa de aprendizaje por capa, extracción de características por etapa.
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('repvgg_b3.rvgg_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 para 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(
'repvgg_b3.rvgg_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 para lote de tamaño 1
for o in output:
# imprimir forma de cada mapa de características en la salida
# por ejemplo:
# torch.Size([1, 64, 112, 112])
# torch.Size([1, 192, 56, 56])
# torch.Size([1, 384, 28, 28])
# torch.Size([1, 768, 14, 14])
# torch.Size([1, 2560, 7, 7])
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(
'repvgg_b3.rvgg_in1k',
pretrained=True,
num_classes=0, # eliminar 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 de forma (batch_size, num_features)
# o de manera equivalente (sin necesidad de configurar num_classes=0)
output = model.forward_features(transforms(img).unsqueeze(0))
# la salida no está agrupada, es un tensor de forma (1, 2560, 7, 7)
output = model.forward_head(output, pre_logits=True)
# la salida es un tensor de forma (1, num_features)
Funcionalidades
- Clasificación de imágenes
- Extracción de mapas de características
- Embeddings de imágenes
- Configuración de diseño de bloques/etapas
- Configuración de disposición del tallo
- Configuración de salida con dilatación
- Configuración de capas de activación y normalización
- Configuración de capas de atención espacial y por canal
- Profundidad estocástica
- Punto de control de gradiente
- Disminución de la 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
- Generación de embeddings de imágenes