mobilenetv3_rw.rmsp_in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes MobileNet-v3. Esta es una variación específica de la arquitectura timm. Entrenado en ImageNet-1k en timm usando la plantilla de receta descrita a continuación. Detalles de la receta: Una receta simple basada en RmsProp sin RandAugment. Uso de RandomErasing, mixup, dropout, y la augmentación estándar random-resize-crop. Optimizador RMSProp (comportamiento de TF 1.0), promediado de pesos EMA. Horario de LR con decaimiento exponencial por pasos con calentamiento.

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('mobilenetv3_rw.rmsp_in1k', pretrained=True)
model = model.eval()
# get model specific transforms (normalization, resize)
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 single image into batch of 1
top5_probabilities, top5_class_indices = torch.topk(output.softmax(dim=1) * 100, k=5)

Extracción del 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(
'mobilenetv3_rw.rmsp_in1k',
pretrained=True,
features_only=True,
)
model = model.eval()
# get model specific transforms (normalization, resize)
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 single image into batch of 1
for o in output:
# print shape of each feature map in output
# e.g.:
#  torch.Size([1, 16, 112, 112])
#  torch.Size([1, 24, 56, 56])
#  torch.Size([1, 40, 28, 28])
#  torch.Size([1, 112, 14, 14])
#  torch.Size([1, 960, 7, 7])
print(o.shape)

Incrustaciones 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(
'mobilenetv3_rw.rmsp_in1k',
pretrained=True,
num_classes=0, # remove classifier nn.Linear
)
model = model.eval()
# get model specific transforms (normalization, resize)
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)) # output is (batch_size, num_features) shaped tensor
# or equivalently (without needing to set num_classes=0)
output = model.forward_features(transforms(img).unsqueeze(0))
# output is unpooled, a (1, 960, 7, 7) shaped tensor
output = model.forward_head(output, pre_logits=True)
# output is a (1, num_features) shaped tensor

Funcionalidades

Clasificación de imágenes
Extracción del mapa de características
Incrustaciones de imágenes
Modelo backbone de características

Casos de uso

Clasificación de imágenes
Extracción de características de imágenes
Generación de incrustaciones de imágenes