Paper:LinkNet: Relational Embedding for Scene Graph
GitHub: linknet-pytorch
LinkNet的创新点主要在于以下三个模块:
- Relational Embedding Module:关系嵌入模块
- Global Context Encoding Module:全局上下文编码模块
- Geometric Layout Encoding Module:几何布局编码模块
1 关系嵌入模块
由上图可见,作者在物体分类和边分类中分别使用了2个关系嵌入模块。
注意,该模块可以进行多次叠加,作者认为通过叠加该模块可以实现“多次跳跃”的信息传递,但随着该模块数量增加,模型效果会出现先提升后衰减的现象。
该模块使用了注意力机制来对上下文信息进行编码和解码,具体计算方法如下:
该模块的代码实现如下:
class RelationalEmbedding(nn.Module):
"""
Module for relational embedding
"""
def __init__(self, input_dim, output_dim, r=2):
super(RelationalEmbedding, self).__init__()
self.W = nn.Linear(input_dim, int(input_dim/r))
self.U = nn.Linear(input_dim, int(input_dim/r))
self.H = nn.Linear(input_dim, int(input_dim/r))
self.fc0 = nn