一、图像原理

计算机中的图像本质上是由一系列有序排列的数字组成的,这些数字的取值范围在0到255之间。其中0代表最暗,255代表最亮。
上述描述适用于黑白灰度图像。在实际应用中,更常见的图像表示方式是采用RGB色彩模型。该模型通过混合红、绿、蓝三种基本色光的不同比例来呈现丰富的色彩效果。
在RGB模型中,原本单一的数值矩阵扩展为三个有序排列的矩阵,也可以理解为三维张量。每个独立的矩阵被称为图像的一个通道(channel),通常用宽度、高度和深度这三个维度来描述。

二、图像识别

物体无论出现在画面左侧还是右侧,都应该被识别为同一物体,这种特性称为不变性。
我们希望构建的网络能够尽可能满足这些不变性特征。
此前学习的各类算法模型尚无法准确识别位于不规则位置的同类图形。

传统神经网络
解决办法是:用大量物体位于不同位置的数据训练,同时增加网络的隐藏层个数从而扩大网络学习这些变体的能力
三、卷积神经网络的组成
卷积层
1、什么是卷积
对图像(不同的窗口数据)和卷积核(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源。

原理:

a、步长stride:每次滑动的位置步长。
b. 卷积核的个数:决定输出的depth厚度。同时代表卷积核的个数。
c. 填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置,通俗地讲就是为了总长能被步长整除。
a. 数据窗口每次移动两个步长取3*3的局部数据,即stride=2。
b. 两组神经元(卷积核),即depth=2,意味着有两个滤波器。
c. zero-padding=1。
图片精通卷积核处理后的样子


给定一个32×32×3的输入图像,使用10个5×5×3的卷积核进行卷积操作,设置步长为1,边界填充为2。根据卷积运算公式:
(32-5+2×2)/1 +1 =32
最终输出结果为32×32×10的特征图。
特殊情况说明:当输入尺寸(512)、卷积核宽度(5)、步长(1)和边界填充(2)满足5:1:2的比例关系时,输出特征图尺寸和原输入图尺寸保持不变。
池化层(Pooling Layer)
池化层的作用
一种降采样,减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。

常见的池化层:
最大池化、平均池化、全局平均池化、全局最大池化。
平均池化(average pooling):计算图像区域的平均值作为该区域池化后的值。
最大池化(max pooling):选图像区域的最大值作为该区域池化后的值。是最为常见的。 通常来说,CNN的卷积层之间都会周期性地插入池化层。
池化层操作方法:
与卷积层类似,池化层运算符由一个固定形状的窗口组成,该窗口根据其步幅大小在输入的所有区域上滑动,为固定形状窗口(有时称为 池化窗口)遍历的每个位置计算一个输出。 然而,不同于卷积层中的输入与卷积核之间的互相关计算,池化层不包含参数。
最大池化的原理分析
Max pooling的主要功能是压缩,却不会损坏识别结果。 这意味着卷积后的Feature Map中有对于识别物体不必要的冗余信息。 那么我们就反过来思考,这些"冗余"信息是如何产生的。
全连接层(Fully Connected Layer)
当抓取到足以用来识别图片的特征后,接下来的就是如何进行分类。 全连接层(也叫前馈层)就可以用来将最后的输出映射到线性可分的空间。 通常卷积网络的最后会将末端得到的长方体平摊(flatten)成一个长长的向量,并送入全连接层配合输出层进行分类。
感受野是指在卷积神经网络中某个特征点所对应的原始输入图像的区域大小。它代表了该特征点能"看到"的输入图像的范围。

1.参数量减少,降低了模型复杂度和过拟合风险。
例如图片是3通道:
卷积核为7*7的,则卷积核所需要的参数个数为:7*7=49个
卷积核为3个3*3的,则卷积核所需要的参数个数为:(3*3*3) =27
2.每层卷积后通常包含ReLU等激活函数,堆叠三层引入三次非线性变换,比单层7x7(仅一次非线性)能学习更复杂的特征。
一张250*250的图片和一张500*500的图片,卷积层的权重参数数谁多?
答案:同样的卷积核下,一样多:
- 卷积层的权重参数(如卷积核大小、通道数)仅与卷积核的尺寸和通道设置有关,而与输入图片的尺寸无关。因此,无论输入图片是250x250还是500x500,同一卷积层的参数量是固定的。
三个层次示意图

四、常见的卷积神经网络结构
ResNet(残差网络)(最常用)
简介:由何恺明等人在 2015 年提出,在当年的 ILSVRC 竞赛中取得了图像分类、目标检测等多个任务的冠军,解决了深度神经网络中梯度消失和梯度爆炸,以及网络退化等问题,使得训练超深的神经网络成为可能。
结构特点:
残差块:引入了跨层连接(skip connection),也叫 shortcut connection。假设我们希望拟合的目标函数是 H (x),传统网络直接学习这个函数,而 ResNet 将目标函数转化为 F (x) = H (x) - x ,然后学习残差函数 F (x)。这样做的好处是,当网络层数增加导致性能退化时,网络可以直接学习恒等映射(即 F (x)=0,H (x)=x),避免了因网络过深而导致的性能下降。
批量归一化(Batch Normalization,BN):在网络中使用了 BN 层,对每个 mini-batch 的数据进行归一化处理,使得数据分布更加稳定,加快了网络的收敛速度,并且一定程度上缓解了梯度消失问题。
LeNet
简介:LeNet 是第一个成功的卷积神经网络应用,由 Yann LeCun 等人在 1998 年提出,主要用于手写数字识别。它开创了 CNN 的基本架构,为后续的深度学习发展奠定了基础。
结构特点:使用了多层的卷积层来抓取特征,通常是一个卷积层马上跟一个 max pooling(最大池化)层。通过卷积操作提取图像的局部特征,池化操作则用于降低数据维度、减少计算量并防止过拟合。
AlexNet
简介:在 2012 年由 Alex Krizhevsky 等人提出,在 ImageNet 大规模视觉识别挑战赛(ILSVRC)中取得了突破性的成绩,重新引起了人们对深度学习的关注。
结构特点:类似于 LeNet,但更深,网络层数增加使得它能够学习到更复杂的图像特征。同时使用了一些新的技术,如 ReLU 激活函数来缓解梯度消失问题,以及 Dropout 技术来防止过拟合。
ZF Net
简介:2013 年的 ILSVRC 竞赛冠军,是对 AlexNet 的改进。
结构特点:调整了 AlexNet 中第一层的 stride(步长)和 filter size(滤波器大小),让网络可以更好地提取图像特征,在目标分类和定位等任务上取得了不错的效果。
GoogleNet(Inception Net)
简介:由谷歌团队提出,在 2014 年 ILSVRC 竞赛中夺冠。其最大的特点是采用了 Inception 模块,大大减少了模型的参数数量。
结构特点:减少 parameters 数量,最后一层用 max pooling 层代替了全连接层,以降低计算量。Inception-v4 模块的使用,通过并行的不同尺度的卷积核和池化操作,能够在不同尺度上捕捉图像特征,提高了网络的表达能力。
VGGNet
简介:由牛津大学 VGG 组在 2014 年提出,结构简洁且具有很好的扩展性,在图像分类、目标检测等任务上表现出色。
结构特点:只使用 3x3 卷积层和 2x2 pooling 层从头到尾堆叠。通过不断堆叠小尺寸的卷积核(3x3)来加深网络深度,在保持感受野大小的同时,减少参数数量,并且增加了网络的非线性表达能力。
应用领域:
图像分类:是图像分类任务中的经典模型,在各种图像分类数据集上都取得了优异的成绩。
目标检测:很多目标检测算法(如 Faster R-CNN、Mask R-CNN 等)会使用 ResNet 作为骨干网络,提取图像的特征用于目标检测和分割。
语义分割:在语义分割任务中,ResNet 也常被用作特征提取网络,结合后续的上采样和分割模块,实现对图像中不同语义区域的分割。