卷积神经网络是由 Yann LeCun 等人在论文 Gradiennt-Based Learning Applied to Document Recognition 中提出,用于手写数字识别的一种神经网络模型。
在该论文中,作者将基于卷积神经网络的模型称为 LeNet-5。LeNet-5 网络模型是第一个成功应用于手写数字识别的项目,被认为是卷积神经网络领域的开创性工作之一。该网络也是第一个被广泛应用 于计算机视觉领域的神经网络之一,许多基于卷积神经网络的模型也相继被推出。
学习计算机视觉模型,首要的任务就是要学懂 CNN 卷积神经网络模型,因为很多计算机视觉模型都是基于 CNN 卷积神经网络模型进行优化升级设计的。而 CNN 卷积神经网络模型也是最基础的视觉模型,其中设计到的参数,定义,数据流向等如何操作,特别是 CNN 卷积的操作如何进行,本期介绍的这个工具,可以可视化 CNN 卷积的过程,以及整个 CNN 卷积神经网络模型的搭建。
卷积神经网络的搭建包括主要几个组件:输入层、卷积层、激活函数、池化层、全连接 层、输出层。
(1)输入层:由于输入卷积神经网络模型的图片数据不可能都是大小一样的尺寸,为了计算的方便性。输入图片数据都会在输入层进行裁剪或者填充操作,方便后续的卷积操作。输入层表示输入到 CNN 卷积神经网络的图像。由于我们使用的是 RGB 图像作为输入,因此输入层有三个通道,分别对应于红色、绿色和蓝色通道,当然灰色或者说黑白图片只有一个通道,因此输入层只有一个。
(2)卷积层:卷积层便会根据选择的卷积核以及步长从输入数据的左上方一直到右下方进行卷积运算。卷积层是 CNN 的基础,因为它包含学习到的内核(权重),这些内核可以提取区分不同图像的特征。卷积神经元使用卷积核和前一层相应神经元的输出进行元素点积运算。这将产生与卷积核数量一样多的中间结果。
当卷积核超出输入图时,通常需要填充。填充可保留输入图边界的数据,从而提高性能,并且有助于保留输入的空间大小,从而使网络架构能够更深、性能更高。在卷积神经网络中,有许多方式进行填充,但最常用的方法是零填充,因为它具有性能、简单性和计算效率等优点。
内核大小,通常也称为过滤器大小,指的是输入图片上滑动窗口的尺寸。选择这个超参数对图像分类任务有很大的影响。例如,小的内核大小能够从输入中提取包含高度局部特征的大量信息。较小的内核大小会导致层尺寸的减少较少,从而允许更深的架构。相反,较大的内核大小提取的信息较少,这会导致层尺寸减少更快,通常会导致性能下降。大内核更适合提取更大的特征。归根结底,选择合适的内核大小将取决于任务和数据集,但通常,较小的内核大小可以为图像分类任务带来更好的性能。
步长表示内核每次应移动多少个像素。步幅对 CNN 的影响类似于内核大小。随着步幅的减小,由于提取了更多数据,因此可以学习更多特征,这也会导致输出层更大。相反,随着步幅的增加,这会导致特征提取更加有限,输出层尺寸更小。通过在线可视化,可以选择合适的输入矩阵以及 padding,内核以及步长等参数,进行可视化卷积操作。
(3)通过卷积操作得到的特征图数据一般都会经过一次激活函数的操作,激活函数用来获取输入特征的非线性信息。而卷积神经网络模型最常见的激活函数为 ReLU。
(4)经过激活函数后的特征图会添加一层池化层以便进行下采样操作,一般选择 max pooling。
(5)得到最终的输出特征图后,会经过一层全连接层,把所有特征图进行连接,确保每个神经元都可以参与运算。此层将网络中的三维层转换为一维向量,以适应全连接层的输入以进行分类。例如,5x5x2 张量将转换为大小为 50 的向量。
(6)经过全连接层的输出特征图维度会输出对应的分类维度,以便进行图片的识别或分类操作。输出层一般会使用 Softmax 操作,输出分类任务的概率分布。softmax 操作有一个关键目的:确保 CNN 输出总和为 1。因此,softmax 操作可用于将模型输出缩放为概率。
https://github.com/poloclub/cnn-explainer
https://poloclub.github.io/cnn-explainer/更多transformer,VIT,swin tranformer
参考头条号:人工智能研究所
v号:启示AI科技
动画详解transformer 在线教程