深度学习与计算机视觉教程(9) | 典型CNN架构 (Alexnet,VGG,Googlenet,Restnet等)(CV通关指南·完结)

深度学习10-经典深度学习模型简介二+VGG+ResNet+GooleNet VGG https://my.oschina.net/u/876354/blog/1634322 2014年,牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司的研究员一起研发出了新的深度卷积神经网络:VGGNet,并取得了ILSVRC2014比赛分类项目的第二名(第一名是GoogLeNet,也是同年提出的)和定位项目的第一名。 VGGNet探索... 阅读详情

ShowMeAI研究中心


CNN Architectures; 深度学习与计算机视觉; Stanford CS231n

本系列为 斯坦福CS231n 《深度学习与计算机视觉(Deep Learning for Computer Vision)》的全套学习笔记,对应的课程视频可以在 这里 查看。更多资料获取方式见文末。


引言

ShowMeAI在文章 深度学习与CV教程(5) | 卷积神经网络 中已经给大家介绍过CNN的核心结构组件,在本篇中,我们给大家介绍目前最广泛使用的典型卷积神经网络结构。包括经典结构(AlexNet、VGG、GoogLeNet、ResNet)和一些新的结构(Network in Network、Resnet改进、FractalNet、DenseNet等)

关于典型CNN结构的详细知识也可以参考ShowMeAI的 深度学习教程 | 吴恩达专项课程 · 全套笔记解读 中的文章 经典CNN网络实例详解

本篇重点

  • 经典CNN架构
    • AlexNet
  • VGG
  • GoogLeNet
  • ResNet
  • 其他结构
    • NIN(Network in Network)
  • ResNet改进
  • FractalNet
  • DenseNet
  • NAS

1.经典架构

1.1 AlexNet

首先回顾一下在数字识别领域有巨大成功的 LeNet-5,该网络结构为 [CONV-POOL-CONV-POOL-FC-FC]。卷积层使用 5 × 5 5 \times 5 5×5 的卷积核,步长为 1 1 1;池化层使用 2 × 2 2 \times 2 2×2 的区域,步长为 2 2 2;后面是全连接层。如下图所示:

AlexNet; LeNet-5 架构

而2012年的 AlexNet 是第一个在 ImageNet 大赛上夺冠的大型 CNN 网络,它的结构和 LeNet-5 很相似,只是层数变多了——[CONV1-MAX POOL1-NORM1-CONV2-MAX POOL2-NORM2-CONV3-CONV4-CONV5-Max POOL3-FC6-FC7-FC8],共有5个卷积层、3个池化层、2个归一化层和三个全连接层。如下图所示:

AlexNet; AlexNet 架构

  • 输入: 227 × 227 × 3 227 \times 227 \times 3 227×227×3 的图片;
  • CONV1:使用 96 个 11 × 11 11 \times 11 11×11 大小的卷积核,步长为 4 4 4,由于 ( 227 − 11 ) / 4 + 1 = 55 (227-11)/4+1=55 (227−11)/4+1=55,所以输出的尺寸为 55 × 55 × 96 55 \times 55 \times 96 55×55×96,共有 96 × 11 × 11 × 3 96 \times 11 \times 11 \times 3 96×11×11×3 个参数;
  • POOL1:使用 3 × 3 3 \times 3 3×3的池化区域,步长为 2 2 2,由于 ( 55 − 3 ) / 2 + 1 = 27 (55-3)/2+1=27 (55−3)/2+1=27,所以输出为 27 × 27 × 96 27 \times 27 \times 96 27×27×96,没有参数;
  • NORM1:归一化后仍然是 27 × 27 × 96 27 \times 27 \times 96 27×27×96;
  • CONV2:使用 256 个 5 × 5 5 \times 5 5×5 的卷积核,stride 1 1 1、pad 2 2 2 , ( 27 + 2 × 2 − 5 ) + 1 = 27 (27+2 \times 2-5)+1=27 (27+2×2−5)+1=27,所以输出为 27 × 27 × 256 27 \times 27 \times 256 27×27×256;
  • POOL2: 3 × 3 3 \times 3 3×3 filters,stride 2 2 2 , ( 27 − 3 ) / 2 + 1 = 13 (27-3)/2+1=13 (27−3)/2+1=13,所以输出为 13 × 13 × 256 13 \times 13 \times 256 13×13×256;
  • NORM2: 13 × 13 × 256 13 \times 13 \times 256 13×13×256;
  • CONV3:384个 3 × 3 3 \times 3 3×3 filters,stride 1 1 1, pad 1 1 1,输出 [ 13 × 13 × 384 ] [13 \times 13 \times 384] [13×13×384];
  • CONV4:384个 3 × 3 3 \times 3 3×3 filters,stride 1 1 1, pad 1 1 1,输出 [ 13 × 13 × 384 ] [13 \times 13 \times 384] [13×13×384];
  • CONV5:256个 3 × 3 3 \times 3 3×3 filters,stride 1 1 1, pad 1 1 1,输出 [ 13 × 13 × 256 ] [13 \times 13 \times 256] [13×13×256];
  • POOL3: 3 × 3 3 \times 3 3×3 filters,stride 2 2 2 输出为 [ 6 × 6 × 256 ] [6 \times 6 \times 256] [6×6×256];
  • FC6: 4096 4096 4096 个神经元,输出为 [ 4096 ] [4096] [4096];
  • FC7: 4096 4096 4096 个神经元,输出为 [ 4096 ] [4096] [4096];
  • FC8: 1000 1000 1000 个神经元,(class scores)输出为 [ 1000 ] [1000] [1000]。

之所以在上图中分成上下两个部分,是因为当时的GPU容量太小,只能用两个来完成。还有一些细节是:

  • 第一次使用 ReLU 函数
  • 使用归一化层(现在不常用了)
  • 数据增强
  • dropout 0.5
  • batch size 128
  • SGD Momentum 0.9
  • 学习率1e-2, 当验证准确率平稳时,手动减少 10
  • L2权重衰减是 5e-4
  • 7 CNN ensemble: 18.2 % → 15.4 % 18.2\% \to 15.4\% 18.2%→15.4%

AlexNet夺得ImageNet大赛2012的冠军时,将正确率几乎提高了10%,2013年的冠军是ZFNet,和AlexNet使用相同的网络架构,只是对超参数进一步调优:

  • CONV1:将 (11x11 stride 4) 改为 (7x7 stride 2) ;
  • CONV3,4,5:不再使用384, 384, 256个滤波器,而是使用 512, 1024, 512个。

这样将错误率从 16.4 % 16.4\% 16.4% 降低到 11.7 % 11.7\% 11.7%

AlexNet; ImageNet 大赛历届冠军

下面介绍14年的冠亚军GoogLeNet(22层网络)和VGG(19层网络)。

1.2 VGG

VGG 相对于AlexNet使用更小的卷积核,层数也更深。VGG有16层和19层两种。卷积核只使用 3 × 3 3 \times 3 3×3,步长为 1 1 1,pad为 1 1 1;池化区域 2 × 2 2 \times 2 2×2,步长为2。

VGG; VGG V.S. AlexNet

那么为什么使用 3 × 3 3 \times 3 3×3的小卷积核呢?

  • 多个卷积层堆叠时,第一层的感受野是 3 × 3 3 \times 3 3×3,第二层的感受野是 5 × 5 5 \times 5 5×5 (感受原图像),这样堆叠三层的有效感受野就变成 7 × 7 7 \times 7 7×7;
  • 多个 3 × 3 3 \times 3 3×3 的卷基层比一个大尺寸卷积核的卷积层有更多的非线性(更多层的非线性函数),使得判决函数更加具有判决性;
  • 多个 3 × 3 3 \times 3 3×3 的卷积层比一个大尺寸的卷积核有更少的参数,假设卷积层的输入和输出的特征图大小相同为 C C C,那么三个 3 × 3 3 \times 3 3×3 的卷积层参数个数 3 × ( 3 × 3 × C × C ) = 27 C 2 3 \times (3 \times 3 \times C \times C)=27C2 3×(3×3×C×C)=27C2;一个 7 × 7 7 \times 7 7×7 的卷积层参数为 7 × 7 × C × C = 49 C 2 7 \times 7 \times C \times C=49C2 7×7×C×C=49C2;所以可以把三个 3 × 3 3 \times 3 3×3的filter看成是一个 7 × 7 7 \times 7 7×7 filter的分解(中间层有非线性的分解, 并且起到隐式正则化的作用)。

下面看一下VGG-16的参数和内存使用情况:

VGG; VGG-16 参数与内存

  • 总内存占用:24M * 4 bytes,每张图片约96MB,加上反向传播需要乘以2;大多数内存都用在了前面几层卷积层;
  • 总参数个数:138M,大多都在全连接层,全连接层的第一层就有100多M。

VGG网络的一些细节是:

  • 14年ImageNet大赛分类第二名,定位第一名
  • 训练过程和AlexNet很接近
  • 不使用局部响应归一化
  • 有16层和19层两种,19层效果稍微好一些,但是占用更多内存,16层应用的更广泛;
  • 使用模型集成
  • FC7的特征泛化非常好,可以直接用到其他任务中

下面来看一下分类的第一名,GoogLeNet。

1.3 GoogLeNet

关于GoogLeNet/Inception的详细知识也可以参考ShowMeAI的深度学习教程 | 吴恩达专项课程 · 全套笔记解读中的文章经典CNN网络实例详解

先说明 GoogLeNet 的一些细节:

  • 网络有22层,比VGG深一些
  • 为了高效的计算,使用 「Inception」 模块
  • 不使用全连接层
  • 只有500万个参数,比 AlexNet 少了12倍
  • 14年分类的冠军(6.7% top 5 error)

1) Inception Module

「Inception」模块是一种设计的比较好的局域网拓扑结构,然后将这些模块堆叠在一起。这种拓扑结构对来自前一层的输入,并行应用多种不同的滤波操作,比如 1 × 1 1 \times 1 1×1 卷积、 3 × 3 3 \times 3 3×3 卷积、 5 × 5 5 \times 5 5×5 卷积和 3 × 3 3 \times 3 3×3 池化。然后将所有滤波器的输出在深度上串联在一起。

如下图所示:

GoogLeNet; 未优化的 Inception Module 网络

但是这种结构的一个问题是计算复杂度大大增加。如下图所示是一个网络参数计算示例:

GoogLeNet; 未优化的 Inception Module 网络参数计算

输入为 28 × 28 × 256 28 \times 28 \times 256 28×28×256,而串联后的输出为 28 × 28 × 672 28 \times 28 \times 672 28×28×672。(假设每个滤波操作都通过零填充保持输入尺寸)并且运算花费也非常高:

  • [1x1 conv, 128] 28 × 28 × 128 × 1 × 1 × 256 28 \times 28 \times 128 \times 1 \times 1 \times 256 28×28×128×1×1×256 次乘法运算;
  • [3x3 conv, 192] 28 × 28 × 192 × 3 × 3 × 256 28 \times 28 \times 192 \times 3 \times 3 \times 256 28×28×192×3×3×256 次;
  • [5x5 conv, 96] 28 × 28 × 96 × 5 × 5 × 256 28 \times 28 \times 96 \times 5 \times 5 \times 256 28×28×96×5×5×256 次。

总计:854M次乘法运算。

由于池化操作会保持原输入的深度,所以网络的输出一定会增加深度。

解决办法是在进行卷积操作前添加一个「瓶颈层」,该层使用 1 × 1 1 \times 1 1×1 卷积,目的是保留原输入空间尺寸的同时,减小深度,只要卷积核的数量小于原输入的深度即可。

GoogLeNet; 应用1*1卷积的 Inception Module

使用这种结构,同样的网络参数设置下,计算量会减少很多:

GoogLeNet; 使用1*1卷积结构减少网络参数量

最终得到的输出为 28 × 28 × 480 28 \times 28 \times 480 28×28×480。此时总运算量为:

  • [1x1 conv, 64] 28 × 28 × 64 × 1 × 1 × 256 28 \times 28 \times 64 \times 1 \times 1 \times 256 28×28×64×1×1×256
  • [1x1 conv, 64] 28 × 28 × 64 × 1 × 1 × 256 28 \times 28 \times 64 \times 1 \times 1 \times 256 28×28×64×1×1×256
  • [1x1 conv, 128] 28 × 28 × 128 × 1 × 1 × 256 28 \times 28 \times 128 \times 1 \times 1 \times 256 28×28×128×1×1×256
  • [3x3 conv, 192] 28 × 28 × 192 × 3 × 3 × 64 28 \times 28 \times 192 \times 3 \times 3 \times 64 28×28×192×3×3×64
  • [5x5 conv, 96] 28 × 28 × 96 × 5 × 5 × 64 28 \times 28 \times 96 \times 5 \times 5 \times 64 28×28×96×5×5×64
  • [1x1 conv, 64] 28 × 28 × 64 × 1 × 1 × 256 28 \times 28 \times 64 \times 1 \times 1 \times 256 28×28×64×1×1×256

总计: 358 M 358M 358M。减少了一倍多。

2) 完整结构

Inception module堆叠成垂直结构,这里方便描述,将模型水平放置:

GoogLeNet; 完整的 GoogLeNet 结构

  • 蓝色部分主干网:

Input - Conv 7x7+2(S) - MaxPool 3x3+2(S) - LocalRespNorm - Conv 1x1+1(V) - Conv 3x3+1(S) - LocalRespNorm - MaxPool 3x3+2(S)

含参数的层只有3个卷积层;

  • 红色部分 Inception module 堆叠:
    • 并行层只算一层,所以一个 Inception module 只有两层,共有 9 个相同的模块 18 层。
  • 绿色部分的输出:
    • 移除昂贵的全连接层,只留一个分类用的 FC。
    • AveragePool 7x7+1(V) - FC - Softmax - Output

所以含参数的层总计 3 + 18 + 1 = 22 3+18+1 = 22 3+18+1=22 层。

此外,橙色部分的层不计入总层数,这两块的结构都是:AveragePool 5x5+3(V) - Conv 1x1+1(S) - FC - FC - Softmax - Output。

原论文对于橙色辅助部分的描述是:

「该相对较浅的网络在此分类任务上的强大表现表明,网络中间层产生的特征应该是非常有区别性的。 通过添加连接到这些中间层的辅助分类器,我们期望在分类器的较低阶段中鼓励区分,增加回传的梯度信号,并提供额外的正则化。 这些辅助分类器采用较小的卷积核,置于第三和第六个Inception module的输出之上。 在训练期间,它们的损失会加到折扣权重的网络总损失中(辅助分类的损失加权为0.3)。 在预测时,这些辅助网络被丢弃。」

1.4 ResNet

关于ResNet的详细知识也可以参考ShowMeAI的深度学习教程 | 吴恩达专项课程 · 全套笔记解读中的文章经典CNN网络实例详解

从2015年开始,神经网络的层数爆发式地增长,比如著名的ResNet有152层。

如下图所示,15-17年的冠军网络都有152层之深。

ResNet; ResNet Revolution of depth

ResNet 是一种非常深的网络,使用了残差连接。细节是:

  • 152层
  • ILSVRC’15优胜者(3.57% top 5 error)
  • 横扫了所有ILSVRC’15 和COCO’15分类/检测的竞赛!

表现这么好的 ResNet 并不仅仅是因为深,研究表明一个 56 层的卷积层堆叠网络训练误差和测试误差都比一个 20 层的网络要大,并且不是过拟合的原因,而是更深的网络更难训练和优化。

一个更深的模型至少能和一个较浅的模型表现一样好(学习能力会更强),如果想把一个较浅的层变成较深的层,可以用下面的方式来构建:将原来比较浅的层拷贝到较深的层中,然后添加一些等于本身的映射层。这样较深的模型可以更好的学习。

1) 核心思想

ResNet通过使用多个有参层来学习输入与输入输出之间的残差映射( residual mapping ) ,而非像一般CNN网络(如AlexNet/VGG等)那样使用有参层来直接学习输入输出之间的底层映射( underlying mapping) 。

① 残差学习(Residual Learning)

若将输入设为X,将某一有参网络层映射设为 H H H,那么以 X X X 为输入的该层的输出将为 H ( X ) H(X) H(X)。通常的 CNN 网络会直接通过训练学习出参数函数H的表达式,从而直接得到 X X X 到 H ( X ) H(X) H(X) 的映射。

ResNet; 残差学习

而残差学习则是致力于使用多个有参网络层来学习输入到输入、输出间的残差 ( H ( X ) − X ) (H(X) - X) (H(X)−X) 的映射,即学习 X → ( H ( X ) − X ) X \to (H(X) - X) X→(H(X)−X) ,然后加上X的自身映射(identity mapping) 。

也就是说网络的输出仍然是 H ( X ) − X + X = H ( X ) H(X) - X + X = H(X) H(X)−X+X=H(X),只是学习的只是 ( H ( X ) − X ) (H(X) - X) (H(X)−X), X X X 部分直接是本身映射。

② 自身映射(Identity Mapping)

残差学习单元通过本身映射的引入在输入、输出之间建立了一条直接的关联通道,从而使得强大的有参层集中精力学习输入、输出之间的残差。

一般我们用 F ( X , W i ) F(X, W_i) F(X,Wi​) 来表示残差映射,那么残差学习单元的输出即为: Y = F ( X , W i ) + X Y = F(X, W_i) + X Y=F(X,Wi​)+X。

  • 当输入、输出通道数相同时,自然可以直接使用 X X X 进行相加。
  • 当它们之间的通道数目不同时,我们就需要考虑建立一种有效的自身映射函数从而可以使得处理后的输入 X X X 与输出 Y Y Y 的通道数目相同即 Y = F ( X , W i ) + W s X Y = F(X, W_i) + W_sX Y=F(X,Wi​)+Ws​X。

当X与Y通道数目不同时,有两种自身映射方式。

  • ① 简单地将 X X X 相对 Y Y Y 缺失的通道直接补零从而使其能够相对齐
  • ② 通过使用 1 × 1 1 \times 1 1×1 的卷积来表示 W s W_s Ws​ 映射从而使得最终输入与输出的通道一致。

对应的论文和实验表明,学习残差比直接学习输入到输出的映射要更加容易,收敛速度也更快,同时从最终分类精度效果上看也有提升。

我们想象1个极端极端情况,如果自身映射是最优的,那么将残差设为零相比使用一堆非线性层做自身映射显然更容易。

2) 完整结构

ResNet; ResNet 完整结构

完整的网络结构如下:

  • 残差块堆叠
  • 每个残差块有两个 3 × 3 3 \times 3 3×3 卷积层
  • 周期性的使用两倍的卷积核数量,降采样通过设置步长为 2 2 2
  • 在网络开始处有 7 × 7 7 \times 7 7×7 的卷积层和最大池化层(步长 2 2 2)
  • 在网络的最后不使用全连接层 (只有一个用于1000个分类的FC)
  • 在最后一个卷积层后使用全局的平均池化
  • 总共的深度有34、50、101或152

对于ResNet-50+的网络,为提高计算效率,使用类似GoogLeNet的「瓶颈层」。

具体说,它也是通过使用 1 × 1 1 \times 1 1×1 卷积来缩减或扩张特征图维度,从而使得 3 × 3 3 \times 3 3×3 卷积的卷积核数目不受上一层输入的影响,对应的输出也不会影响到下一层,这种设计节省计算时间,且不影响最终的模型精度。

ResNet; Bottleneck 模块

3) ResNet网络训练

ResNet的实际训练的一些细节如下:

  • 每个 CONV 层后使用批量归一化
  • 权重使用 He 初始化
  • 更新方式使用 SGD + Momentum (0.9)
  • 学习率为 0.1, 验证错误率不变时除 10
  • Mini-batch size 为 256
  • 权重衰减是 1e-5
  • 未使用 dropout

实际的训练效果为可以堆叠很多的层而不使准确率下降:ImageNet上152层网络,在CIFAR上1202层网络,表现都很好。经过结构改造后,和预想中的一致,网络越深,训练准确率越高。

ResNet横扫了2015年所有的奖项,第一次超过人类的识别率。

ResNet 网络训练; ResNet 的成绩

2.几种网络的对比

ResNet; 各种网络的准确率与计算复杂度

  • 左图:通过 Top1 准确率来比较各种网络的准确性
  • 右图:是不同网络的运算复杂度,横轴为计算量,圆圈大小表示内存占用。其中 Inception-v4 是 Resnet + Inception

从图里可以看出:

  • Inception-v4 具有最高的准确率
  • VGG 内存占用最大,计算量最多
  • GoogLeNet 最高效,准确率较高,运算复杂度较小
  • AlexNet 计算量较小但内存占用较大,准确率也低
  • ResNet 准确率较高,效率取决于模型

前向传播时间和功率消耗对比如下:

ResNet; 各种网络前向传播时间和功率消耗与批量的关系

3.其他网络架构

3.1 Network in Network (NiN)

Network in Network; NiN 架构

Network In Network发表于 ICLR 2014,由新加坡国立大学(NUS)提出,也是一个经常被大家提到的经典CNN结构,它的主要特点如下:

  • 在每个卷积层内的Mlpconv层具有「Micronetwork」用于计算局部区域的更抽象的特征;
  • Micronetwork使用多层感知器(FC,即 1 × 1 1 \times 1 1×1卷积层)
  • GoogLeNet和ResNet「瓶颈」层的先驱

3.2 ResNet的改进

1) Identity Mappings in Deep Residual Networks

Identity Mappings in Deep Residual Networks; ResNet 的改进

  • ResNet创造者自己改进了残差块设计
  • 创建更直接的路径(将激活函数移动到残差的映射路径),以便在整个网络中传播信息
  • 更好的性能

2)Wide Residual Networks

Wide Residual Networks; ResNet 的改进

  • 相比「深度」,认为「残差」是核心
  • 使用更宽的残差块( F × k F \times k F×k 个滤波器代替每层中的F个滤波器)
  • 50 层 Wide ResNet 优于 152 层原始 ResNet
  • 增加宽度而不是深度更具计算效率(可并行化)

3) ResNeXt

ResNeXt; ResNet 的改进

  • ResNet 创建者对结构改造
  • 通过多个平行路径增加残差块的宽度(cardinality)
  • 与 Inception 模块相似的并行路径
  • 单个分支「变窄」

4)Deep Networks with Stochastic Depth

Deep Networks with Stochastic Depth; ResNet 的改进

  • 动机:通过缩短网络减少梯度消失和网络训练时间
  • 在每次训练过程中随机丢弃一个层子集
  • 具有自身映射功能的旁路,丢弃的层权重为1,恒等映射
  • 在测试时使用完整的深度网络

5)Network Ensembling(Fusion)

Network Ensembling (ion); ResNet 的改进

  • 多尺度集成 Inception、Inception-Resnet、Resnet、Wide Resnet模型
  • ILSVRC’16分类获胜者

6)Squeeze-and-Excitation Networks (SENet)

Squeeze-and-Excitation Networks (SENet); ResNet 的改进

Squeeze-and-Excitation Networks (SENet); ResNet 的改进

  • 添加「特征重新校准」模块,该模块学习自适应重新加权特征图
  • 全局信息(全局平均池化层)+ 2个FC层,用于确定特征图权重,即「特征重新校准」模块
  • ILSVRC’17分类获胜者(使用ResNeXt-152作为基础架构)

3.3 FractalNet

FractalNet; CNN

  • 动机:认为从浅层到深层有效地过渡最重要,残差表示不是最重要的
  • 具有浅和深路径输出的分形结构
  • 训练时随机抛弃子路径
  • 测试时使用完整网络

3.4 Densely Connected Convolutional Networks

Densely Connected Convolutional Networks; CNN

  • 密集块,其中每个层以前馈方式连接到之后的每个层
  • 减轻梯度消失、加强特征传播、鼓励特征重用

3.5 Efficient Networks —— SqueezeNet

对于SqueezeNet和其他轻量化网络感兴趣的同学也可以参考ShowMeAI的计算机视觉教程中的文章轻量化CNN架构(SqueezeNet,ShuffleNet,MobileNet等)

Efficient Networks - SqueezeNet; CNN

  • 轻量化网络
  • 1 × 1 1 \times 1 1×1 卷积核构建「挤压」层,进而组成Fire模块,由 1 × 1 1 \times 1 1×1和 3 × 3 3 \times 3 3×3卷积核组成「扩展」层
  • ImageNet 上的 AlexNet 级精度,参数减少50倍
  • 可以压缩到比 AlexNet 小510倍(0.5Mb参数)

3.6 Learn network architectures —— Meta-learning

1) Neural Architecture Search with Reinforcement Learning (NAS)

Meta-learning; Neural Architecture Search with Reinforcement Learning (NAS)

  • 一种「控制器」网络,可以学习设计良好网络架构(输出与网络设计相对应的字符串)
  • 迭代:
    • 1)从搜索空间中采样架构
    • 2)训练架构以获得相应于准确度的「奖励」R
    • 3)计算样本概率的梯度,通过R进行缩放以执行控制器参数更新,增加被采样架构良好的可能性,减少不良架构的可能性

2) Learning Transferable Architectures for Scalable Image Recognition

  • 将神经架构搜索(NAS)应用于像ImageNet这样的大型数据集非常昂贵
  • 设计可以灵活堆叠的构建块(「单元」)的搜索空间
  • NASNet:使用NAS在较小的 CIFAR-10 数据集上找到最佳的单元结构,然后将架构转移到ImageNet

4.推荐学习

可以点击 B站 查看视频的【双语字幕】版本

【字幕+资料下载】斯坦福CS231n | 面向视觉识别的卷积神经网络 (2017·全16讲)

5.要点总结

经典架构

  • AlexNet:开启CNN时代
  • VGG:减小卷积核尺寸、增加网络层数获得高准确率
  • GoogLeNet:引入 Inception module
  • ResNet:引入残差块,证明普通堆叠层数没意义,残差堆叠可以;目前应用最广泛的网络结构

其他架构

  • NiN (Network in Network) : 1 × 1 1 \times 1 1×1卷积先驱
  • Wide ResNet:加大ResNet的宽度而不是深度
  • ResNeXT:使用多个分支加宽ResNet
  • Stochastic Dept:Dropout层
  • SENet:自适应特征图重新加权
  • DenseNet:每个层连接到之后的每个层
  • FractalNet:使用分形结构,不用残差
  • SqueezeNet:压缩网络,减少参数
  • NASNet:学习网络架构

网络应用总结

  • VGG、GoogLeNet、ResNet均被广泛使用,可在模型族中获取
  • ResNet 是当前默认最佳的选择,也可考虑 SENet
  • 研究趋向于极深的网络
  • 研究重心围绕层/跳过连接的设计和改善梯度流
  • 努力研究深度、宽度与残差连接的必要性
  • 更近期的趋势是研究 meta-learning

ShowMeAI 斯坦福 CS231n 全套解读

ShowMeAI 系列教程推荐

showmeai用知识加速每一次技术成长

迁移学习篇之如何迁移经典CNN网络-附迁移学习Alexnet,VGG,Googlenet,Resnet详细代码注释和方法-pytorch 迁移学习 阅读详情

相关推荐

YOLOv8_obb的C++工程部署实战:从模型转换到实时视频推理

本文详细介绍了YOLOv8_obb模型在C++环境下的完整工程部署流程,涵盖从PyTorch模型到ONNX格式的转换、基于ONNX Runtime的C++推理引擎搭建、旋转框后处理解析,以及实时视频流处理与性能优化。文章重点解析了模型转换的关键参数、环境配置的常见问题、核心推理代码的实现,并提供了实用的避坑指南,旨在帮助开发者高效完成YOLOv8_obb的C++工程部署。

weixin_29100927的博客 47

图像分类网络-经典CNN网络简介

在CNN网络结构的演化上,出现过许多优秀的CNN网络,CNN的经典结构始于1998年的LeNet,成于2012年历史性的AlexNet,从此大盛于图像相关领域,主要包括: 发展历史:Lenet --> Alexnet --> ZFnet --> VGG --> NIN --> GoogLeNet --> ResNet --> DenseNet -->ResNeXt ---> EfficientNet LeNet,1998年 AlexNet,201.

shanzsz的博客 3338

OPNET网络仿真实验

外网

嚴 帅的博客 1万+

经典的CNN架构

在深度学习中,dropout最流行的正则化技术,它被证明非常成功,即使在顶尖水准的神经网络中也可以带来 1%到 2%的准确度提升,这可能乍听起来不是特别多,但是如果模型已经有了 95%的准确率,获得 2%的准确率提升意味着降低错误率大概 40%,即从 5%的错误率降低到 3%的错误率!1. BN 是在 batch 上,对 N、H、W 做归一化,而保留通道 C 的维度。2. LN 求均值时,相当于把每一本书的所有字加起来,再除以这本书的字符总数:C×H×W,即求整本书的“平均字”,求标准差时也是同理。

yuange1666的博客 2250

从硅到氮化镓:用Sentaurus TCAD仿真GaN HEMT功率器件,我踩过的那些坑

本文分享了使用Sentaurus TCAD仿真GaN HEMT功率器件的实战经验,详细解析了从硅基到氮化镓的技术转型中遇到的五大关键挑战:材料参数设置、极化效应建模、网格划分策略、陷阱模型校准以及仿真与实测数据匹配。通过具体案例和参数优化方法,帮助工程师避开常见陷阱,提升TCAD仿真精度与效率。

weixin_28726671的博客 379

开源收银系统_大型收银系统源码_OctShop

开源收银系统正成为大型连锁企业数字化转型的关键工具。相比传统闭源系统,开源方案具有成本低(年均降本60%+)、定制灵活(支持多业态协同)、自主可控等优势,能有效解决高并发、多门店数据同步等痛点。核心价值在于:1)分布式架构适配规模化扩张;2)模块化设计实现个性化开发;3)开放接口打通ERP/CRM等系统。典型案例显示,连锁商超通过源码二次开发实现库存实时同步,补货效率提升50%;餐饮集团统一多业态收银流程后会员复购率增长35%。选型需关注源码成熟度、技术兼容性和安全合规,建议采用"开源+服务商&q

OctShop全栈工程师 940

CNN经典架构

PyTorch实现CNN的5种经典架构,欢迎相互学习交流!

WYJ的博客 2817

Allegro PCB设计小技巧:如何用Shift键快速平移复制走线和过孔?

本文深入解析了Allegro PCB设计中利用Shift键进行平移复制的核心技巧。通过对比传统复制粘贴流程,详细演示了如何高效、精准地批量复制走线和过孔,尤其适用于创建等间距电源总线、过孔阵列等场景,能显著提升PCB设计效率与准确性。

pz89012345的博客 555

CNN经典结构(Lenet,AlexNet,VGG,GoogleNet,ResNet, Resnext, Densenet, Senet, BAM,mobilenet(1)

为了解决退化问题,提出了残差学习,如下图所示为残差块,假设本来是要学习H(x),加了一条恒等映射之后我们要学习的就是F(x) = H(x) - x,(假设)学习F(x)会比学习H(x)更容易,最极端的情况就是假设我们要学习的映射是x,那么让F(x)为0,比学习到H(x)为恒等映射要容易。减小了参数,允许增加深度;提出来 cardinality 的概念,在上图左右有相同的参数个数,其中左边是 ResNet 的一个区块,右边的 ResNeXt 中每个分支一模一样,分支的个数就是 cardinality。

2401_84976700的博客 723

一篇NS SAR ADC的学习记录

一篇NS SAR ADC的学习记录 内容包含: OverSampling Noise Shaping Dynamic Amplifier DAC with Redundancy 最近看了些有意思的SAR ADC结构,但是因为确实对模拟这个领域不太熟,导致了一系列的级联查找,最终达到了一个大概能懂的状态,为了理清思路,顺便别让看了这么些天的东西浪费了,还是计划写篇文章。 ps:由于不是一篇特别正紧的报告,参考文献就写的比较随便,且我还是个做数字的 A 13.5-ENOB, 107-μW Noise-Sha

weixin_45669724的博客 8714

1.嵌入式控制器EC学习,编译环境搭建

工欲善其事,必先利其器。 在学习EC相关知识之前,首先需要完成EC代码编译环境的搭建,需要如下内容: Keil C51(用于EC中C代码的编译器环境) EC源代码,我们使用从网上可以下载到的 ITE_V12.4_Update 版的代码为例进行学习 代码编辑器,这个可以根据自己的习惯选择,VS Code或者Source Insight等 Keil C51下载地址: http://www.downcc.com/soft/307131.html 下载完成后请进行破解 EC源代码 ...

qq_30135687的博客 3918

经典神经网络总结

1. LeNet-5 第一个CNN网络,由LeCunLeCunLeCun提出,用于手写数字识别。 1.1 网络结构 1.2 各层参数详解 0. INPUT层——输入层 输入图像统一归一化到32 * 32 1. C1层——卷积层 输入图片:32 * 32 卷积核大小:5 * 5 卷积核个数:6 输出特征图大小:28 * 28 <= = = (32 - 5) / 1 + 1 ...

weixin_42454048的博客 1195

【Cmder】--- Windows11 配置CMD神器 (超详细 持续更新中)

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。

秋知叶i 1万+

卷积神经网络入门

卷积神经网络入门学习

曲折旅程,艰难人生 670

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

著名的卷积神经网络

AlexNet网络结构 参数个数:参数主要集中在全连接层,全连接层的参数个数为6×6×256×4096+4096×4096+4096×1000=5.8622×1076\times 6 \times 256 \times 4096 + 4096 \times 4096 + 4096 \times 1000 = 5.8622 \times 10^7,卷积层的参数个数为2.33×1062.33\times

应晨露的博客 7955

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

「多图」图解10大CNN架构

大家好,我是K同学啊! 你是否一直在关注不同的卷积神经网络 (CNN)?近年来,我们见证了无数CNN的诞生。这些网络已经变得如此之深,以至于很难将整个模型可视化。我们不再跟踪它们,而是将它们视为黑盒模型。 这篇文章是 10 种常见CNN 架构的可视化。这些插图提供了整个模型的更紧凑的视图,而不必为了查看 softmax 层而向下滚动几次。除了这些图像,我还附上了一些关于它们如何随着时间“进化”的笔记——从 5 到 50 个卷积层,从普通卷积层到模块,从 2-3 个塔到 32 个塔,从 7⨉7 到 5 ⨉5—

“365天深度学习训练营”报名进行中~ 6627

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

经典卷积神经网络(CNN)图像分类算法详解

经典卷积分类网络 一点废话:CNN网络主要特点是使用卷积层,这其实是模拟了人的视觉神经,单个神经元只能对某种特定的图像特征产生响应,比如横向或者纵向的边缘,本身是非常简单的,但是这些简单的神经元构成一层,在层数足够多后,就可以获取足够丰富的特征。从机制上讲,卷积神经网络与人的视觉神经还真是像。下面进入正题。 LeNet(1998) 网络基本架构为:conv1 (6) -&amp;amp;amp;amp;amp;amp;gt; pool1 -&amp;amp;amp;amp;amp;am

dan_teng的博客 8万+

手动搭建的VGG16网络结构训练数据和使用ResNet50微调(迁移学习)训练数据对比(图像预测+前端页面显示)

文章目录1.VGG16训练结果:2.微调ResNet50之后的训练结果:3.结果分析:4.实验效果:(1)VGG16模型预测的结果:(2)在ResNet50微调之后预测的效果:5.相关代码和知识点:(1)VGG16网络结构:(2) VGG16特征提取:(3)有关微调和迁移学习:(4)代码下载:(5)文件的结构:6.训练VGG16模型和微调之后的ResNet50模型:(1)下载requirements.txt文件和创建新环境:(2)训练VGG16:(3)训练resent50模型:(4)运行Flask.py文件

Keep_Trying_Go的博客 8266

VGG、RestNet、MobileNet介绍

VGG、RestNet、MobileNet的一些基本介绍

weixin_39357271的博客 3492

五、VGG、AlexNet、ResNet网络(超详细哦)

五、VGG、AlexNet、ResNet网络(超详细哦)1、 VGG 网络1.1、 VGG网络结构1.2、理解VGG16(19)卷积网络2、AlexNet网络2.1、AlexNet网络结构2.2、理解AlexNet网络2.3、Alexnet网络中各层的作用3、ResNet网络 1、 VGG 网络 1.1、 VGG网络结构 下面是VGG网络的结构(VGG16和VGG19都在): • VGG16包含...

qq_41760767的博客 1万+

典型卷积神经网络算法(AlexNet、VGG、GoogLeNet、ResNet)

典型卷积神经网络

liuyingshudian的博客 4992

PyTorch搭建预训练AlexNet、DenseNet、ResNet、VGG实现猫狗图片分类

PyTorch搭建预训练AlexNet、DenseNet、ResNet、VGG实现猫狗图片分类

KI的博客 6164

深度学学习常用网络结构AlexNet、VGG、GoogleNet、ResNet、SENet

ResNet 网络结构

ming6383的博客 1830

经典论文阅读笔记——AlexNet、VGGNet、GoogLeNet、ResNet、DenseNet

  近期读了一些经典论文,本博客主要是基于CNN方面经典的网络做一下总结,基于自己对论文的理解和向他人博客的学习总结。 AlexNet   AlexNet是2012年由深度学习之父Hinton的学生Alex提出的,其在图像处理方面优异的表现开创了一个新时代。这篇文章个人感觉偏重于工程性应用,尽管说许多idea放在今天已经不太实用了(现在有更好的方法和模型),但是在十年前能做出这样的成果确实是难能可贵的了。   上图是AlexNet的网络结构,总共有8层,其中卷积层有5层,剩下的是3个全连接层。可以看出它的

gailj 1917

深度学习:经典网络模型lenet,alexnet,vggnet,googlenet,Resnet,densenet可解释性

在CNN网络结构的进化过程中,出现过许多优秀的CNN网络,如:LeNet,AlexNet,VGG-Net,GoogLeNet,ResNet,DesNet. 提出年份 主要方向:网络加深,增强卷积模块 1、LeNet: LeNet诞生于1998年,网络结构比较完整,包括卷积层、pooling层、全连接层。被认为是CNN的鼻祖。 输入32*32*1 卷积层3个:卷积的主要目的是...

weixin_41108334的博客 1万+

机器学习之路四:CNN综述(Lenet,AlexNet,GoogleNet,VGG,ResNet,ResNeXt,DenseNet)

CNN的发展历史 Lenet,1986年 Alexnet,2012年 GoogleNet,2014年 VGG,2014年 Deep Residual Learning,2015年 ResNeXt, 2016年 DenseNet,2017年 ImageNet历年冠军和相关CNN模型 https://www.cnblogs.com/liaohuiqiang/p/9609162....

W_H_M_2018的博客 2915
上一篇: 深度学习与计算机视觉教程(8) | 常见深度学习框架介绍(CV通关指南·完结)
下一篇: 深度学习与计算机视觉教程(10) | 轻量化CNN架构 (SqueezeNet,ShuffleNet,MobileNet等)(CV通关指南·完结)
ShowMeAI
博客等级 码龄5年 6514粉丝 672原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShowMeAI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值