regnetz_b16.ra3_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 siguen 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 del bloque medio). B16: ~1.5GF @ 256x256 con un ancho de grupo de 16. Tallo de capa única. C16: ~2.5GF @ 256x256 con un ancho de grupo de 16. Tallo de capa única. D32: ~6GF @ 256x256 con un ancho de grupo de 32. Tallo de 3 capas escalonado, sin agrupación. D8: ~4GF @ 256x256 con un ancho de grupo de 8. Tallo de 3 capas escalonado, sin agrupación. E8: ~10GF @ 256x256 con un ancho de grupo de 8. Tallo de 3 capas escalonado, sin agrupación. Esta arquitectura de modelo se implementa utilizando la BYOBNet flexible de timm (Red de Bloques Propios). BYOBNet permite la configuración de: - diseño de bloque / etapa - diseño del tallo - salida de paso (dilatación) - capas de activación y normalización - capas de atención de canal y espacial / propia ...y también incluye características de timm comunes a muchas otras arquitecturas, que incluyen: - profundidad estocástica - verificación de puntos de control de gradiente - decaimiento de LR 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('regnetz_b16.ra3_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)) # expandir una sola imagen en un 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_b16.ra3_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)) # expandir una sola imagen en un 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, 112, 112])
# torch.Size([1, 48, 56, 56])
# torch.Size([1, 96, 28, 28])
# torch.Size([1, 192, 14, 14])
# torch.Size([1, 1536, 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(
'regnetz_b16.ra3_in1k',
pretrained=True,
num_classes=0, # eliminar el 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 (tamaño de lote, número de características)
# o equivalentemente (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, 1536, 7, 7)
output = model.forward_head(output, pre_logits=True)
# la salida es un tensor de forma (1, número de características)
Funcionalidades
- Clasificación de imágenes
- Extracción de mapas de características
- Embeddings de imágenes
Casos de uso
- Clasificación de imágenes para tareas de detección de objetos
- Extracción de características para análisis de imágenes
- Generación de embeddings de imágenes para la búsqueda o comparación de contenido