The goal of this repo is:

  • to help to reproduce research papers results (transfer learning setups for instance),
  • to access pretrained ConvNets with a unique interface/API inspired by torchvision.

News:

  • 04/06/2018: PolyNet and PNASNet-5-Large thanks to Alex Parinov
  • 16/04/2018: SE-ResNet* and SE-ResNeXt* thanks to Alex Parinov
  • 09/04/2018: SENet154 thanks to Alex Parinov
  • 22/03/2018: CaffeResNet101 (good for localization with FasterRCNN)
  • 21/03/2018: NASNet Mobile thanks to Veronika Yurchuk and Anastasiia
  • 25/01/2018: DualPathNetworks thanks to Ross Wightman, Xception thanks to T Standley, improved TransformImage API
  • 13/01/2018: pip install pretrainedmodels, pretrainedmodels.model_names, pretrainedmodels.pretrained_settings
  • 12/01/2018: python setup.py install
  • 08/12/2017: update data url (/!\ git pull is needed)
  • 30/11/2017: improve API (model.features(input), model.logits(features), model.forward(input), model.last_linear)
  • 16/11/2017: nasnet-a-large pretrained model ported by T. Durand and R. Cadene
  • 22/07/2017: torchvision pretrained models
  • 22/07/2017: momentum in inceptionv4 and inceptionresnetv2 to 0.1
  • 17/07/2017: model.input_range attribut
  • 17/07/2017: BNInception pretrained on Imagenet

Summary

Installation

  1. python3 with anaconda
  2. pytorch with/out CUDA

Install from pip

  1. pip install pretrainedmodels

Install from repo

  1. git clone https://github.com/Cadene/pretrained-models.pytorch.git
  2. cd pretrained-models.pytorch
  3. python setup.py install

Quick examples

  • To import pretrainedmodels:
import pretrainedmodels
  • To print the available pretrained models:
print(pretrainedmodels.model_names)
> ['fbresnet152', 'bninception', 'resnext101_32x4d', 'resnext101_64x4d', 'inceptionv4', 'inceptionresnetv2', 'alexnet', 'densenet121', 'densenet169', 'densenet201', 'densenet161', 'resnet18', 'resnet34', 'resnet50', 'resnet101', 'resnet152', 'inceptionv3', 'squeezenet1_0', 'squeezenet1_1', 'vgg11', 'vgg11_bn', 'vgg13', 'vgg13_bn', 'vgg16', 'vgg16_bn', 'vgg19_bn', 'vgg19', 'nasnetalarge', 'nasnetamobile', 'cafferesnet101', 'senet154', 'se_resnet50', 'se_resnet101', 'se_resnet152', 'se_resnext50_32x4d', 'se_resnext101_32x4d', 'cafferesnet101', 'polynet', 'pnasnet5large']
  • To print the available pretrained settings for a chosen model:
print(pretrainedmodels.pretrained_settings['nasnetalarge'])
> {'imagenet': {'url': 'http://data.lip6.fr/cadene/pretrainedmodels/nasnetalarge-a1897284.pth', 'input_space': 'RGB', 'input_size': [3, 331, 331], 'input_range': [0, 1], 'mean': [0.5, 0.5, 0.5], 'std': [0.5, 0.5, 0.5], 'num_classes': 1000}, 'imagenet+background': {'url': 'http://data.lip6.fr/cadene/pretrainedmodels/nasnetalarge-a1897284.pth', 'input_space': 'RGB', 'input_size': [3, 331, 331], 'input_range': [0, 1], 'mean': [0.5, 0.5, 0.5], 'std': [0.5, 0.5, 0.5], 'num_classes': 1001}}
  • To load a pretrained models from imagenet:
model_name = 'nasnetalarge' # could be fbresnet152 or inceptionresnetv2
model = pretrainedmodels.__dict__[model_name](num_classes=1000, pretrained='imagenet')
model.eval()

Note: By default, models will be downloaded to your $HOME/.torch folder. You can modify this behavior using the $TORCH_MODEL_ZOO variable as follow: export TORCH_MODEL_ZOO="/local/pretrainedmodels

  • To load an image and do a complete forward pass:
import torch
import pretrainedmodels.utils as utils load_img = utils.LoadImage() # transformations depending on the model
# rescale, center crop, normalize, and others (ex: ToBGR, ToRange255)
tf_img = utils.TransformImage(model) path_img = 'data/cat.jpg' input_img = load_img(path_img)
input_tensor = tf_img(input_img) # 3x400x225 -> 3x299x299 size may differ
input_tensor = input_tensor.unsqueeze(0) # 3x299x299 -> 1x3x299x299
input = torch.autograd.Variable(input_tensor,
requires_grad=False) output_logits = model(input) # 1x1000
  • To extract features (beware this API is not available for all networks):
output_features = model.features(input) # 1x14x14x2048 size may differ
output_logits = model.logits(output_features) # 1x1000

Few use cases

Compute imagenet logits

$ python examples/imagenet_logits.py -h
> nasnetalarge, resnet152, inceptionresnetv2, inceptionv4, ...
$ python examples/imagenet_logits.py -a nasnetalarge --path_img data/cat.png
> 'nasnetalarge': data/cat.png' is a 'tiger cat'

Compute imagenet evaluation metrics

$ python examples/imagenet_eval.py /local/common-data/imagenet_2012/images -a nasnetalarge -b 20 -e
> * Acc@1 92.693, Acc@5 96.13

Evaluation on imagenet

Accuracy on validation set (single model)

Results were obtained using (center cropped) images of the same size than during the training process.

Model Version Acc@1 Acc@5
PNASNet-5-Large Tensorflow 82.858 96.182
PNASNet-5-Large Our porting 82.736 95.992
NASNet-A-Large Tensorflow 82.693 96.163
NASNet-A-Large Our porting 82.566 96.086
SENet154 Caffe 81.32 95.53
SENet154 Our porting 81.304 95.498
PolyNet Caffe 81.29 95.75
PolyNet Our porting 81.002 95.624
InceptionResNetV2 Tensorflow 80.4 95.3
InceptionV4 Tensorflow 80.2 95.3
SE-ResNeXt101_32x4d Our porting 80.236 95.028
SE-ResNeXt101_32x4d Caffe 80.19 95.04
InceptionResNetV2 Our porting 80.170 95.234
InceptionV4 Our porting 80.062 94.926
DualPathNet107_5k Our porting 79.746 94.684
ResNeXt101_64x4d Torch7 79.6 94.7
DualPathNet131 Our porting 79.432 94.574
DualPathNet92_5k Our porting 79.400 94.620
DualPathNet98 Our porting 79.224 94.488
SE-ResNeXt50_32x4d Our porting 79.076 94.434
SE-ResNeXt50_32x4d Caffe 79.03 94.46
Xception Keras 79.000 94.500
ResNeXt101_64x4d Our porting 78.956 94.252
Xception Our porting 78.888 94.292
ResNeXt101_32x4d Torch7 78.8 94.4
SE-ResNet152 Caffe 78.66 94.46
SE-ResNet152 Our porting 78.658 94.374
ResNet152 Pytorch 78.428 94.110
SE-ResNet101 Our porting 78.396 94.258
SE-ResNet101 Caffe 78.25 94.28
ResNeXt101_32x4d Our porting 78.188 93.886
FBResNet152 Torch7 77.84 93.84
SE-ResNet50 Caffe 77.63 93.64
SE-ResNet50 Our porting 77.636 93.752
DenseNet161 Pytorch 77.560 93.798
ResNet101 Pytorch 77.438 93.672
FBResNet152 Our porting 77.386 93.594
InceptionV3 Pytorch 77.294 93.454
DenseNet201 Pytorch 77.152 93.548
DualPathNet68b_5k Our porting 77.034 93.590
CaffeResnet101 Caffe 76.400 92.900
CaffeResnet101 Our porting 76.200 92.766
DenseNet169 Pytorch 76.026 92.992
ResNet50 Pytorch 76.002 92.980
DualPathNet68 Our porting 75.868 92.774
DenseNet121 Pytorch 74.646 92.136
VGG19_BN Pytorch 74.266 92.066
NASNet-A-Mobile Tensorflow 74.0 91.6
NASNet-A-Mobile Our porting 74.080 91.740
ResNet34 Pytorch 73.554 91.456
BNInception Our porting 73.522 91.560
VGG16_BN Pytorch 73.518 91.608
VGG19 Pytorch 72.080 90.822
VGG16 Pytorch 71.636 90.354
VGG13_BN Pytorch 71.508 90.494
VGG11_BN Pytorch 70.452 89.818
ResNet18 Pytorch 70.142 89.274
VGG13 Pytorch 69.662 89.264
VGG11 Pytorch 68.970 88.746
SqueezeNet1_1 Pytorch 58.250 80.800
SqueezeNet1_0 Pytorch 58.108 80.428
Alexnet Pytorch 56.432 79.194

Notes:

  • the Pytorch version of ResNet152 is not a porting of the Torch7 but has been retrained by facebook.
  • For the PolyNet evaluation each image was resized to 378x378 without preserving the aspect ratio and then the central 331×331 patch from the resulting image was used.

Beware, the accuracy reported here is not always representative of the transferable capacity of the network on other tasks and datasets. You must try them all!

Pretrained models for Pytorch (Work in progress)的更多相关文章

  1. Caffe2 载入预训练模型(Loading Pre-Trained Models)[7]

    这一节我们主要讲述如何使用预训练模型.Ipython notebook链接在这里. 模型下载 你可以去Model Zoo下载预训练好的模型,或者使用Caffe2的models.download模块获取 ...

  2. (转载)PyTorch代码规范最佳实践和样式指南

    A PyTorch Tools, best practices & Styleguide 中文版:PyTorch代码规范最佳实践和样式指南 This is not an official st ...

  3. pytorch中tensorboardX的用法

    在代码中改好存储Log的路径 命令行中输入 tensorboard --logdir /home/huihua/NewDisk1/PycharmProjects/pytorch-deeplab-xce ...

  4. (转)Awesome PyTorch List

    Awesome-Pytorch-list 2018-08-10 09:25:16 This blog is copied from: https://github.com/Epsilon-Lee/Aw ...

  5. Ubuntu 16.04上源码编译和安装pytorch教程,并编写C++ Demo CMakeLists.txt | tutorial to compile and use pytorch on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/54e7a3d8/,欢迎阅读最新内容! tutorial to compile and use pytorch on ubuntu ...

  6. (转) The Incredible PyTorch

    转自:https://github.com/ritchieng/the-incredible-pytorch The Incredible PyTorch What is this? This is ...

  7. Run Your Tensorflow Deep Learning Models on Google AI

    People commonly tend to put much effort on hyperparameter tuning and training while using Tensoflow& ...

  8. FaceNet pre-trained模型以及FaceNet源码使用方法和讲解

    Pre-trained models Model name LFW accuracy Training dataset Architecture 20180408-102900 0.9905 CASI ...

  9. 【翻译】OpenVINO Pre-Trained 预训练模型介绍

    OpenVINO 系列软件包预训练模型介绍 本文翻译自 Intel OpenVINO 的  "Overview of OpenVINO Toolkit Pre-Trained Models& ...

随机推荐

  1. 具体数学二项式至生成函数章-----致敬Kunth

    关于标题取得这么奇怪.因为在具体数学中.这两章是分开叙述的.并且分别叙述得淋漓尽致! 我只参悟其中关于生成函数的一小部分内容(暂时于我够用了.) 提二项式系数之前不得不提组合数.以往在高中用的是符号C ...

  2. [luogu1654]OSU!

    update 9.20:本篇题解已经被\(yyb\)证明是出锅的 这道题目最后的式子看上去是很简单的,不到10行就码完了,但是求式子的过程并没有那么简单. 很容易想到一种枚举思路: 因为每一段连续的1 ...

  3. 洛谷 P2730 魔板 Magic Squares 解题报告

    P2730 魔板 Magic Squares 题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题目描述 ...

  4. 被引用的外部JS存在window.onload时,判断当前页面是否已存在window.onload,并进行相应处理

    如果页面a.html引用了b.js,b.js里的方法需要在页面资源加载完成后执行,即在window.onload里执行:这时如果a.html里使用了window.onload方法,b.js就不能重复调 ...

  5. 2017-7-18-每日博客-关于Linux下的鲜为人知的10条命令.doc

    这篇文章的目的是介绍一些少有人知的Linux命令,它们一定会高效地帮你管理你的桌面/服务器. 1. sudo !!命令 没有特定输入sudo命令而运行,将给出没有权限的错误.那么,你不需要重写整个命令 ...

  6. 怎么使用formBuilder以拖拽方式编写页面

    1.以admin用户登录系统,打开formbuilder http://localhost:8081/framework/main/formbuilder 2.从右方组件中,用鼠标拖拽页面所需的组件到 ...

  7. 使用树莓派录音——USB声卡

    原文链接:http://jingyan.eeboard.com/article/73723 我们都知道树莓派只有音频输出口,而没有音频输入的接口,怎么办呢?其实只要一个USB声卡就可以了. USB声卡 ...

  8. [mysql]数据库引擎查看

    1.查看数据库引擎 全局下,show engines; 2.察看数据库引擎 show variables like '%engine%'; 或者show create table xxx\G 会显示默 ...

  9. lvs学习总结

    看的马哥的视频 NAT1.Director的DIP地址与集群节点必须在同一个网络中[vlan或者subnat] .RIP地址通常是私有地址,仅用于和DIP进行通信 .Director处理进出的所有通信 ...

  10. bzoj1177 [Apio2009]Oil 二维前缀最大值,和

    [Apio2009]Oil Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 2300  Solved: 932[Submit][Status][Disc ...