date
Aug 1, 2025
slug
2025-08-01-the-basic-summary-of-CNN-network-structure
status
Published
tags
CNN
summary
本文基于对网络资料的学习,对一个简单的卷积神经网络CNN的架构、数据计算和传递流程进行详细的解析和总结,作为理解卷积神经网络架构的基础。
type
Post
category
AI
AI summary
本文基于对网络资料的学习,对一个简单的卷积神经网络CNN的架构、数据计算和传递流程进行详细的解析和总结,作为理解卷积神经网络架构的基础。
卷积神经网络CNN架构各个网络层的设计中,最典型的特征就是在经典的神经网络结构中增加了卷积层和池化层。关于CNN的卷积和池化层的运算逻辑与流程,在详细解释卷积神经网络中的卷积与池化计算一文中有详细总结。
卷积神经网络CNN的整体架构设计
对于计算机视觉、图像识别、图像目标检测等领域的人工智能开发而言,卷积神经网络CNN几乎是一个绕不开的话题。因此,要了解这些领域的AI模型算法及参数训练,首先需要对卷积神经网络的整体架构设计、各个层次的作用以及数据计算与传递的流程有清楚的理解。
下图是一个典型的基于卷积神经网络的图像识别模型:图像从左侧的输入层输入,通过一系列处理以后,在输出层以识别概率的方式输出结果。

从整体的网络结构上可以看到,以上的整个网络可以分为两个部分:特征提取部分和图像分类部分。
特征提取部分的结构非常有规律,二维图像从输入层输入以后,进行卷积计算(Convolution),然后把卷积计算的结构再用激活函数ReLU进行处理,然后进行池化操作(Pooling);池化后反复进行多次卷积-ReLU激活-池化...直到最后通过Flatten操作把多维向量转换为一维向量进行后续的分类操作。
图像分类部分基于特征提取部分提取并经过Flatten操作转换后的一维特征向量,以多个全连接层的方式实现图像分类任务,最终以Softmax作为最后输出层的激活函数,输出图像分类的概率识别结果。
相比于普通的全连接层的神经网络结构而言,对图像数据使用卷积神经网络具有先天性的优势。因为全连接神经网络对于数据的输入和处理均不会考虑图像数据的空间结构,例如它同等对待相距很远和彼此接近的相邻像素,这样就只能从后续的训练数据中来推理和学习像素本身应该具有的空间结构。而卷积神经网络直接以二维图像的方式对数据输入和处理,天然考虑了不同像素位置之间的空间结构,因此非常适合用于图像这类二维数据结构,能够更快的进行训练和推理。
以下按照完整网络结构执行的先后顺序对各个层次的处理流程进行详细总结。
卷积层
卷积层的作用主要是用于提取图像中的特征数据,后续的分类层就依据卷积层所提取出来的特征数据对不同的图像进行区分并分类。
卷积层的运算如以下动图所示。以卷积核为单位对原始图像或者上一级的特征图进行扫描,根据进行卷积计算的输入是单通道图像数据还是多通道图像/特征图,分别采用平面卷积核和立体卷积核对多维数据进行卷积计算。在详细解释卷积神经网络中的卷积与池化计算一文中对如何进行平面和立体卷积计算做了非常详细的总结,可进一步参考。

通过一个卷积核对输入图像/特征图进行一次完整的扫描(卷积计算),就可以得到一张新的特征图。有多少个卷积核就执行多少次扫描,并输出多少张新的特征图,用于后续的池化运算。例如下图使用16个独立的卷积核对输入的图像数据执行卷积运算,产生16张特征图:

如上所述,执行卷积计算的结果还需要使用ReLU激活函数处理后,才会传递给下一步进行池化操作。对卷积计算结果的每个像素通过使用ReLE激活函数过滤掉负值,保留图像中物体的形状。

池化层
卷积神经网络的池化操作用于对卷积层提取的特征图数据进行降维,目的是保留显著特征的情况下降低数据量,因此就可以降低卷积神经网络的参数数据量和训练以及推理的计算量。
池化所进行的计算非常简单,只需要以 n*n 为单位对前一级卷积层所输出的特征图进行最大化(Max Pooling,选择最大值输出)以及平均化(Average Pooling,对所有值求平均)扫描,每次扫描后步进为 n ,不会与上次扫描相重叠(这一点与卷积操作明显不同),因此最终扫描的结果就是一个在水平和垂直方向上均缩小 n 倍的缩版特征图。
以下图为例,上级卷积层输出的特征图为4x4分辨率,池化操作以2x2对特征图进行扫描,最终池化操作的结果就是一个2x2的缩版特征图。

池化操作以单张特征图为单位进行以上的池化计算,所以前一级卷积层输出多少张特征图,池化层就会输出多少张缩版特征图。
详细的池化操作可参考详细解释卷积神经网络中的卷积与池化计算一文。
Flatten
如上所述,无论是卷积层还是池化层,其输出都可以认为是多张二维特征图。经过卷积和池化处理以后,CNN接下来就要把前一阶段经过卷积和池化提取出来的特征图转换为一维数据,方便在后续的环节中进行处理,这个特征图转换为一维数据的动作就是Flatten。
Flatten环节的处理非常简单,就是把二维的特征图从上到下,从左到右展开即可:

当然,一般而言,最后一个池化层的输出一般会包含多张特征图,那么针对这种多张特征图的Flatten操作,就是先对第一张特征图进行一维转换,然后把后续的特征图按照相同的方式继续展开到这个一维数据后面。无论如何,多张特征图通过Flatten操作最终转换为一个一维的数据序列进行后续的分类操作。

识别层
如上所述,经过以上的Flatten操作以后,在卷积层和池化层中所检测出来的多维特征向量就会转换为一维向量进行图像分类任务的处理。
与普通的人工神经网络结构相比,这个识别层的网络没有什么特殊之处,就是通过多个全连接层最后再叠加一个Softmax的输出层:

卷积神经网络架构中的全连接层网络部分以前一阶段的卷积和池化所提取出来的特征向量作为输入,利用多个全连接层所构成的网络来实现图像分类的功能,在全连接层的最后一层使用Softmax激活函数以概率的形式输出图像对于各个不同类别的识别结果。
从以上CNN网络的整体架构来看,整个网络中所包含的主要训练参数就是特征提取部分各个卷积层的卷积核权重参数以及图像分类部分全连接层各层之间的权重和偏置参数。那么在使用CNN网络结构对图像识别功能进行训练的过程中,基于网络最后的Softmax激活函数的输出,与训练样本标签之间,使用交叉熵函数作为损失函数,对卷积核权重参数以及全连接层权重和偏置参数进行训练,直到网络能够针对输入图像输出稳定、正确的识别判断结果。
- 有关深度学习激活函数和损失函数部分的内容,可参考盘点深度学习神经网络架构中的常用激活函数和盘点深度学习神经网络架构中的常用损失函数。