一个 CSP-ResNet(跨阶段部分网络)图像分类模型。基于下述训练方案模板,在 timm 中使用 ImageNet-1k 数据集进行训练。
方案详情:
RA 方案。灵感来源于 EfficientNet RandAugment 方案并在此基础上发展而来。在论文 ResNet Strikes Back 中被称为 B 方案。from PIL import Image
import timm
import argparse
import torch
from openmind import is_torch_npu_available
if is_torch_npu_available():
device = "npu:0"
else:
device = "cpu"
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument(
"--model_name_or_path",
type=str,
help="Path to the model file",
default=None,
)
args = parser.parse_args()
return args
if __name__ == '__main__':
args = parse_args()
model_path = args.model_name_or_path
img=model_path+"/Img/beignets-task-guide.png"
img = Image.open(img)
model = timm.create_model(model_path, pretrained=False).to(device)
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).to(device)) # unsqueeze single image into batch of 1
top5_probabilities, top5_class_indices = torch.topk(output.softmax(dim=1) * 100, k=5)
print("top5_probabilities",top5_probabilities)
# top5_probabilities tensor([[0.1222, 0.1189, 0.1177, 0.1176, 0.1173]], device='npu:0',grad_fn=<TopkBackward0>)
print("top5_class_indices",top5_class_indices)
# top5_class_indices tensor([[961, 168, 839, 928, 277]], device='npu:0')# from urllib.request import urlopen
from PIL import Image
import timm
import argparse
import torch
from openmind import is_torch_npu_available
if is_torch_npu_available():
device = "npu:0"
else:
device = "cpu"
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument(
"--model_name_or_path",
type=str,
help="Path to the model file",
default=None,
)
args = parser.parse_args()
return args
if __name__ == '__main__':
args = parse_args()
# model_path = args.model_name_or_path
img=model_path+"/Img/beignets-task-guide.png"
img = Image.open(img)
model = timm.create_model(model_path, pretrained=False,features_only=True).to(device)
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).to(device)) # unsqueeze single image into batch of 1
for o in output:
# print shape of each feature map in output
# e.g.:
# torch.Size([1, 64, 128, 128])
# torch.Size([1, 128, 64, 64])
# torch.Size([1, 256, 32, 32])
# torch.Size([1, 512, 16, 16])
# torch.Size([1, 1024, 8, 8])
print(o.shape)
# from urllib.request import urlopen
from PIL import Image
import timm
import argparse
import torch
from openmind import is_torch_npu_available
if is_torch_npu_available():
device = "npu:0"
else:
device = "cpu"
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument(
"--model_name_or_path",
type=str,
help="Path to the model file",
default=None,
)
args = parser.parse_args()
return args
if __name__ == '__main__':
args = parse_args()
model_path = args.model_name_or_path
img=model_path+"/Img/beignets-task-guide.png"
img = Image.open(img)
model = timm.create_model(model_path, pretrained=False).to(device)
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).to(device)) # unsqueeze single image into batch of 1
output = model.forward_features(transforms(img).unsqueeze(0).to(device))
# output is unpooled, a (1, 1024, 8, 8) shaped tensor
output = model.forward_head(output, pre_logits=True)
# output is a (1, num_features) shaped tensor在 timm 的 model results 中探索该模型的数据集和运行时指标。
@article{Wang2019CSPNetAN,
title={CSPNet: A New Backbone that can Enhance Learning Capability of CNN},
author={Chien-Yao Wang and Hong-Yuan Mark Liao and I-Hau Yeh and Yueh-Hua Wu and Ping-Yang Chen and Jun-Wei Hsieh},
journal={2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops (CVPRW)},
year={2019},
pages={1571-1580}
}@article{He2015,
author = {Kaiming He and Xiangyu Zhang and Shaoqing Ren and Jian Sun},
title = {Deep Residual Learning for Image Recognition},
journal = {arXiv preprint arXiv:1512.03385},
year = {2015}
}@inproceedings{wightman2021resnet,
title={ResNet strikes back: An improved training procedure in timm},
author={Wightman, Ross and Touvron, Hugo and Jegou, Herve},
booktitle={NeurIPS 2021 Workshop on ImageNet: Past, Present, and Future}
}@misc{rw2019timm,
author = {Ross Wightman},
title = {PyTorch Image Models},
year = {2019},
publisher = {GitHub},
journal = {GitHub repository},
doi = {10.5281/zenodo.4414861},
howpublished = {\url{https://github.com/huggingface/pytorch-image-models}}
}