掌握可视化卷积神经网络模型,带你畅游图像识别技术领域

在深度学习的过程中,最有吸引力的作者是对对象进行分类的模型。最新研究结果表明,此类模型已经可以在实时视频中检测到多个对象。这是由于计算机视觉领域的最新技术创新。众所周知,在过去几年中,卷积神经网络(CNN或ConvNet)在深度学习领域取得了许多重大突破,但对于大多数人来说,这种描述是非常不直观的。因此,要了解模型如何取得重大突破,我们首先应该了解卷积神经网络是如何工作的。

上图是5x5矩阵。现在,您选择另一个3x3矩阵并将其移动到图像,将3x3矩阵乘以被覆盖的图像部分以生成单个值。紧接着,3x3矩阵向右移动并向下移动以卷积卷积层的目标。滤波器由加权的矢量叠加乘以卷积输出的值表示。当训练图像时,这些权重会发生变化,也就是说,在评估图像时,它会通过捕获的某些特征来预测图像的内容。

卷积层之后的层主要是CNN架构中的池化层。它将输入图像分成一组非重叠矩形,并为每个子区域输出一个值。

两个主要的汇集层是最大的游泳池和平均游泳池。最大池数-输出子区域的最大值。平均池-输出子区域的平均值。池化层用于减少空间维度而不是深度。减小空间维度的主要优点是可以通过减少空间信息来优化计算性能。通过减少空间信息意味着您可以使用更少的参数训练模型,从而减少过度拟合的可能性。获得一些固定值。激活功能的工作方式与其他神经网络完全相同。此功能的主要功能是将值压缩到特定范围。

最常用的激活功能是ReLu激活功能。它需要输入'x'并确定'x'是否为正,否则为0。使用ReLu功能的原因是因为其执行成本非常低。

上图是卷积层的一般表示。我们通过池层执行了卷积和ReLu函数。这些层彼此堆叠。虽然定义和训练深度神经网络(DNN)比以往更容易,但大多数人仍陷入陷阱。为此,我们使用可视化来理解CNN模型中的各个层。在这部分中,我们将尝试使用Keras进行可视化。我们将使用Keras视觉输入来最大化激活VGG16架构不同层中的滤波器并训练ImageNet。

请注意,我们只输入最后一个卷积层。原因是添加完全连接的层会强制您使用模型的固定输入大小(224x224,原始ImageNet格式)。通过保留卷积模块,我们的模型可以适应任何输入大小。该模型加载一组先前在ImageNet上训练过的权重。现在让我们定义一个有助于激活特定层(layer_name)中特定过滤器(filter_index)的损失函数。

一切都很简单。这里唯一的技巧是标准化输入图像的像素梯度,以确保梯度上升到足够平滑。现在我们可以使用我们定义的Keras函数在输入空间中使梯度上升:

使用TensorFlow在CPU上执行此操作需要几秒钟。然后我们可以提取并显示生成的输入:

第一层基本上只是编码方向和颜色。然后将这些方向和滤镜组合成基本网格和斑点纹理。这些纹理逐渐组合成越来越复杂的图案。您可以将每层中的滤波器视为矢量的基础,该矢量通常是完整的,可用于以紧凑的方式对输入层进行编码。当过滤器开始整合来自越来越大的空间范围的信息时,过滤器变得更加复杂。以下是从不同层生成的要素图的图片:

第一层主要产生水平,垂直和对角线。主要用于检测图像中的边缘。第2层将尝试提供更多信息。它主要检测角落。在第三层,我们可以开始检测一些复杂的图案,如眼睛和面孔。我们可以假设该特征图是从训练的面部检测模型获得的。在4楼,它可以在更复杂的脸部(例如眼睛)。

在第5层中,您可以使用要素图生成特定面,汽车轮胎,动物面等。此要素图包含有关图像的大部分信息。一般来说,CNN和其他图像识别模型没有太大区别。通过阅读相关书籍,我们可以加深对此的理解。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180905A127YE00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券