Look Closer to See Better Recurrent Attention Convolutional Neural Network for Fine-grained Image Re

2. Related Work

关于细粒度图像识别的研究沿着两个维度进行,即判别性特征学习和复杂的局部定位

2.1. Discriminative Feature Learning

学习判别性特征对于细粒度图像识别至关重要。由于深度学习的成功,大多数方法依赖于强大的卷积深层特征,
其在通用和细粒度识别上比手工制作的特征有着显着改善[4,5,6,17,29]。为了学习更强大的特征表示,深度残差网络[9]通过优化残差函数将CNN加深到152层,其将ImageNet测试集中的错误率降低到3.75%[17]。为了更好地建模细粒度类别中存在的微妙差异,最近提出一种双线性结构[19]来计算两个独立CNN的成对特征的相互作用来捕获图像的局部差异,这已经取得了鸟类分类中最先进的成果[30]。此外,另一种方法[34]提出用Fisher Vector[23]统一CNN与空间加权表示,显示了在鸟[30]和狗数据集[13]的优异结果。

2.2. Sophisticated Part Localization

以前的工作主要集中在利用边界框和部分注释等额外注释来定位细粒度识别中的重要区域[10,18,22,30,32,33]。然而,手动注释的大量劳动使得此任务对于大规模的实际问题不可行。最近,出现了一些新的工作,旨在提出一个更一般的情况,并提出使用无监督的方法来挖掘注意力区域。基于视觉注意力的方法在两者上提出了一个两级域网对象和部分,其中通过聚类方案从CNN中的内部隐藏表示中学习部分模板[31]。 采用深度滤波器响应[34]和多维描述符[28]提出通过分析来自CNN的过滤器响应来以无监督的方式一致地响应特定模式来学习一组部分检测器。
空间变压器[11]进一步提出了一种动态机制,可以主动空间变换图像以进行更准确的分类。而现有的模式仍然难以准确地定位微妙的地区
由于它们的小尺寸。
我们最相关的作品来自[20]和[35]。
他们都建议放大歧视性的本地区域,以提高细粒度识别的表现。
然而,从[20]和[35]的区域定位者的学习依赖于预处理区域提案或类别标签,这对准确的区域定位提出了挑战。
### 三层结构与Relational Graph Convolutional Networks (R-GCN) Relational Graph Convolutional Networks(R-GCN)是一种专门用于处理多关系图数据的图神经网络。与传统的图卷积网络(GCN)不同,R-GCN能够处理具有多种类型边(关系)的图数据。其核心思想是在图卷积操作中引入关系特定的权重矩阵,从而使得模型能够学习到不同关系对节点表示的影响。 #### 基本原理 在R-GCN中,每个节点的表示是通过聚合其邻居节点的信息来更新的。对于多关系图中的每个节点,R-GCN会根据不同的关系分别进行信息传递和聚合。具体来说,对于一个节点 $ v $ 和其邻居节点 $ u $ 之间的关系 $ r $,节点 $ v $ 的新表示可以通过以下公式计算: $$ h_v^{(l+1)} = \sigma\left(\sum_{r \in R} \sum_{u \in N_r(v)} \frac{1}{c_{v,r}} W_r^{(l)} h_u^{(l)} + b^{(l)} \right) $$ 其中: - $ h_v^{(l)} $ 是节点 $ v $ 在第 $ l $ 层的表示。 - $ R $ 是所有关系类型的集合。 - $ N_r(v) $ 是节点 $ v $ 通过关系 $ r $ 连接的邻居节点集合。 - $ W_r^{(l)} $ 是关系 $ r $ 对应的可学习权重矩阵。 - $ c_{v,r} $ 是归一化常数,通常取为节点 $ v $ 通过关系 $ r $ 的邻居节点数量。 - $ b^{(l)} $ 是偏置项。 - $ \sigma $ 是激活函数,如ReLU。 #### 参数共享与正则化 为了应对多关系图中关系数量庞大带来的参数爆炸问题,R-GCN引入了参数共享机制。具体来说,可以将关系权重矩阵 $ W_r $ 分解为一组基向量的线性组合,即: $$ W_r = \sum_{k=1}^K a_{rk} B_k $$ 其中: - $ K $ 是基向量的数量。 - $ B_k $ 是第 $ k $ 个基向量。 - $ a_{rk} $ 是关系 $ r $ 在基向量 $ B_k $ 上的系数。 这种分解方式减少了需要学习的参数数量,提高了模型的泛化能力。 此外,R-GCN还采用了正则化技术,如L2正则化和Dropout,以防止过拟合。这些技术有助于模型在大规模、多关系数据上保持高效和稳定的表现[^4]。 #### 实现细节 在实现R-GCN时,可以使用深度学习框架如PyTorch或TensorFlow。以下是R-GCN的一个简单实现示例: ```python import torch import torch.nn as nn import torch.nn.functional as F class RGCN(nn.Module): def __init__(self, num_relations, in_dim, out_dim, num_bases): super(RGCN, self).__init__() self.num_relations = num_relations self.num_bases = num_bases self.bases = nn.Parameter(torch.Tensor(num_bases, in_dim, out_dim)) self.attention = nn.Parameter(torch.Tensor(num_relations, num_bases)) self.bias = nn.Parameter(torch.Tensor(out_dim)) self.reset_parameters() def reset_parameters(self): nn.init.xavier_uniform_(self.bases) nn.init.xavier_uniform_(self.attention) nn.init.zeros_(self.bias) def forward(self, graph, features): # graph: 图结构,包含邻接列表和关系类型 # features: 节点特征 device = features.device num_nodes = features.size(0) hidden = torch.zeros(num_nodes, self.out_dim).to(device) for rel in range(self.num_relations): # 获取当前关系的邻接矩阵 adj = graph.get_adjacency_matrix(rel) # 计算关系权重矩阵 weight = torch.matmul(self.attention[rel], self.bases.view(self.num_bases, -1)) weight = weight.view(in_dim, out_dim) # 聚合邻居节点的信息 support = torch.mm(features, weight) output = torch.spmm(adj, support) hidden += output hidden += self.bias return F.relu(hidden) ``` 在这个实现中,`RGCN` 类定义了一个多关系图卷积层。该层通过分解关系权重矩阵并使用注意力机制来动态调整基向量的贡献,从而减少参数数量并提高模型的灵活性。 #### 应用场景 R-GCN广泛应用于知识图谱补全、实体分类和链接预测等任务。例如,在知识图谱补全任务中,R-GCN可以通过学习节点和关系的表示,预测缺失的三元组;在实体分类任务中,R-GCN可以利用图结构信息来提升实体分类的准确性。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值