面向初学者的人工智能学习笔记-计算机视觉-卷积神经网络

发表时间: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 的工作方式基于以下重要思想:

  • 卷积滤波器可以提取模式

  • 我们可以以自动训练滤波器的方式设计网络

  • 我们可以使用相同的方法来查找高级特征中的模式,而不仅仅是在原始图像中。因此,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% 的准确率:

图片

图片



分享到: