metadata
tags:
- image-classification
- timm
library_name: timm
license: cc-by-nc-4.0
datasets:
- imagenet-1k
Model card for hiera_base_224.mae
A Hiera image feature model. Pretrained on ImageNet-1k with Self-Supervised Masked Autoencoder (MAE) method by paper authors.
Model Details
- Model Type: Image classification / feature backbone
- Model Stats:
- Params (M): 50.8
- GMACs: 9.4
- Activations (M): 30.4
- Image size: 224 x 224
- Dataset: ImageNet-1k
- Papers:
- Hiera: A Hierarchical Vision Transformer without the Bells-and-Whistles: https://arxiv.org/abs/2306.00989
- Masked Autoencoders Are Scalable Vision Learners: https://arxiv.org/abs/2111.06377
- Original: https://github.com/facebookresearch/hiera
Model Usage
Image Classification
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('hiera_base_224.mae', 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)
Feature Map Extraction
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(
'hiera_base_224.mae',
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, 96, 56, 56])
# torch.Size([1, 192, 28, 28])
# torch.Size([1, 384, 14, 14])
# torch.Size([1, 768, 7, 7])
print(o.shape)
Image Embeddings
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(
'hiera_base_224.mae',
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, 49, 768) shaped tensor
output = model.forward_head(output, pre_logits=True)
# output is a (1, num_features) shaped tensor
Model Comparison
By Top-1
model | top1 | top1_err | top5 | top5_err | param_count |
---|---|---|---|---|---|
hiera_huge_224.mae_in1k_ft_in1k | 86.834 | 13.166 | 98.01 | 1.99 | 672.78 |
hiera_large_224.mae_in1k_ft_in1k | 86.042 | 13.958 | 97.648 | 2.352 | 213.74 |
hiera_base_plus_224.mae_in1k_ft_in1k | 85.134 | 14.866 | 97.158 | 2.842 | 69.9 |
hiera_base_224.mae_in1k_ft_in1k | 84.49 | 15.51 | 97.032 | 2.968 | 51.52 |
hiera_small_224.mae_in1k_ft_in1k | 83.884 | 16.116 | 96.684 | 3.316 | 35.01 |
hiera_tiny_224.mae_in1k_ft_in1k | 82.786 | 17.214 | 96.204 | 3.796 | 27.91 |
Citation
@article{ryali2023hiera,
title={Hiera: A Hierarchical Vision Transformer without the Bells-and-Whistles},
author={Ryali, Chaitanya and Hu, Yuan-Ting and Bolya, Daniel and Wei, Chen and Fan, Haoqi and Huang, Po-Yao and Aggarwal, Vaibhav and Chowdhury, Arkabandhu and Poursaeed, Omid and Hoffman, Judy and Malik, Jitendra and Li, Yanghao and Feichtenhofer, Christoph},
journal={ICML},
year={2023}
}
@Article{MaskedAutoencoders2021,
author = {Kaiming He and Xinlei Chen and Saining Xie and Yanghao Li and Piotr Doll{'a}r and Ross Girshick},
journal = {arXiv:2111.06377},
title = {Masked Autoencoders Are Scalable Vision Learners},
year = {2021},
}