图像识别是计算机视觉的重要分支,旨在通过算法理解图像内容。它广泛应用于安防监控、自动驾驶、医疗影像等领域。我们在第二讲中已经提到在图像识别领域主要选用卷积神经网络模型。本节将尽量用通俗的语言把如何利用卷积神经网络识别图像的原理讲解清楚。
在第三讲中我们介绍了最简单的BP神经网络,主要用于解决中小规模数据的非线性问题,如前面介绍的只有3个输入3个输出变量的模型识别问题。从本质上讲图像是一个由像素值组成的矩阵,矩阵的元素为0-255的灰度值,对于一个1024X768像素黑白照片的输入数据采用矩阵的方式就有786,432个变量,如果是彩色照片就有红、绿、蓝三个通道,输入变量又增加为3倍,因此训练BP网络来识别图像将需要成千上万的输入神经元,除了显而易见的高计算量,还可能导致许多与神经网络中的维数灾难相关的问题,为此我们引入卷积神经网络。

BP神经网络的局限性
卷积神经网络对图像识别和人脑识别图像的方式非常相似,例如,人脑识别图像时,会先寻找图像中的局部特征,如边缘、斑点、胡须等。然后将这些局部特征组合起来,形成对整体图像的判断,即可识别出图像中的狗。卷积神经网络通过多个“特征扫描器”逐层提取图像细节。从低级特征到高级特征逐步组合,最终实现图像分类等任务,主要由卷积层、激活层、池化层和全连接层等构成。
卷积神经网络的结构
首先我们来看卷积层。
卷积的主要目的是从输入图像中提取特征。在5x5的输入图像的矩阵上,覆盖一个3x3矩阵,这个矩阵就是卷积核,也称为过滤器。对当前3x3覆盖的部分,分别与3x3矩阵按像素相乘,然后把9个值加起来得到一个整数,按这种方式,以一个像素为单位依次滑动和计算,滑动的粒度(这里是一个像素)叫做步长,最后就得到一个输出矩阵,就是特征图。显然,对于同一个图像,用的卷积核不同,得到的特征图也就不同。或者说不同的卷积核可以检测不同的特征。
卷积神经网络在训练过程中可以自行学习这些卷积核的值,但也需要在训练时指定一些参数,这些参数会对特征产生影响。深度,就是卷积核的数目,数量越多,提取的图像特征就越多,训练出来的网络在识别未见过的图像时效果就越好;步长,是指在输入矩阵上滑动卷积核的像素数,步长越大,得到的特征图越小;零值填充,有时需要在图像边界用零填充,这样就可以对输入图像的边界像素应用卷积核,会使生成的特征图稍大一些,使用了零值填充为宽卷积,没使用的为窄卷积。
卷积层
卷积神经网络中的激活层是引入非线性特征的关键组件。激活层的主要作用有三个。
第一就是引入非线性特性。卷积层本质是线性运算(矩阵乘法),激活函数通过非线性映射使网络能够学习复杂的数据模式。
第二是增强特征表达能力。激活层通过过滤低强度特征保留关键信息,提升模型对图像局部特征的敏感度。
第三是缓解梯度消失问题。合适的激活函数通过保留正梯度加速训练,避免深层网络中的梯度衰减。
激活层的选择直接影响模型性能:ReLU及其变体因高效性与稀疏性成为主流,而Sigmoid/Tanh多用于特定场景(如输出概率)。设计时需权衡梯度行为、计算复杂度与任务需求。
激活层
池化层是对提取到的特征信息进行降维,一方面使特征图变小,简化网络计算复杂度,这两个特征图就从4X4矩阵降低为2X2;另一方面进行特征压缩,提取主要特征,增加平移不变性,减少过拟合风险。
池化层设定的参数主要包括池化层的类型是最大池化还是平均池化,窗口大小以及步长等。
最大池化,采用了一个2×2的窗口,并取步长2,提取出各个窗口的最大值特征,可以更好提取图像的纹理。
平均池化,采用了一个2×2的窗口,并取步长2,提取出各个窗口的平均值特征,可以更好保留图像的背景。
池化层
全连接层中每个节点与前一层所有节点相连,形成密集的连接结构。全连接层的每个节点会与这些特征图的所有值进行加权求和,再通过激活函数输出。
全连接层参数量通常占整个网络的80%以上。例如,若前一层输出为7×7×512,连接到4096节点的全连接层需7×7×512×4096个权重参数,加上偏置项,参数量极大。
全连接层将提取的特征映射到输出类别。使用softmax函数进行多分类,输出各类别的概率。
全连接层
反向传播的目的是计算损失函数对网络中所有可训练参数(如卷积核的权重、全连接层的权重等)的梯度。
首先计算输出层的误差,通常使用损失函数来衡量预测结果与真实标签之间的差异,根据损失函数对输出层的激活值求导得到输出层的误差项。
然后将误差项反向传播到全连接层和池化层。对于全连接层,根据链式法则计算误差对权重的梯度;对于池化层,由于池化操作在前向传播时已经确定了下采样的位置,反向传播时将误差按照下采样的位置进行传递。
最后,误差传播到卷积层。卷积层的反向传播较为复杂,需要对卷积核进行转置卷积操作,计算误差对卷积核权重的梯度,从而实现对卷积核参数的更新。
卷积神经网络的训练过程与BP神经网络非常相似。
初始化参数:在训练开始前,对网络中的所有可训练参数(如卷积核权重、全连接层权重等)进行随机初始化。
迭代训练:将训练数据分批输入到网络中,进行前向传播计算预测结果,然后通过反向传播计算梯度,最后使用优化算法,根据计算得到的梯度更新网络参数,以最小化损失函数。
评估与调整:在训练过程中,定期使用验证集对模型进行评估,监控模型的性能指标(如准确率、损失值等)。如果模型出现过拟合或欠拟合现象,调整网络结构、超参数(如学习率、迭代次数等),重新进行训练,直到模型在验证集上达到较好的性能。
反向传播与训练
这样经过训练的卷积神经网络就可以对新输入图片进行识别。
卷积神经网络的典型架构主要有LeNet、AlexNet、VGGNet、GoogLeNet、ResNet等五种。
LeNet是早期的卷积神经网络,含卷积、池化与全连接层,为卷积神经网络的发展奠定基础,在手写数字识别领域成果显著。但也存在网络较浅,处理复杂图像时能力欠佳且训练成本高等问题。
AlexNet则加深了网络,引入ReLU激活函数,大幅提升训练效率,推动卷积神经网络的广泛应用。但也存在对计算资源要求高,训练时易出现过拟合。
VGGNet采用统一卷积核,通过加深网络增强特征提取能力。在图像分类任务中表现出色,能提供丰富特征表示。但也存在参数数量庞大,导致训练和推理速度较慢等问题。
GoogLeNet引入Inception模块,实现多尺度特征提取,大幅减少参数。但也存在网络结构复杂,对数据预处理和训练要求高等问题。
ResNet提出残差学习,借助跳跃连接解决深层网络训练难题,可构建超深层网络,在多视觉任务中表现优异。它推动深度学习架构革新,广泛应用于计算机视觉领域。
卷积神经网络的典型架构
卷积神经网络在图像识别中的应用主要有图像分类、目标检测、语义分割、风格迁移等。
卷积神经网络在图像识别中的应用
图像分类是将图像分配到预定义的类别中。面临类别不平衡、图像多样性等问题。自动提取特征,无需人工设计。深层网络能够学习到更抽象的特征。如在医疗影像诊断中识别疾病,在安防监控中识别人员和车辆等。
目标检测是在图像中定位并识别特定目标。卷积神经网络提取目标的特征,用于分类和定位。多层卷积能够捕捉目标的多尺度特征。如自动驾驶中的行人和车辆检测,工业检测中的缺陷识别等。
语义分割是对图像中的每个像素进行分类,任务包括场景解析、医学影像分割等。卷积神经网络使用全卷积网络实现像素级分类。结合跳跃连接和上采样,恢复图像细节。如在遥感图像中识别地物,在医学影像中分割器官和病变等。
风格迁移是将一种图像的风格应用到另一种图像上。卷积神经网络使用预训练的模型提取内容和风格特征。通过优化算法生成风格迁移后的图像。如在艺术创作中生成新颖的作品,在图像编辑中实现快速风格转换等。