卷积神经网络通过让机器在图像分类、目标检测和分割等任务中实现前所未有的精度,彻底改变了计算机视觉领域。CNN起源于Yann LeCun在20世纪80年代末的研究工作,其设计灵感来源于人类视觉系统,并利用分层结构来处理视觉数据。在这篇文章中,我们将深入探讨CNN的内部原理,特别是它的各个层级和卷积运算。
CNN 概述
卷积神经网络 (CNNs) 是专为处理网格状数据(例如图像)而设计的深度神经网络。与传统神经网络不同,CNN利用卷积层来自动学习空间特征层级。它们由多个层组成,每一层在处理和转换输入数据以提取有意义的模式方面都发挥着特定的功能。
CNN 的关键特征
- 局部感受野:CNN使用微小的machine-learning滤波器,这些滤波器在输入图像上移动,专注于特定区域以检测边缘、纹理和图案等局部特征。
- 权值共享:同一个滤波器被应用于输入图像的各个区域,这减少了参数数量和计算复杂度,同时使网络能够识别任意位置的物体。
- 池化:池化层用于减小特征图的空间维度,使网络更高效并更能适应变化。例如,最大池化从每个补丁中提取最大值,在减少参数的同时聚合特征的存在感。
CNN的结构结合了局部感受野、权值共享和池化,使其在图像处理任务中极其高效和可靠。这使得CNN能够执行图像分类、目标检测和分割等任务,成为计算机视觉不可或缺的工具。
CNN 中的层
卷积层是CNN的核心组件。它的功能类似于卷积运算,通过在输入图像上滑动一个滤波器(也称为核)并计算滤波器与输入感受野的点积来工作。这个操作有助于检测边缘、纹理和趋势等局部特征。CNN包含以下层:
- 卷积层:对输入图像应用滤波器以提取边缘和纹理等局部特征。
- 池化层:减小特征图的空间维度,降低计算负担并增强特征的鲁棒性。
- 全连接层:将一层中的每个神经元连接到下一层的每个神经元,整合提取的特征以进行最终预测。
- Dropout:在训练期间随机将一部分神经元设置为零,以防止过拟合并提高模型的泛化能力。
- 激活函数:向网络引入非线性,使学习复杂模式成为可能;常见的例子包括ReLU和Sigmoid。
卷积运算及其工作原理
卷积运算涉及将滤波器在输入图像上滑动,并计算滤波器与感兴趣局部区域之间的点积。该操作生成一个特征图,突出显示检测到的特征。
(I * K)(i,j) = \Sigma{m} \Sigma{n} I(i+m,j+n) . K(m,n)
其中I是输入图像,K是核,(I,j)是输出特征图的坐标。
卷积运算示例
让我们考虑一个在5×5输入图像上使用的3×3滤波器。滤波器在图像上移动,在每个位置计算点积,从而生成一个较小的特征图。
#### 池化运算
池化通过聚合特征图中不同补丁的特征存在来减小其空间维度。
CNN 的工作流程
卷积神经网络(CNN)旨在通过自动且自适应地学习空间特征层级来处理和分析视觉数据。以下是CNN运作方式的详细解释:
!CNN架构CNN Architecture
1. 输入层
CNN的输入层接收图像的原始像素值。彩色图像通常有三个通道(RGB),而灰度图像只有一个。例如,一张32×32像素的彩色图像的输入维度将是32x32x3。
2. 卷积层
卷积层中的主要运算是卷积,这涉及应用滤波器(核[kernels](https://www.geeks