玩转CIFAR10


2021.12.30 更新:DPN


Introduction

本文使用pytorch框架,复现了LeNet, AlexNet, VGG, GoogLeNet, ResNet, ResNeXt, RegNet, DenseNet, EfficientNet, MobileNet(v1,v2,v3), ShuffleNet, SENet, PANSNet, RegNet, DLA等主流的卷积神经网络模型,以及Vision Transformer等基于Transformer的模型。同时在使用相同的训练设置的情况下,对以上模型在CIFAR10数据集上进行了详细的测试,测试内容包括测试集准确率、模型训练时间、模型参数量等。

所有模型代码风格统一、结构清晰、复现简单,训练模型只需打开ipynb文件运行即可,无需其他操作,对刚刚入门深度学习的新手非常友好。

Experiments

所有模型均使用Pytorch实现,运行环境为Python3.7+Pytorch1.9.1+CUDA11.1

所有的模型均使用相同的训练超参数设置(learning_rate,batch_size,epoch等)。

持续更新中。

General settings

Data augmentation(RandomCrop+RandomHorizontalFlip+Normalize)

Epoch=200, Batch_size=128

Learning_rate=0.01,Lr_scheduler(CosineAnnealingLR,T_max=200)

Optimizer(SGD,momentum=0.9,weight_decay=5e-4)

以下表格,Test Accuracy表示在所有epoch中最优的测试准确率;
Other Config表示模型中的其他设置(如vision transformer中multi-head数量、transformer层数等);
GPU表示使用了什么GPU进行训练;
Time Expended表示训练时间;
Parameter表示模型的参数量,一般可认为都是32位浮点数,因此(参数量/4/1024/1024=?MB)即可大约估算出模型所占空间,从MobileNet开始进行统计,因此表格部分内容为NaN,后期逐渐补上吧…

Model

Test Accuracy

Other Config

GPU

Time Expended

Parameter

LeNet

0.7474

NaN

3060

0h-39m-23s

62006

AlexNet

0.9039

NaN

3060

1h-17m-44s

NaN

VGG-11

0.9223

NaN

3060

1h-10m-23s

NaN

VGG-13

0.9368

NaN

3060

1h-39m-15s

NaN

VGG-16

0.9335

NaN

3060

1h-55m-24s

NaN

VGG-19

0.9334

NaN

3060

2h-10m-20s

NaN

GoogLeNet

0.9494

NaN

3060

8h-41m-56s

6166250

MobileNet

0.9151

NaN

3060

1h-34m-58s

NaN

MobileNet V2

0.9399

NaN

3060

2h-51m-26s

NaN

MobileNet V3-Large

0.9028

NaN

3060

1h-51m-37s

3884328

MobileNet V3-Small

0.8715

NaN

3060

1h-14m-41s

1843272

ShuffleNet_G1

0.9133

NaN

3060

1h-44m-26s

960130

ShuffleNet_G2

0.912

NaN

3060

3h-57m-11s

940282

ShuffleNet_G3

0.9101

NaN

3060

4h-47m-21s

913762

ShuffleNet_G4

0.9066

NaN

3090

2h-19m-41s

889658

ShuffleNet_G8

0.9051

NaN

3090

3h-5m-41s

912562

EfficientNet

0.9197

NaN

3090

2h-19m-35s

3599686

ResNet-18

0.9415

NaN

3060

3h-30m-54s

NaN

ResNet-50

0.9448

NaN

3060

4h-38m-58s

NaN

ResNet-101

0.9448

NaN

3060

6h-53m-23s

NaN

ResNeXt-29

0.9467

[3,3,3] c=2 bw=64

3090

6h-40m-32s

9128778

RegNetX_200MF

0.9389

NaN

3060

5h-5m-54s

2321946

DenseNet-121

0.9351

[6,12,24,16] k=12

3060

3h-32m-33s

NaN

DenseNet-121

0.9411

[6,12,24,16] k=16

3060

4h-40m-51s

NaN

DenseNet-121

0.9434

[6,12,24,16] k=24

3090

3h-8m-11s

NaN

DenseNet-121

0.9537

[6,12,24,16] k=32

3090

3h-50m-14s

NaN

DenseNet-169

0.9501

[6,12,32,32] k=32

3090

4h-36m-12s

NaN

SENet-18

0.9425

NaN

3090

3h-46m-40s

11260354

PNASNetA

0.8434

NaN

3060

2h-55m-54s

130646

PNASNetB

0.9141

NaN

3060

4h-32m-50s

451626

DLA

0.9447

NaN

3060

5h-36m-48s

16291386

DPN-26

0.9405

NaN

3060

6h-51m-13s

11574842

DPN-92

0.9473

NaN

3090

8h-20m-25s

34236634

Vision Transformer

0.7485

[heads=1,layers=1]

3060

1h-39m-41s

NaN

Vision Transformer

0.8417

[heads=1,layers=8]

3060

8h-8m-24s

NaN

Vision Transformer

0.8153

[heads=4,layers=2]

3090

1h-32m-51s

NaN

备注

  1. 部分模型在RTX 3060显卡上运行显存不足且运行速度慢,故使用RTX 3090显卡训练。
  2. 由于Vision Transformer模型过于庞大,因此在CIFAR10数据集上的测试效果并不理想。同时对于Vision Transformer模型也进行了精简处理(multi-head数量和layer数量均不是原版设定)。
  3. 由于 ResNeXt 训练需要占用大量显存且训练时间非常长,本文仅使用 ResNeXt-29 进行训练。

Download

对于一般的卷积神经网络模型,提供完整的ipynb文件,文件中已经包含了模型的训练过程以及所有输出的信息,开箱即用。对于Transformer模型,提供源代码压缩包,以txt文件形式提供所有输出的信息

VGG-11,VGG-13,VGG-16,VGG-19均可点击以下 VGG 超链接一次性下载,其他模型同理。

点击以下超链接即可下载:
​​​LeNet​​​​AlexNet​​​​VGG​​​​GoogLeNet​​​​ResNet​​​​ResNeXt​​​​DenseNet​​​​EfficientNet​​​​MobileNet​​​​ShuffleNet​​​​SENet​​​​PANSNet​​​​RegNet​​​​DLA​​​​DPN​​​​Vision Transformer​