理解机器学习中的局部关系网络


介绍

你是否曾经想过,人类是如何仅凭有限的感官输入就能感知和理解视觉世界?这是一种非凡的能力,它使我们能够从基本元素中构成复杂的视觉概念。在计算机视觉领域,科学家们一直在尝试使用卷积神经网络 (CNN) 来模拟这种组合行为。CNN 使用卷积层从图像中提取特征,但在模拟具有不同空间分布的视觉元素方面存在局限性。

卷积的问题

CNN 中的卷积层就像模式匹配过程。它们应用固定滤波器来空间聚合输入特征,在处理具有显著空间可变性的视觉元素时,这可能效率低下。例如,想象一下尝试识别具有几何变形的对象。卷积层难以捕捉这些元素可以组合的不同有效方式,导致性能有限。

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

介绍局部关系层

在一篇最近的学术出版物中,一组研究人员引入了一种新颖的图像特征提取器。局部关系层通过动态计算取决于相邻像素对之间组合连接的权重之和来克服卷积方法的限制。局部关系层不是使用固定滤波器,而是学习以更有意义和更高效的方式聚合输入特征。

它是如何工作的?

局部关系层使用关系方法来确定局部区域中的像素应该如何组合。通过结合几何先验,局部关系层评估在经过训练的嵌入空间中来自两个像素的特征投影的相似性。通过学习动态组合像素的过程,局部关系层构建了一个视觉元素的层次结构,这种结构高效且有效。

该公式用于计算局部关系层中的聚合权重。让我们进一步分解它:

ω(p0, p) = softmax(Φ(fθq(xp0), fθk(xp)) + fθg(p - p0))

以下是每个组件的分步解释:

  • fθq(xp0) 和 fθk(xp) 分别表示像素 p0 和 p 的特征投影。这些投影是通过将嵌入函数 (fθq 和 fθk) 应用于像素特征 xp0 和 xp 获得的。嵌入函数捕捉两个像素的特征之间的相似性或相异性。

  • 使用 Φ 计算 p0 和 p 的嵌入特征之间的相似性或兼容性得分。此函数 Φ 捕获区域中的像素对。它以嵌入特征 fθq(xp0) 和 fθk(xp) 作为输入,并产生一个分数,该分数表示这些特征可以组合在一起的程度。

  • 项 (p - p0) 表示像素 p 和 p0 之间的几何关系。它表示两个像素之间的空间位移向量。函数 fθg 将此几何信息合并到聚合权重中。

  • 计算兼容性得分 (Φ(fθq(xp0), fθk(xp))) 和几何项 (fθg(p - p0)) 的总和。

  • 将 softmax 函数应用于总和。softmax 函数对值进行归一化,并产生局部区域中像素的概率分布。它确保权重加起来为 1,从而允许进行正确的聚合。

总之,此公式结合了学习到的像素特征相似性、像素之间的几何关系和 softmax 归一化,以计算局部关系层中的聚合权重。这些自适应权重使该层能够有效地聚合局部信息并捕获视觉数据中有意义的组合结构。

优势和应用

在研究人员开发的称为 LR-Net 的网络架构中,使用了局部关系层而不是传统的卷积层。与典型的 CNN 相比,LR-Net 在 ImageNet 分类等大型识别应用中显示出改进的性能。它提供了更大的建模能力并实现了更高的精度。此外,LR-Net 在利用大型内核邻域方面更有效,并表现出对对抗性攻击的鲁棒性。

与现有方法的比较

局部关系层使用自下而上的方法来确定特征累积权重,而深度神经网络则采用分层方法。这种独特的方法被证明是实用且有效的。现有方法并没有完全取代卷积,因为它的适用性受到限制,或者因为它作为卷积的补充。

深度神经网络,更具体地说 ResNet 设计,使用空间卷积层,这些层在 (LR-Net) 中被局部关系层替换。

瓶颈/基本残差块中的初始 7*7 卷积层和 3*3 卷积层被局部关系层替换。替换过程通过调整被替换层的扩展比 (α) 来确保浮点运算 (FLOPs) 的数量保持不变。

使用通道变换层,将 3*H*W 的输入大小更改为第一个 7*7 卷积层的 64*高度*宽度的特征图。接下来是一个 7*7 局部关系层。7*7 卷积层的替换使用等效的 FLOPs 并以相似的精度完成 ImageNet 识别任务。

通过替换 ResNet 架构中的所有卷积层,可以得到 LR-Net。例如,LR-Net-50 指的是所有卷积层都被局部关系层替换的 ResNet-50 架构。论文中的表 2 对比了 ResNet-50 和 LR-Net-50,这是聚合过程中通道共享的结果,LR-Net-50 具有相当的 FLOPs,但模型尺寸略小。

以下是局部关系层的代码片段:

import torch import tensorflow as tf class LocalRelationalNetwork(tf.keras.Model): def __init__(self, num_relations, num_objects, embedding_dim): super(LocalRelationalNetwork, self).__init__() self.num_relations = num_relations self.num_objects = num_objects self.embedding_dim = embedding_dim self.object_embeddings = tf.keras.layers.Embedding(num_objects, embedding_dim) self.relation_embeddings = tf.keras.layers.Embedding(num_relations, embedding_dim) self.hidden_layer = tf.keras.layers.Dense(embedding_dim, activation='relu') self.output_layer = tf.keras.layers.Dense(1, activation='sigmoid') def call(self, inputs): objects, relations = inputs object_embedded = self.object_embeddings(objects) relation_embedded = self.relation_embeddings(relations) concatenated = tf.concat([object_embedded, relation_embedded], axis=1) hidden = self.hidden_layer(concatenated) output = self.output_layer(hidden) return output

在此代码中,`CustomLayer` 类具有与前一层类似的功能。`m` 参数未设置为默认值 8,允许您根据需要指定它。在创建 `CustomLayer` 实例时,您可以修改参数,例如 `channels`、`k`、`stride`,并为 `m` 提供特定值。

结论

局部关系层的引入代表了图像特征提取方面的一项重大突破。通过根据局部像素对的组合关系自适应地确定聚合权重,它克服了卷积层的局限性,并提供了一种更有效的方式来捕捉视觉世界中的空间构成。利用局部关系网络 (LR-Net),研究人员在大型识别任务中取得了令人印象深刻的成果,证明了这种新方法的强大功能。局部关系层为推进计算机视觉和改进我们对视觉数据的理解开辟了新的可能性。

更新于:2023年10月17日

95 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告