You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fromurllib.requestimporturlopenfromPILimportImageimporttimmimporttorchimportrdnet# register rdnet models to timmimg=Image.open(urlopen(
'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
))
model=timm.create_model('rdnet_tiny.nv_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 1top5_probabilities, top5_class_indices=torch.topk(output.softmax(dim=1) *100, k=5)
Feature Map Extraction
fromurllib.requestimporturlopenfromPILimportImageimporttimmimportrdnet# register rdnet models to timmimg=Image.open(urlopen(
'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
))
model=timm.create_model(
'rdnet_tiny.nv_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 1foroinoutput:
# print shape of each feature map in output# e.g.:# torch.Size([1, 256, 56, 56])# torch.Size([1, 440, 28, 28])# torch.Size([1, 744, 14, 14])# torch.Size([1, 1040, 7, 7])print(o.shape)
Image Embeddings
fromurllib.requestimporturlopenfromPILimportImageimporttimmimportrdnet# register rdnet models to timmimg=Image.open(urlopen(
'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
))
model=timm.create_model(
'rdnet_tiny.nv_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, 1040, 7, 7) shaped tensoroutput=model.forward_head(output, pre_logits=True)
# output is a (1, num_features) shaped tensor
Citation
@misc{kim2024densenets,
title={DenseNets Reloaded: Paradigm Shift Beyond ResNets and ViTs},
author={Donghyun Kim and Byeongho Heo and Dongyoon Han},
year={2024},
eprint={2403.19588},
archivePrefix={arXiv},
}