面向初学者的人工智能学习笔记-计算机视觉-卷积神经网络发表时间:2024-04-18 13:43 神经网络非常擅长处理图像,甚至一层感知器也能够以合理的精度识别 MNIST 数据集中的手写数字。然而,MNIST 数据集非常特殊,所有数字都在图像内部居中,这使得任务更简单。 课前测验 问:要从图像中提取模式,我们使用____ A. 卷积滤波器 B. 提取器 C. 过滤器 答: A 问:下面哪个不是 CNN 架构? A. ResNet B. MobileNet C. TensorFlow 答: C 问:CNN 主要用于计算机视觉任务。 A. 正确 B. 错误 答: A 在现实生活中,我们希望能够识别图片上的物体,无论它们在图像中的确切位置如何。计算机视觉与一般分类不同,因为当我们试图在图片中找到某个对象时,我们正在扫描图像以寻找一些特定的模式及其组合。例如,当寻找一只猫时,我们首先可能会寻找可以形成胡须的水平线,然后某些胡须的组合可以告诉我们这实际上是一只猫的图片。某些图案的相对位置和存在很重要,而不是它们在图像上的确切位置。 为了提取模式,我们将使用卷积滤波器的概念。如您所知,图像由2维矩阵或再加上具有颜色深度的3维张量表示。应用滤波器意味着我们采用相对较小的滤波器内核矩阵,并且对于原始图像中的每个像素,我们计算相邻点的加权平均值。我们可以将其视为在整个图像上滑动的小窗口,并根据滤波器内核矩阵中的权重对所有像素进行平均。
例如,如果我们对 MNIST 数字应用 3x3 垂直边缘和水平边缘滤波器,我们可以在原始图像中存在垂直和水平边缘的地方获得高光(例如高值)。因此,这两个滤波器可用于“寻找”边缘。同样,我们可以设计不同的滤波器来寻找其他低级模式: 然而,虽然我们可以设计滤波器来手动提取一些模式,但我们也可以设计网络使其自动学习模式。这是 CNN 背后的主要想法之一。 CNN 背后的主要思想 CNN 的工作方式基于以下重要思想:
练习:卷积神经网络 让我们通过相应的 notebooks 继续探索卷积神经网络的工作原理,以及如何实现可训练的滤波器: 卷积神经网络 - PyTorch (https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) 卷积神经网络 - TensorFlow (https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) 金字塔架构 大多数用于图像处理的 CNN 都遵循所谓的金字塔架构。应用于原始图像的第一个卷积层通常具有相对较少数量的滤波器(8-16),它们对应于不同的像素组合,例如笔画的水平/垂直线。在下一个级别,我们减少网络的空间维度,并增加滤波器的数量,这对应于更多可能的简单特征组合。对于每一层,当我们走向最终分类器时,图像的空间维度会减少,而过滤器的数量会增加。 作为一个例子,让我们看一下 VGG-16 的架构,该网络在 2014 年 ImageNet 的 top-5 分类中达到了 92.7% 的准确率:
|