注意力机制卷积神经网络 (人脸识别的卷积神经网络)

卷积神经网络(CNN,或 ConvNet)是一类深度神经网络,最常用于分析视觉图像,本教程将介绍它们

卷积神经网络:简介

花点时间观察并环顾四周。即使你静静地坐在椅子上或躺在床上,你的大脑也一直在尝试分析你周围的动态世界。如果没有你有意识的努力,你的大脑就会不断地创造预测并据此采取行动。

人脸识别的卷积神经网络,卷积神经网络到底卷了谁

海滩餐厅的形象

看了这张照片后,你发现了海滩上的一家餐馆。您立即认出场景中的一些物体是盘子、桌子、灯等。您很可能同时猜到天气非常适合夜间散步。然而,你能做出这些预测吗?但是,您是否在图片中建立了许多对象?

大自然经过多年的进化才取得这一杰出成就。我们的眼睛和大脑和谐地工作,创造出如此令人惊叹的视觉体验。为我们创造这种潜力的系统是我们大脑内的眼睛、视觉通路和皮层区域。

我们内部的系统使我们能够理解上面的图片、本文中的文本以及我们每天执行的所有其他视觉识别任务。

我们从小就这样做。我们学会了识别狗、猫或人。我们可以教计算机这样做吗?我们能制造出像人类一样能看能懂的机器吗?

答案是肯定的!同样,孩子如何学习识别物体,我们需要向算法展示数百万张图片,然后再对输入进行概括并对其从未见过的图像进行预测。

计算机以与我们倾向于完全不同的方式“看”世界。他们只能“看到”某种数字,例如:

人脸识别的卷积神经网络,卷积神经网络到底卷了谁

数字数组

教计算机理解这些数字是一项艰巨的任务。计算机科学家花费了数十年的时间来构建可以理解图像的系统、算法和模型。在人工智能和机器学习时代的今天,我们在识别图像中的对象、识别图像的上下文、检测情绪等方面取得了显著的成功。 卷积神经网络 CNN 是当今最流行的计算机视觉算法之一。

卷积神经网络:

卷积神经网络具有与常规神经网络不同的设计。传统的神经网络通常通过一系列隐藏的神经网络层发送输入来转换输入。每一层都是由一组神经元创建的,其中每一层都与前一层内的所有神经元完全连接。最后,“输出层”是代表预测的最后一个全连接层。

卷积神经网络有点不同。首先,每一层被组织成三个维度:宽度、高度和深度。此外,第一层中的神经元不会与后续层中的所有神经元连接到一个微小区域。最后,最终输出将简化为沿深度维度组织的似然分数向量。

CNN由两个主要部分组成:

  • 特征提取:在这一部分中,神经网络执行一系列卷积操作和池化操作,通过这些操作检测特征。如果你有一张斑马图片,这就是通过网络识别它的条纹、两只耳朵和四条腿的部分;
  • 分类:在这里,全连接层在这些提取的特征之上用作分类器。他们将为图像上的对象分配算法预测的可能性。

人脸识别的卷积神经网络,卷积神经网络到底卷了谁

卷积神经网络架构

红色虚线区域内有正方形和线条,稍后我们将对其进行分解。图像右侧蓝色虚线区域内的绿色圆圈称为分类。这个神经网络或多层感知器区域充当分类器。这一层的输入(特征提取)来自前面称为特征提取的部分。

特征提取是 CNN 设计的一部分,从这个网络得名的地方。卷积是对该算法程序的有效性至关重要的数*运学**算。让我们从高层次上了解红色自封闭区域内发生的情况。红色区域的输入是我们想要分类的图像,因此输出可能是一组特征。将特征视为图像的示例;例如,一张猫的图片可能需要诸如胡须、两只耳朵、四条腿等特征。手写数字图像可能需要诸如水平和垂直线或循环和曲线之类的特征。稍后我将向您演示如何从图像中提取此类元素。

特征提取:卷积

CNN 中的卷积层是使用过滤器或内核在副学士学位输入图像上执行的。要了解过滤和卷积,您需要从左到右扫描屏幕,并在覆盖屏幕宽度后向下移动一步,并重复相同的过程,直到您检查整个屏幕。

例如,如果输入图像和过滤器看起来像下面这样:

人脸识别的卷积神经网络,卷积神经网络到底卷了谁

输入图像和过滤器

过滤器(绿色)在输入图像(蓝色)上一次滑动一步(像素),范围从左上角开始。上面编写的过滤器将其值与图像的重叠值相乘,同时在其上滑动并将所有这些值相加,为每个重叠输出一个值,直到遍历整个图像:

人脸识别的卷积神经网络,卷积神经网络到底卷了谁

过滤器(绿色)在输入图像上滑动

在上面的 gif 动画中,红色(右)输出矩阵中的值 4(左上)对应于图像左上角的过滤器重叠,我们计算如下:

人脸识别的卷积神经网络,卷积神经网络到底卷了谁

卷积的第一步

(1×1+0×1+1×1)+(0×0+1×1+1×0)+(1×0+0×0+1×1)=4

同样,我们倾向于计算输出矩阵的相反值。请注意,输出矩阵中的左上角值为 4,仅取决于原始图像矩阵左上角的九个值 (3x3)。即使图像中的其余值发生变化,它也不会改变。这是我们的 CNN 中这个输出值或神经元的感受野。输出矩阵中的每个值都对原始图像中的特定区域敏感。

在具有多个通道(例如,RGB)的图像中,内核具有输入图像的恒定深度。矩阵运算在和堆栈([1,1],[2,2],[3,3])之间执行,所有结果与偏差相加,为我们提供压缩的单深度通道卷积特征输出:

人脸识别的卷积神经网络,卷积神经网络到底卷了谁

压扁的单深度通道卷积特征

输出矩阵中的每个神经元都有重叠的感受野。下面的动画可以让您更好地了解卷积中发生的事情。按照惯例,主要的 ConvLayer 负责捕获低级特征,如边缘、颜色、梯度方向等。通过进一步的调整,架构适应高级特征。它为我们提供了一个网络,包括对数据集中图像的全面理解,就像我们可能的那样。

人脸识别的卷积神经网络,卷积神经网络到底卷了谁

卷积示例

特征提取:填充

操作有两种类型的结果。第一个是与输入相比,卷积特征的维数减少。第二个是当维度增加或保持不变时。这是通过在后者的情况下应用有效填充或相同填充来完成的。在上面的例子中,我们看到 padding 是 1。

在我们的示例中,当我们将 5x5x1 图像扩充为 7x7x1 图像,然后在其上应用 3x3x1 内核时,我们发现卷积矩阵的尺寸为 5x5x1。这意味着我们的输出图像与我们的输出图像具有精确的尺寸(相同的填充)。

另一方面,如果我们在没有填充的情况下执行相同的操作,我们将在输出中收到尺寸减小的图像。所以我们的 (5x5x1) 图像将变为 (3x3x1)。

特征提取:示例

假设我们有一张如下图所示的书面数字图像。我们只想从图像中提取水平边缘或线条。我们将使用一个过滤器或内核,一旦与初始图像卷积,就会使所有没有水平边缘的区域变暗:

人脸识别的卷积神经网络,卷积神经网络到底卷了谁

水平过滤器示例

注意输出图像如何只有水平白线,图像的其余部分变暗。这里的内核就像一个水平狭缝的窥视孔。类似地,对于垂直边缘提取器,过滤器就像一个垂直狭缝窥视孔,输出如下所示:

人脸识别的卷积神经网络,卷积神经网络到底卷了谁

垂直过滤器示例

特征提取:非线性

在原始图像上滑动我们的过滤器后,输出通过另一个称为激活函数的数学函数。CNN特征提取中大多数情况下通常使用的激活函数是ReLu,即Rectified Linear Unit。这只是将所有负值转换为零并保持正值相同:

人脸识别的卷积神经网络,卷积神经网络到底卷了谁

使用 ReLu 进行 CNN 特征提取

通过 ReLu 函数传递输出后,它们看起来像这样:

人脸识别的卷积神经网络,卷积神经网络到底卷了谁

使用 ReLu 示例过滤后的输入图像

因此对于单个图像,我们可以通过将其与各种过滤器进行卷积来获得多个输出图像。我们对手写数字应用了水平边缘提取器和垂直边缘提取器,得到了两个输出图像。我们可以使用其他几个过滤器来生成更多这样的输出图像,也称为特征图。

特征提取:池化

在卷积层处理之后,一旦我们得到特征图,通常会在 CNN 层中添加池化层或子采样层。与卷积层一样,池化层负责减小卷积特征的抽象大小,这通常会降低通过空间缩减处理数据所需的计算能力。池化缩短了训练时间并控制了过拟合。此外,它有助于提取主要特征旋转和位置不变,从而有效地训练模型。

池化有两种类型:

  • Max Pooling 过程从内核覆盖的图像部分返回最大值。Max Pooling 还可以作为噪声食欲*制剂抑**。它完全丢弃了嘈杂的激活,并在降维的同时还提供了降噪功能。
  • 最大池化示例
  • 平均池化过程返回内核覆盖的图像部分的所有值的平均值。平均池化仅执行空间减少作为噪声抑制机制。因此,我们可以说 Max Pooling 的性能比 Average Pooling 好得多。
  • 平均池化示例

卷积层和池化层构成了卷积神经网络的第 i 层。根据图像中的复杂性,这些层的数量也会被夸大以进一步捕获低级细节,但是以额外的计算能力为代价。

经过上面的方法,我们就成功了,让模型能够理解特征。此外,我们将展平最终输出层并将其馈送到常规神经网络以进行分类。

分类——全连接层(FC层):

添加全连接层可能是(通常)通过卷积层的输出来学习高级特征的非线性组合的低成本方法,如下所示。全连接层理解该空间中可能的非线性函数。CNN网络示例:

人脸识别的卷积神经网络,卷积神经网络到底卷了谁

全连接模型

现在我们已经将输入图像转换为可接受的类型,我们倾向于将图像展平为列向量。我们将扁平化的输出馈送到前馈神经网络,并将反向传播应用于每次训练迭代。经过一系列时期后,该模型可以区分图像中的主要特征和某些低级特征,并利用 Softmax 分类技术对它们进行分类。

所以目前,我们拥有制作 CNN 所需的所有部件。卷积、ReLU 和池化。我们将最大池化的输出输入到我们最初提到的分类器中,该分类器通常是一个多层感知器层。通常在 CNN 中,这些层不止一次使用,即 Convolution -> ReLU -> Max-Pool -> Convolution -> ReLU -> Max-Pool 等等。我们不会在本文中讨论全连接层。

结论:

CNN 是一种非常强大的算法,广泛用于图像分类和目标检测。图像的层次结构和强大的特征提取能力使 CNN 对各种图像和对象识别任务具有鲁棒性。

卷积神经网络的各种架构是构建算法的关键,这些算法在可预测的未来为人工智能提供动力,并将为人工智能提供动力。其中一些是 ZFNet、AlexNet、VGGNet、LeNet、GoogLeNet、ResNet 等。

最后,给大家准备了200g人工智能资料包,需要的小伙伴关注公众号【辞门】并回复【资料】即可免费领取。