图卷积相关论文解读 MS-G3D

三、MS-G3D

1、与AS-GCN比较

(1)现存的很多方法只是分别从空间域和时间域获取特征再进行整合,如下图(a),这种方法阻碍了跨时空的信息交流。比如“站起来”这个动作,上半身的动作(前倾)和下本身未来的动作(站起来)存在很强的关联性。为了解决这一问题,文章提出一种能够跨越时空信息流的模型,如下图(b),黑色代表中心点,而旁边不同空间不同时间的绿色的点是与之有关联的点,这样信息就能跨时间交流。

(2)目前的一些方法如AS-GCN利用高阶多项式表示与中心节点相聚几跳的邻近节点,但是高阶多项式会出现有偏权重问题,对相距比较远的邻近节点不太友好,所以文章采用了多尺度的方法。如下图(c),不同颜色的点代表不同距,通过多尺度分析就很容易区分开来。

2、偏权重问题

 在AS-GCN这篇文章中,使用邻接矩阵的多项式表示与中心节点相邻几跳的节点,如公式(2)。

    这种多项式可以看做一种因式分解,我们举个例子:假如 𝑥3+𝑥2+𝑥+1 代表包含中心节点( 𝑥0 )、距离中心节点 1 跳的节点( 𝑥1 )、 2 跳的节点( 𝑥2 )和 3 跳的节点( 𝑥3 ),因为代表阶次的 𝐾 是从 0 到 𝐾 的,所以 𝐾=0 时只包含 𝑥0 ; 𝐾=1 时包含 𝑥+1 ,这时 1 就是多余的; 𝐾=3 时包含 𝑥3+𝑥2+𝑥+1 ,这时 𝑥2+𝑥+1 就是多余的。由于物理距离的原因,相近的节点无论在哪个阶次都占很大的权重,这种现象就叫做有偏权重问题。如下图,节点 1 代表中心节点,颜色深浅代表权重大小,颜色越深,权重越大。 𝐴~1 中只包含中心节点与相距 1 跳的节点; 𝐴~2 中,相距 2 跳的节点的权重小于 1 跳的节点;同样, 𝐴~3 中, 相距 3 跳节点的权重小于 1 跳和 2 跳的。

 

这里我们不妨看一下AS-GCN中的代码实现:

def get_hop_distance(num_node, edge, max_hop=1): #得到对角线为0,距离为1,其余为inf                                    
    A = np.eye(num_node)
    for i, j in edge:
        A[i, j] = 1
        A[j, i] = 1

    # compute hop steps
    hop_dis = np.zeros((num_node, num_node)) + np.inf
    transfer_mat = [
        np.linalg.matrix_power(A, d) for d in range(max_hop + 1)
    ]
    arrive_mat = (np.stack(transfer_mat) > 0)
    for d in range(max_hop, -1, -1):
        hop_dis[arrive_mat[d]] = d
    return hop_dis

    作者认为这样对邻接矩阵𝐴进行矩阵求k次方会导致有偏加权问题。为了解决有偏权重的问题,文章提出一种多尺度的邻接矩阵。如公式(3),区别于之前 𝑑(𝑣𝑖,𝑣𝑗)≤𝑘 这里设置 𝑑(𝑣𝑖,𝑣𝑗)=𝑘 ,通过设置不同的 𝑘 值得到不同尺度的邻接矩阵。

 

其代码的实现如下: 

def k_adjacency(A, k, with_self=False, self_factor=1): #计算邻接矩阵A的k阶邻接矩阵
    # A is a 2D square array
    if isinstance(A, torch.Tensor):
        A = A.data.cpu().numpy()
    assert isinstance(A, np.ndarray)
    Iden = np.eye(len(A), dtype=A.dtype)
    if k == 0:
        return Iden
    Ak = np.minimum(np.linalg.matrix_power(A + Iden, k), 1) - np.minimum(np.linalg.matrix_power(A + Iden, k - 1), 1)
    if with_self:
        Ak += (self_factor * Iden)
    return Ak

 

3、 跨时空的跳跃连接

  首先在时间域取一个大小为 𝜏 的滑动时间窗口,每一步都会得到一个时空子图 𝐺(𝜏)=(𝑉(𝜏),𝐸(𝜏)) ,其中 𝑉(𝜏) 表示 𝜏 帧所有节点的集合,初始 𝐸(𝜏) 表示组合的邻接矩阵 𝐴~(𝜏) ,如公式(5)。

      原本邻接矩阵 𝐴~ 是 𝑁×𝑁 的, 𝐴~(𝜏) 是将 𝜏 帧的每一帧的 𝐴~ 平铺得到的,所有 𝐴~(𝜏) 是 𝜏𝑁×𝜏𝑁 的。用 𝐴~(𝜏) 代替 𝐴~ 后的图卷积如公式(6)。

 在公式(6)的基础上加上多尺度分析就是公式(7),这时的邻接矩阵就是 𝐴~(𝜏,𝑘) 。

4、框架结构 

 

 上图中的(e)中包含一个可学习的矩阵,和AAGCN相同,采用相加的方式。

 同时也包含关节-骨骼双流融合。

  • 18
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值