timm/tf_efficientnet_b3.ns_jft_in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes EfficientNet. Entrenado en ImageNet-1k y JFT-300m no etiquetado usando aprendizaje semi-supervisado Noisy Student en Tensorflow por los autores del artículo, portado a PyTorch por Ross Wightman.

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

# obtener las 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)) # insertar 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('tf_efficientnet_b3.ns_jft_in1k', pretrained=True, features_only=True)
model = model.eval()

# obtener las 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)) # insertar una sola imagen en un lote de 1

for o in output:
    print(o.shape)

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

# obtener las 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)) # salida es un tensor con forma (batch_size, num_features)

# o equivalentemente (sin necesidad de establecer num_classes=0)
output = model.forward_features(transforms(img).unsqueeze(0)) # salida es tensor sin aplicar pooling, con forma (1, 1536, 10, 10)

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

Funcionalidades

Clasificación de imágenes
Extracción de mapas de características
Emisiones de imágenes
Comparación de modelos

Casos de uso

Clasificación de imágenes precisas para una variedad de aplicaciones
Aplicaciones de visión por computadora que requieren extracción de características detalladas
Generación de representaciones de imágenes para tareas downstream como detección y segmentación