玩转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 |
备注:
- 部分模型在RTX 3060显卡上运行显存不足且运行速度慢,故使用RTX 3090显卡训练。
- 由于Vision Transformer模型过于庞大,因此在CIFAR10数据集上的测试效果并不理想。同时对于Vision Transformer模型也进行了精简处理(multi-head数量和layer数量均不是原版设定)。
- 由于 ResNeXt 训练需要占用大量显存且训练时间非常长,本文仅使用 ResNeXt-29 进行训练。
Download
对于一般的卷积神经网络模型,提供完整的ipynb文件,文件中已经包含了模型的训练过程以及所有输出的信息,开箱即用。对于Transformer模型,提供源代码压缩包,以txt文件形式提供所有输出的信息。
VGG-11,VGG-13,VGG-16,VGG-19均可点击以下 VGG 超链接一次性下载,其他模型同理。
点击以下超链接即可下载:
LeNetAlexNetVGGGoogLeNetResNetResNeXtDenseNetEfficientNetMobileNetShuffleNetSENetPANSNetRegNetDLADPNVision Transformer