Train various models on CIFAR10 with Chainer

December 11, 2017 ยท View on GitHub

Requirements

  • Python 3.5.1+ (not tested with Python2)
  • pip packages:
    • chainer>=3.1.0
    • chainercv>=0.8.0
    • numpy>=1.10.1
    • matplotlib>=2.0.0
    • scikit-image>=0.13.1
    • opencv-python>=3.3.0
    • tabulate>=0.8.2

Quick Start

MPLBACKEND=Agg python train.py

With full arguments:

MPLBACKEND=Agg python train.py \
--model_file models/wide_resnet.py \
--model_name WideResNet \
--batchsize 128 \
--training_epoch 500 \
--initial_lr 0.05 \
--lr_decay_rate 0.5 \
--lr_decay_epoch 70 \
--weight_decay 0.0005 \
--random_angle 15.0 \
--pca_sigma 25.5 \
--expand_ratio 1.2 \
--crop_size 28 28 \
--seed 0 \
--gpus 0 

About data augmentation

It performs various data augmentation using ChainerCV. Provided operations are:

  • Random rotating (using OpenCV or scikit-image)
  • Random lighting
  • Random LR-flipping
  • Random zomming (a.k.a. expansion)
  • Random cropping

See the details at transform function in train.py.

Exprimental Results

model_nameval/main/accuracyepochbatchsizecrop_sizeexpand_ratiopca_sigmarandom_angleweight_decayinitial_lrlr_decay_ratelr_decay_epoch
LeNet50.860166500128[28, 28]1.225.5150.00050.010.550
NIN0.879351500128[28, 28]1.225.5150.00050.010.5100
VGG0.934237500128[28, 28]1.225.5150.00050.050.550
ResNet500.950455500128[28, 28]1.225.5150.00050.050.550
DenseNet0.944818500128[28, 28]1.225.5150.00050.050.550
WideResNet0.962322500128[28, 28]1.225.5150.00050.050.570