• Stars
    star
    695
  • Rank 63,384 (Top 2 %)
  • Language
    Python
  • License
    MIT License
  • Created about 5 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

PyTorch implementation of CNNs for CIFAR benchmark

Awesome CIFAR Zoo

Status: Archive ( Final test with PyTorch 1.7 and no longer maintained, I would recommend you to use pycls powered by FAIR, which is a simple and flexible codebase for image classification )

This repository contains the pytorch code for multiple CNN architectures and improve methods based on the following papers, hope the implementation and results will helpful for your research!!

Requirements and Usage

Requirements

  • Python (>=3.6)
  • PyTorch (>=1.1.0)
  • Tensorboard(>=1.4.0) (for visualization)
  • Other dependencies (pyyaml, easydict)
pip install -r requirements.txt

Usage

simply run the cmd for the training:

## 1 GPU for lenet
CUDA_VISIBLE_DEVICES=0 python -u train.py --work-path ./experiments/cifar10/lenet

## resume from ckpt
CUDA_VISIBLE_DEVICES=0 python -u train.py --work-path ./experiments/cifar10/lenet --resume

## 2 GPUs for resnet1202
CUDA_VISIBLE_DEVICES=0,1 python -u train.py --work-path ./experiments/cifar10/preresnet1202

## 4 GPUs for densenet190bc
CUDA_VISIBLE_DEVICES=0,1,2,3 python -u train.py --work-path ./experiments/cifar10/densenet190bc

## 1 GPU for vgg19 inference
CUDA_VISIBLE_DEVICES=0 python -u eval.py --work-path ./experiments/cifar10/vgg19

We use yaml file config.yaml to save the parameters, check any files in ./experimets for more details.
You can see the training curve via tensorboard, tensorboard --logdir path-to-event --port your-port.
The training log will be dumped via logging, check log.txt in your work path.

Results on CIFAR

Vanilla architectures

architecture params batch size epoch C10 test acc (%) C100 test acc (%)
Lecun 62K 128 250 67.46 34.10
alexnet 2.4M 128 250 75.56 38.67
vgg19 20M 128 250 93.00 72.07
preresnet20 0.27M 128 250 91.88 67.03
preresnet110 1.7M 128 250 94.24 72.96
preresnet1202 19.4M 128 250 94.74 75.28
densenet100bc 0.76M 64 300 95.08 77.55
densenet190bc 25.6M 64 300 96.11 82.59
resnext29_16x64d 68.1M 128 300 95.94 83.18
se_resnext29_16x64d 68.6M 128 300 96.15 83.65
cbam_resnext29_16x64d 68.7M 128 300 96.27 83.62
ge_resnext29_16x64d 70.0M 128 300 96.21 83.57

With additional regularization

PS: the default data augmentation methods are RandomCrop + RandomHorizontalFlip + Normalize,
and the โˆš means which additional method be used. ๐Ÿฐ

architecture epoch cutout mixup C10 test acc (%)
preresnet20 250 91.88
preresnet20 250 โˆš 92.57
preresnet20 250 โˆš 92.71
preresnet20 250 โˆš โˆš 92.66
preresnet110 250 94.24
preresnet110 250 โˆš 94.67
preresnet110 250 โˆš 94.94
preresnet110 250 โˆš โˆš 95.66
se_resnext29_16x64d 300 96.15
se_resnext29_16x64d 300 โˆš 96.60
se_resnext29_16x64d 300 โˆš 96.86
se_resnext29_16x64d 300 โˆš โˆš 97.03
cbam_resnext29_16x64d 300 โˆš โˆš 97.16
ge_resnext29_16x64d 300 โˆš โˆš 97.19
-- -- -- -- --
shake_resnet26_2x64d 1800 96.94
shake_resnet26_2x64d 1800 โˆš 97.20
shake_resnet26_2x64d 1800 โˆš 97.42
shake_resnet26_2x64d 1800 โˆš โˆš 97.71

PS: shake_resnet26_2x64d achieved 97.71% test accuracy with cutout and mixup!!
It's cool, right?

With different LR scheduler

architecture epoch step decay cosine htd(-6,3) cutout mixup C10 test acc (%)
preresnet20 250 โˆš 91.88
preresnet20 250 โˆš 92.13
preresnet20 250 โˆš 92.44
preresnet20 250 โˆš โˆš โˆš 93.30
preresnet110 250 โˆš 94.24
preresnet110 250 โˆš 94.48
preresnet110 250 โˆš 94.82
preresnet110 250 โˆš โˆš โˆš 95.88

Acknowledgments

Provided codes were adapted from

Feel free to contact me if you have any suggestions or questions, issues are welcome,
create a PR if you find any bugs or you want to contribute. ๐Ÿ˜Š

Citation

@misc{bigballon2019cifarzoo,
  author = {Wei Li},
  title = {CIFAR-ZOO: PyTorch implementation of CNNs for CIFAR dataset},
  howpublished = {\url{https://github.com/BIGBALLON/CIFAR-ZOO}},
  year = {2019}
}

More Repositories

1

cifar-10-cnn

Play deep learning with CIFAR datasets
Python
812
star
2

PyTorch-CPP

PyTorch C++ inference with LibTorch
C++
327
star
3

distribuuuu

The pure and clear PyTorch Distributed Training Framework.
Python
267
star
4

Ghost

An AI search algorithm demo
C++
58
star
5

CPP-Call-Tensorflow

Calling (TensorFlow) Python Program from C++
C++
51
star
6

Deep-learning-and-practices

Version control for my deep learning course.
Python
47
star
7

Caffe2-Tutorial

Caffe2 C++/Python tutorial with full demo
Python
39
star
8

Paper_List

Paper reading list during my graduate studies
18
star
9

Crawler_Demo

This is my Crawler exercises.
CSS
16
star
10

CVPR2022-Paper-Statistics

Paper Statistics for CVPRโ€˜22
Python
14
star
11

qduoj_install_sh

้’ๅฒ›ๅคงๅญฆOnlineJudge้ƒจ็ฝฒ่„šๆœฌ
Shell
7
star
12

ResNet_CIFAR

Residual Network Experiments with CIFAR Datasets.
Python
6
star
13

HTD

Source code for HTD (WACV 2019)
Lua
6
star
14

codePrint

็ฎ€ๅ•็š„ไปฃ็ ๆ‰“ๅฐ็ณป็ปŸ๏ผŒ็”จไบŽacm-icpcๆฏ”่ต›็š„ไปฃ็ ๆ‰“ๅฐใ€‚
HTML
5
star
15

NCTU_NP

Version control for my network programming course.
C++
4
star
16

kosmos-2-gd

Shell
3
star
17

NCTU_AI

Artificial Intelligence Term Project Spring 2017
C++
3
star
18

Toward-AGZ

Materials for AlphaGo
3
star
19

bigballon.github.io

This is my personal blog.
SCSS
3
star
20

NCTU_CV

code for my computer vision course.
C++
3
star
21

ubuntu_rc

my ubuntu setting files
Shell
3
star
22

pretrained_models

Pretrained Residual network models
2
star
23

Model_Experiment

useless experiment of HTD
Lua
2
star
24

NCTU_TCG

Version control for my theory of computer game course.
C++
2
star
25

STQPF

Short-Term Quantitative Precipitation Forecasting@CIKM AnalytiCup 2017
Python
1
star
26

Meow

Notes for BG
1
star
27

Hiphop-Gym

Python
1
star
28

bigballon

1
star
29

Dog_challenge

Jupyter Notebook
1
star