timm/densenet201.tv_in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes DenseNet. Entrenado en ImageNet-1k (pesos originales de torchvision).

Como usar

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

# Obtén las transformaciones específicas del modelo (normalización, redimensionar)
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)) # Unsqueeze de una sola imagen en un batch de 1

top5_probabilities, top5_class_indices = torch.topk(output.softmax(dim=1) * 100, k=5)
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('densenet201.tv_in1k', pretrained=True, features_only=True)
model = model.eval()

# Obtén las transformaciones específicas del modelo (normalización, redimensionar)
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)) # Unsqueeze de una sola imagen en un batch de 1

for o in output:
    print(o.shape)
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('densenet201.tv_in1k', pretrained=True, num_classes=0) # elimina el clasificador nn.Linear
model = model.eval()

# Obtén las transformaciones específicas del modelo (normalización, redimensionar)
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 la forma (batch_size, num_features)

# o de manera equivalente (sin necesidad de establecer num_classes=0)

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

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

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
Extracción de mapas de características para tareas de visión por computadora
Generación de embeddings de imágenes para varias aplicaciones