目录

1. 主流基础网络(Backbone)

2.网络架构

2.1 LeNet-5

2.2 AlexNet

2.3 VGG

2.4 GoogLeNet/Inception

2.5.ResNet

2.6.DenseNet


学习记录一下CNN的基础网络架构,有时间可以回来看看。

1. 主流基础网络(Backbone)

网络名发布年份特点关键词是否常用于目标检测是否适合轻量设备
LeNet-51998最早卷积网络❌✅
AlexNet2012深度CNN启蒙❌(已淘汰)❌
VGG-16/VGG-192014结构简单,参数多✅(SSD用)❌
GoogLeNet/Inception2014多分支结构,计算高效✅✅
ResNet(18/34/50/101/152)2015残差结构、极深✅(Faster R-CNN 等)⚠️视版本而定
DenseNet2016层间全连接、参数高效✅⚠️中等

1.1 基础卷积网络(CNN 系列)

网络论文标题链接
LeNet-5Gradient-Based Learning Applied to Document Recognitionhttp://vision.stanford.edu/cs598_spring07/papers/Lecun98.pdf
AlexNetImageNet Classification with Deep Convolutional Neural Networkshttps://proceedings.neurips.cc/paper_files/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf
VGGVery Deep Convolutional Networks for Large-Scale Image RecognitionarXiv:1409.1556
GoogLeNet (Inception v1)Going Deeper with ConvolutionsarXiv:1409.4842
ResNetDeep Residual Learning for Image RecognitionarXiv:1512.03385
DenseNetDensely Connected Convolutional NetworksarXiv:1608.06993


2.网络架构

2.1 LeNet-5

LeNet-5 是深度学习历史上非常重要的一张“开山鼻祖级”网络结构,它由 Yann LeCun 教授等人在 1998 年提出,用于手写数字识别任务(MNIST),也是**卷积神经网络(CNN)**的鼻祖之一。

网络结构图:

层名类型输出尺寸描述
C1卷积层28×28×66 个 5×5 卷积核
S2池化层14×14×62×2 平均池化
C3卷积层10×10×165x5  s=1 p=0
S4池化层5×5×162×2 平均池化
C5卷积层1×1×1205×5 卷积
F6全连接层84
Output全连接层10对应分类(如数字 0~9)

网络结构特点:

✅ 开创性使用了:

  • 卷积层 + 子采样(池化)

  • Sigmoid 或 tanh 激活(ReLU 当时未提出)

  • 权值共享,减少参数

  • 层间局部连接(非全连接)

❌ 局限性:

  • 网络浅,泛化能力有限

  • 没有使用 batch normalization、ReLU 等现代技术

  • 仅适用于简单任务(如 MNIST)

2.2 AlexNet

下图是在2个GPU上运行示意图

层名类型参数说明输出尺寸(示意)
Input图像输入224×224×3224×224×3
Conv1卷积层96 filters, 11×11, stride=455×55×96
MaxPool1最大池化3×3, stride=227×27×96
Conv2卷积层256 filters, 5×527×27×256
MaxPool2最大池化3×313×13×256
Conv3卷积层384 filters, 3×313×13×384
Conv4卷积层384 filters, 3×313×13×384
Conv5卷积层256 filters, 3×313×13×256
MaxPool3最大池化3×36×6×256
FC6全连接4096 神经元4096
FC7全连接4096 神经元4096
FC8全连接1000 类(Softmax)1000

网络结构特点:

技术说明
✅ ReLU 激活函数第一个广泛使用 ReLU 替代 Sigmoid/Tanh,提高收敛速度
✅ Dropout 正则化用于减少过拟合(特别是在 FC 层)
✅ 数据增强随机裁剪、镜像、颜色扰动等
✅ GPU 并行训练当时使用了两个 GPU 训练,网络被人为拆成两部分

2.3 VGG

VGG网络的结构一致,从头到尾全部使用的是3x3的卷积和2x2的max pooling。

VGG16包含了16个隐藏层(13个卷积层和3个全连接层)

VGG19包含了19个隐藏层(16个卷积层和3个全连接层)

下图以VGG16为例的网络架构(主要由卷积层 + 池化层 + 全连接层组成)

| Layer Name | Layer Type               | Output Size     | Filter Size / Stride / Padding |
| ---------- | ------------------------ | --------------- | ------------------------------ |
| Input      | 图像输入                     | 224 × 224 × 3   | -                              |
| Conv1\_1   | Convolution (3x3)        | 224 × 224 × 64  | 3×3 / 1 / 1                    |
| Conv1\_2   | Convolution (3x3)        | 224 × 224 × 64  | 3×3 / 1 / 1                    |
| MaxPool1   | MaxPooling (2x2)         | 112 × 112 × 64  | 2×2 / 2 / 0                    |
| Conv2\_1   | Convolution (3x3)        | 112 × 112 × 128 | 3×3 / 1 / 1                    |
| Conv2\_2   | Convolution (3x3)        | 112 × 112 × 128 | 3×3 / 1 / 1                    |
| MaxPool2   | MaxPooling (2x2)         | 56 × 56 × 128   | 2×2 / 2 / 0                    |
| Conv3\_1   | Convolution (3x3)        | 56 × 56 × 256   | 3×3 / 1 / 1                    |
| Conv3\_2   | Convolution (3x3)        | 56 × 56 × 256   | 3×3 / 1 / 1                    |
| Conv3\_3   | Convolution (3x3)        | 56 × 56 × 256   | 3×3 / 1 / 1                    |
| MaxPool3   | MaxPooling (2x2)         | 28 × 28 × 256   | 2×2 / 2 / 0                    |
| Conv4\_1   | Convolution (3x3)        | 28 × 28 × 512   | 3×3 / 1 / 1                    |
| Conv4\_2   | Convolution (3x3)        | 28 × 28 × 512   | 3×3 / 1 / 1                    |
| Conv4\_3   | Convolution (3x3)        | 28 × 28 × 512   | 3×3 / 1 / 1                    |
| MaxPool4   | MaxPooling (2x2)         | 14 × 14 × 512   | 2×2 / 2 / 0                    |
| Conv5\_1   | Convolution (3x3)        | 14 × 14 × 512   | 3×3 / 1 / 1                    |
| Conv5\_2   | Convolution (3x3)        | 14 × 14 × 512   | 3×3 / 1 / 1                    |
| Conv5\_3   | Convolution (3x3)        | 14 × 14 × 512   | 3×3 / 1 / 1                    |
| MaxPool5   | MaxPooling (2x2)         | 7 × 7 × 512     | 2×2 / 2 / 0                    |
| FC1        | Fully Connected          | 4096            | -                              |
| FC2        | Fully Connected          | 4096            | -                              |
| FC3        | Fully Connected (Output) | 1000 (classes)  | -                              |
| Softmax    | 分类概率输出                   | 1000            | -                              |

网络结构特点:

  • 全部使用 3x3 的小卷积核(stride=1,padding=1),保证尺寸不变。

  • 每个 block 后面有一个 2x2 的最大池化(stride=2)用于降维。

  • VGG16 有 13 个卷积层 + 3 个全连接层,总共 16 层可训练层(VGG19 有 19 层)。

  • 所有激活函数使用 ReLU。

2.4 GoogLeNet/Inception

GoogLeNet 是 Google 在 2014 年提出的一种高效且深度较大的卷积神经网络架构。它的核心是 Inception 模块,通过在同一层同时使用不同尺寸的卷积核,实现了更高效的特征提取和计算性能。

Inception 模块结构(核心)

每个 Inception 模块包括以下并行路径,然后将输出在 通道维度 concat:

Path操作
11×1 卷积
21×1 卷积 → 3×3 卷积
31×1 卷积 → 5×5 卷积
43×3 最大池化 → 1×1 卷积

这样做的好处是:同时提取不同尺度的特征,同时使用 1x1 卷积进行降维,减少参数量和计算量。

网络结构特点:

特点说明
Inception 模块多尺度卷积结构提高了表达力
全局平均池化(Global Avg Pool)替代全连接层,减少参数,避免过拟合
参数量少比 AlexNet 和 VGG 少很多参数(GoogLeNet 约 500 万,VGG16 超过 1 亿)
辅助分类器(Auxiliary Classifiers)在中间层加两个小的 softmax 头,辅助训练防止梯度消失
深度较大22 层(不含辅助分类器)

2.5.ResNet

ResNet(残差网络)是深度学习中具有里程碑意义的网络结构,由微软研究院的何恺明等人在 2015 年提出,并在 ILSVRC 2015 中取得冠军。它通过引入 残差连接(skip connection),成功训练了 非常深的神经网络(如 ResNet-50、ResNet-101、ResNet-152),大幅提升了模型性能。

残差结构:

这个设计解决了深层网络 梯度消失/退化问题,使得网络可以堆叠到 几十甚至上百层。

网络结构:

网络结构特点:

优点说明
解决深层网络退化问题网络更深时不会出现准确率下降
可训练非常深的网络如 ResNet-152 等
参数利用更有效更少的参数训练更深的网络
迁移性好适用于分类、检测、分割等多任务
是众多后续模型的基础如:ResNeXt、DenseNet、HRNet、Swin 等

2.6.DenseNet

DenseNet(全称:Densely Connected Convolutional Networks)是 2017 年由黄高等人提出的一种改进型卷积神经网络结构,它通过**每一层与前面所有层相连接(dense connection)**的方式,进一步提高了特征复用率、梯度流通性,并有效减少了参数数量。

核心思想:

每一层的输入不是来自上一层,而是来自前面所有层的输出的连接,即:

其中 表示所有先前层特征图的连接(concatenation),是当前层的非线性变换(通常是 BN → ReLU → Conv)。

这种连接方式形成了“密集连接”,所以叫 DenseNet。

DenseNet 变种与参数量对比

网络名称Dense Block 层数参数量约(M)
DenseNet-1216-12-24-16~8M
DenseNet-1696-12-32-32~14M
DenseNet-2016-12-48-32~20M
DenseNet-2646-12-64-48~33M

网络局限性:

虽然 DenseNet 在性能、特征复用和训练效率上有诸多优点,但它也存在一些 明显的局限性和问题,尤其在实际工程应用中。

1. 特征图通道数增长过快(内存开销大)

  • 由于每一层都拼接之前所有层的输出,导致特征图通道数随深度线性增长。

  • 特征图越往后越“宽”,对 GPU 显存要求较高,限制了 DenseNet 的深度和实际应用。

例如:DenseNet-121 后期的层会有数百个通道拼接输入,这会显著增加内存占用。


2. 推理速度慢(尤其在嵌入式环境)

  • 每一层都需要访问前面所有层的输出 → 内存访问频繁 → 推理效率低。

  • 特征图拼接操作在硬件中不容易并行,影响部署性能。


3. 结构复杂,不易定制化扩展

  • 网络之间层层依赖,无法简单地剪枝或修改 block 数量。

  • 更改结构(如替换某一层)时需要格外小心,容易破坏拼接顺序。


4. 实际部署困难

  • 对内存布局、缓存命中率不友好,不适合直接部署在移动设备或低功耗环境。

  • 一些框架(如 TensorRT)在早期版本中对 DenseNet 支持不佳。


5. 过多特征拼接可能引入冗余

  • 虽然特征复用是优点,但长期拼接会带来冗余特征,信息密度下降。

  • 后期层面临“信号过载”,也有可能影响最终性能。


6. 不适合极大尺寸图像或高分辨率任务

  • 特征图太多导致内存暴涨,特别是在高分辨率输入时(如医学图像、遥感图像),不如一些轻量网络实用。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐