计算机视觉:卷积神经网络(CNN)图像分类从像素与色彩通道基础到特征提取、池化及预测
一、卷积神经网络概述
卷积神经网络通过滤波器(或称核)从图像中提取特征,再将这些特征传入神经网络进行预测或输出。在深入探讨卷积神经网络之前,我们先详细了解图像的工作原理。
二、图像的本质
(一)像素与矩阵表示
图像由微小的像素构成,如同宇宙由原子组成。每个像素是一个包含数字的单元,类似矩阵中的单元格。本质上,图像是具有确定行数和列数的矩阵,矩阵中的每个单元(像素)的数值范围为0到255。例如,当我们看到图像尺寸为1920×1080时,意味着该图像由1920列×1080行的矩阵组成,其中每个像素的数值均在0到255之间。
图1:计算机视角下的图像矩阵示意图
(二)图像的色彩构成
屏幕上所有图像均由红、绿、蓝三种颜色混合而成,通过不同比例的组合可产生白光或图像中的各种色彩。
如前所述,图像由矩阵构成,像素(矩阵单元)的数值范围为0到255,其中0代表最低颜色强度(黑色),255代表最高颜色强度。每个彩色图像包含三个尺寸相同的矩阵,分别对应红色、绿色和蓝色通道,每个通道矩阵中单元格的数值(0-255)表示该颜色的强度。当三个矩阵中对应单元格的数值均为255时,图像呈现白色;均为0时,呈现黑色。
图2:图像通道表示示意图
这三个矩阵如同透明纸张叠加,每个像素内的“小灯泡”分别发出对应颜色的光。
按回车键或点击查看完整尺寸图像
图3:图像三颜色通道叠加示意图
通过调整矩阵中的数值可产生不同颜色:若将蓝色和绿色矩阵的所有像素值设为0,红色矩阵所有像素值设为255,图像将完全呈现红色;同理可得到纯绿色或纯蓝色图像。若在各颜色矩阵中对部分像素值进行随机调整,对应区域会呈现棕色、黄色、橙色或青色等混合色。
三、卷积神经网络的工作原理
(一)卷积的基本概念
类比破译古代卷轴或手稿时,人们会用放大镜仔细观察并记录信息,卷积神经网络的工作机制与此相似。它通过一个类似放大镜的矩阵(包含数字)在图像上逐像素滑动,将矩阵内数字与图像对应像素的数值相乘后求和,从而提取图像信息。这个小矩阵被称为滤波器或卷积核。
图4:图像矩阵与卷积核(滤波器)示意图
(二)图像预处理
在卷积过程开始前,需进行预处理操作。由于图像各颜色通道矩阵的像素值范围为0-255,该范围对机器学习模型而言过大,可能导致训练速度减慢及梯度爆炸等问题。因此,需将所有像素值缩放到0-1之间,具体方法是将每个像素值除以255,这一步骤是训练卷积神经网络的关键预处理环节。
按回车键或点击查看完整尺寸图像
图5:图像预处理步骤(像素值除以255缩放至0-1范围)
此预处理步骤需对图像的3个通道均执行。
图6:预处理后的图像通道示意图
四、基于卷积神经网络的图像分类流程
本文以数字“1”和数字“2”的黑白图像分类为例,详细说明卷积神经网络的工作步骤:
步骤总览
- 预处理:将所有像素值除以255,缩放至0-1范围。
- 卷积运算:图像与滤波器(卷积核)进行滑动卷积,逐点相乘并求和,结合偏置项得到中间结果。
- 特征图生成:各颜色通道的卷积结果相加,形成单一特征图。
- 最大池化:从特征图的特定区域提取最大值,减小特征图维度。
- 展平处理:将池化结果转换为一维数组。
- 分类预测:将一维数组传入前馈神经网络,完成最终分类。
(一)预处理阶段
首先对图像的三个通道执行预处理,将像素值除以255,使其落在0-1范围内。为简化说明,假设处理对象为黑白图像:255(白色)除以255得1,0(黑色)除以255得0。
图7:包含数字“1”的6×6像素黑白图像
(二)卷积过程
1. 特征图的生成
特征图是从预处理输入图像中提取特征形成的单一矩阵,类似信息记录簿。提取特征时,需使用随机滤波器(含随机数的小型矩阵)在输入图像上滑动卷积。每个输入通道对应独立的滤波器,计算过程为卷积核与图像重叠像素的逐点相乘。
例如,3×3卷积核在6×6图像上操作时,首先覆盖图像左上角3×3区域,逐元素相乘后累加,再与卷积核关联的偏置项(初始为随机数,用于增强模型灵活性和多样性)相加,得到该区域的输出值。
按回车键或点击查看完整尺寸图片
图8:输入图像与滤波器(卷积核)的卷积计算示意图
每个通道均重复上述流程,生成对应区域的输出值。例如,红色通道可能输出3,绿色通道输出-1,蓝色通道输出2。
按回车键或点击查看完整尺寸图片
图9:卷积核与输入图像通道的矩阵计算示意图
偏置项是可训练的参数,通过偏移激活值帮助模型更好地拟合数据。例如,红色通道卷积核的偏置项为-2,会与该通道首个输出值(2)相加。
按回车键或点击查看完整尺寸图片
下图展示三个通道对应的卷积核与偏置项:
图10:三通道对应的卷积核与偏置项
2. 卷积计算示例
以图像左上角3×3区域为例,各通道计算过程如下:
-
红色通道:
[
(0×0)+(0×1)+(0×1)+(0×0)+(0×0)+(1×1)+(0×0)+(1×1)+(0×0) = 2
]
叠加偏置项(-2)后:(2 + (-2) = 0) -
绿色通道:
[
(0×1)+(0×0)+(0×0)+(0×1)+(0×1)+(1×0)+(0×1)+(0×1)+(0×0) = 0
]
叠加偏置项(-1)后:(0 + (-1) = -1) -
蓝色通道:
[
(0×0)+(0×0)+(0×1)+(0×1)+(0×0)+(1×0)+(0×0)+(1×1)+(0×1) = 1
]
叠加偏置项(0.9)后:(1 + 0.9 = 1.9)
特征图为单一矩阵,需将各通道对应区域的输出值相加。上述三通道左上角区域的输出值之和为:(0 + (-1) + 1.9 = 0.9),该值作为特征图左上角的像素值。
特征图的尺寸由卷积核在图像上的移动次数决定。
图11:卷积核移动次数与特征图映射关系示意图
3. 卷积核的移动与特征图生成
卷积核的移动距离称为步长。步长为1时,卷积核每次向右移动1列;步长为2时,每次移动2列。当卷积核到达图像边缘后,将按步长向下移动,重复计算过程。
对于6×6图像和3×3卷积核,卷积核横向可移动4次,生成特征图的一行4个数值;纵向移动4次后,最终生成4×4的特征图。
图12:卷积核移动路径示意图
重复上述过程,直至卷积核覆盖图像所有区域,生成最终特征图:
图13:卷积后的最终特征图
4. ReLU激活函数处理
特征图生成后,需通过ReLU激活函数处理:将所有负像素值转为0,保留正像素值。为简化说明,此处将所有正像素值转换为1(注:此步骤不属于卷积过程),最终得到仅含0和1的特征图。
按回车键或点击查看全尺寸图片
图14:ReLU激活函数处理后的特征图
(三)最大池化步骤
最大池化通常紧跟卷积层,其作用是从特征图的特定区域提取最大值,生成新矩阵以减小特征图的空间维度。与卷积核类似,最大池化层按固定尺寸在特征图上滑动,但不含数值。
以2×2最大池化层为例,其初始放置于4×4特征图的左上角,提取该2×2区域的最大值。池化层通常以自身尺寸为步长移动(也可自定义步长),即每次向右移动2列,到达边缘后向下移动2行,最终生成2×2矩阵。
图15:最大池化层提取特征图区域最大值示意图
(四)展平处理
最大池化的输出为二维矩阵(如2×2),而前馈神经网络仅接受一维数组。因此,需将二维矩阵展平为一维数组。
图16:最大池化层展平为一维数组示意图
(五)前馈网络与预测
前馈神经网络包含权重和偏置。一维数组中的每个数值通过权重连接到网络层,权重与对应数值相乘后求和,叠加偏置项,再通过激活函数(如ReLU、SoftMax、Sigmoid)处理。
- Sigmoid函数将输出值映射到0-1范围,适用于二分类问题。
- SoftMax函数适用于多分类问题,可返回多个类别的概率分布。
按回车键或点击以全尺寸查看图片
图17:前馈神经网络预测示意图
输出层的两个神经元分别对应数字“1”和数字“2”两个类别,输出值为1或0,代表模型对图像类别的预测结果。
(六)模型训练要点
对含数字“2”的图像重复上述流程时,需保持权重、偏置和卷积核参数不变。训练过程中,若模型预测错误,将调整所有参数(权重、偏置、卷积核)直至预测正确,这是模型的学习过程。
五、总结
卷积神经网络的图像分类流程可概括为:
- 预处理:像素值除以255,缩放至0-1范围。
- 卷积提取特征:通过滤波器生成特征图,结合偏置项调整。
- 激活函数处理:ReLU函数将特征图负值转为0,保留正值。
- 最大池化:提取区域最大值,减小特征图维度。
- 展平:将池化结果转换为一维数组。
- 分类预测:通过前馈神经网络输出图像类别。