玩转CIFAR10—Pytorch复现LeNet,AlexNet,VGG,GoogLeNet,MobileNet,ResNet,DenseNet,Vision Transformer等模型(持续更新)

玩转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

你可能感兴趣的:(机器学习,笔记,pytorch,cifar10,卷积神经网络,transformer,深度学习)