edgenext_base.usi_in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes EdgeNeXt. Entrenado en ImageNet-1k por los autores del artículo utilizando destilación (USI según Solving ImageNet).

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

# obtener transformaciones específicas del modelo (normalización, redimensionamiento)
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)) # hacer batch de 1 imagen

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

# obtener transformaciones específicas del modelo (normalización, redimensionamiento)
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)) # hacer batch de 1 imagen

for o in output:
# imprimir forma de cada mapa de características en la salida
# ej.:
#  torch.Size([1, 80, 64, 64])
#  torch.Size([1, 160, 32, 32])
#  torch.Size([1, 288, 16, 16])
#  torch.Size([1, 584, 8, 8])

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

# obtener transformaciones específicas del modelo (normalización, redimensionamiento)
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 equivalentemente (sin necesidad de establecer num_classes=0)

output = model.forward_features(transforms(img).unsqueeze(0))
# la salida no está agrupada, es un tensor de forma (1, 584, 8, 8)

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

Citar

@inproceedings{Maaz2022EdgeNeXt,
title={EdgeNeXt: Efficiently Amalgamated CNN-Transformer Architecture for Mobile Vision Applications},
author={Muhammad Maaz and Abdelrahman Shaker and Hisham Cholakkal and Salman Khan and Syed Waqas Zamir and Rao Muhammad Anwer and Fahad Shahbaz Khan},
booktitle={International Workshop on Computational Aspects of Deep Learning at 17th European Conference on Computer Vision (CADL2022)},
year={2022},
organization={Springer}
}

@misc{https://doi.org/10.48550/arxiv.2204.03475,
doi = {10.48550/ARXIV.2204.03475},  
url = {https://arxiv.org/abs/2204.03475},  
author = {Ridnik, Tal and Lawen, Hussam and Ben-Baruch, Emanuel and Noy, Asaf},  
keywords = {Computer Vision and Pattern Recognition (cs.CV), Machine Learning (cs.LG), FOS: Computer and information sciences, FOS: Computer and information sciences},  
title = {Solving ImageNet: a Unified Scheme for Training any Backbone to Top Results},  
publisher = {arXiv},  
year = {2022},  
}

Funcionalidades

Clasificación de imágenes
Extracción de mapas de características
Embeddings de imágenes

Casos de uso

Aplicaciones móviles de visión por computadora
Clasificación de imágenes
Extracción de características de imágenes
Generación de embeddings de imágenes