eva02_large_patch14_448.mim_m38m_ft_in22k_in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes EVA02. Preentrenado en Merged-38M (IN-22K, CC12M, CC3M, COCO (entre)inamiento, ADE20K (entrenamiento), Object365 y OpenImages) con modelado de imágenes enmascaradas (usando EVA-CLIP como profesor de MIM) y afinado en ImageNet-22k y luego en ImageNet-1k por los autores del artículo. Los modelos EVA-02 son transformadores de visión con pooling medio, SwiGLU, incrustaciones de posición rotatorias (ROPE) y LN extra en MLP (para los modelos Base y Large). NOTA: Los puntos de control de timm son float32 para consistencia con otros modelos. Los puntos de control originales son float16 o bfloat16 en algunos casos, vea los originales si se prefiere.

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('eva02_large_patch14_448.mim_m38m_ft_in22k_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)) # unsqueeze una sola imagen en lote de 1

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

Inserció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(
'eva02_large_patch14_448.mim_m38m_ft_in22k_in1k',
pretrained=True,
num_classes=0, # eliminar el 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 con 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 forma (1, 1025, 1024)

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

Funcionalidades

Clasificación de imágenes
Extracción de características de imágenes
Pooling medio
SwiGLU
Incrustaciones de posición rotatorias (ROPE)
LN extra en MLP
Puntos de control float32

Casos de uso

Clasificación de imágenes
Generación de incrustaciones de imágenes
Transferencia de aprendizaje en tareas de visión por computadora