Skip to content
Instance-Batch Normalization Networks (ECCV2018)
Branch: master
Clone or download
panxingang
panxingang Modify README
Latest commit 9103e78 Jul 30, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
models IBN-Net Jul 26, 2018
pretrained IBN-Net Jul 26, 2018
utils Undefined name: import torch for lines 22, 24, 25 Jul 27, 2018
LICENSE
README.md Modify README Jul 30, 2018
imagenet.py
test.sh
train.sh

README.md

Instance-Batch Normalization Network

Paper

Xingang Pan, Ping Luo, Jianping Shi, Xiaoou Tang. "Two at Once: Enhancing Learning and Generalization Capacities via IBN-Net", ECCV2018.

Introduction

  • IBN-Net carefully unifies instance normalization and batch normalization in a single deep network.
  • It provides an extremely simple way to increase both modeling and generalization capacity without adding model complexity.

Requirements

  • Pytorch 0.3.1 (master branch) or Pytorch 0.4.1 (0.4.1 branch)

Results

Top1/Top5 error on the ImageNet validation set are reported. You may get different results when training your models with different random seed.

Model origin re-implementation IBN-Net
DenseNet-121 25.0/- 24.96/7.85 24.47/7.25
DenseNet-169 23.6/- 24.02/7.06 23.25/6.51
ResNet-50 24.7/7.8 24.27/7.08 22.54/6.32
ResNet-101 23.6/7.1 22.48/6.23 21.39/5.59
ResNeXt-101 21.2/5.6 21.31/5.74 20.88/5.42
SE-ResNet-101 22.38/6.07 21.68/5.88 21.25/5.51

Before Start

  1. Clone the repository

    git clone https://github.com/XingangPan/IBN-Net.git
  2. Download ImageNet dataset (if you need to test or train on ImageNet). You may follow the instruction at fb.resnet.torch to process the validation set.

Testing

  1. Download our pre-trained models and save them to ./pretrained.
    Download link: Pretrained models for pytorch0.3.1, Pretrained models for pytorch0.4.1
  2. Edit test.sh. Modify model and data_path to yours.
    Options for model: densenet121_ibn_a, densenet169_ibn_a, resnet50_ibn_a_old, resnet50_ibn_a, resnet50_ibn_b, resnet101_ibn_a_old, resnet101_ibn_a, resnext101_ibn_a, se_resnet101_ibn_a.
    (Note: For IBN-Net version of ResNet-50 and ResNet-101, our results in the paper are reported based on an slower implementation, corresponding to resnet50_ibn_a_old and resnet101_ibn_a_old here. We also provide a faster implementation, and the models are resnet50_ibn_a, resnet101_ibn_a, and all the rest. The top1/top5 error for resnet50_ibn_a and resnet101_ibn_a are 22.76/6.41 and 21.29/5.61 respectively.)
  3. Run test script
    sh test.sh

Training

  1. Edit train.sh. Modify model and data_path to yours.
  2. Run train script
    sh train.sh

This code is modified from bearpaw/pytorch-classification.

MXNet Implementation

https://github.com/bruinxiong/IBN-Net.mxnet

Citing IBN-Net

@inproceedings{pan2018IBN-Net,  
  author = {Xingang Pan, Ping Luo, Jianping Shi, and Xiaoou Tang},  
  title = {Two at Once: Enhancing Learning and Generalization Capacities via IBN-Net},  
  booktitle = {ECCV},  
  year = {2018}  
}
You can’t perform that action at this time.