gernet_s.idstcv_in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes GENet (GPU-Efficient-Networks). Entrenado en ImageNet-1k por los autores del artículo. Esta arquitectura de modelo se implementa utilizando la flexible BYOBNet (Bring-Your-Own-Blocks Network) de timm. BYOBNet permite la configuración de diseño del bloque / etapa, diseño del tallo, paso de salida (dilación), capas de activación y normalización, capas de atención espacial / propia, y también incluye características de timm comunes a muchas otras arquitecturas, tales como profundidad estocástica, punto de control de gradiente, decaimiento de la tasa de aprendizaje por capa, y 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('gernet_s.idstcv_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 adicional para crear un lote de uno

top5_probabilities, top5_class_indices = torch.topk(output.softmax(dim=1) * 100, k=5)

Extracción de Mapa 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(
'gernet_s.idstcv_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 adicional para crear un lote de uno

for o in output:
  print(o.shape) # imprime la forma de cada mapa de características en la salida

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(
'gernet_s.idstcv_in1k',
pretrained=True,
num_classes=0, # eliminar la capa clasificadora 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 con forma (batch_size, num_features)

Comparación de Modelos

Explore el conjunto de datos y las métricas de tiempo de ejecución de este modelo en los resultados de timm.

Citación

author = {Ross Wightman},
title = {PyTorch Image Models},
year = {2019},
publisher = {GitHub},
journal = {GitHub repository},
doi = {10.5281/zenodo.4414861},
howpublished = {\url{https://github.com/huggingface/pytorch-image-models}}
}

@misc{lin2020neural,
title={Neural Architecture Design for GPU-Efficient Networks},
author={Ming Lin and Hesen Chen and Xiuyu Sun and Qi Qian y Hao Li y Rong Jin},
year={2020},
eprint={2006.14090},
archivePrefix={arXiv},
primaryClass={cs.CV}
}

Funcionalidades

Diseño de bloque / etapa configurable
Diseño del tallo configurable
Paso de salida (dilación) configurable
Capas de activación y normalización configurables
Capas de atención espacial / propia configurables
Profundidad estocástica
Punto de control de gradiente
Decaimiento 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 de mapas
Generación de embeddings de imágenes