探索图神经网络中的边缘卷积机制
EdgeConv(Edge Convolution)是一种专为非结构化点云数据设计的动态图卷积操作, 最初由 Wang 等人在 2019 年提出,作为 DGCNN(Dynamic Graph CNN)的核心组件。 它通过在局部邻域内构建动态图,并对边特征进行聚合,从而有效捕捉点之间的几何关系。
核心思想:不是对固定网格做卷积,而是在每一层根据当前点的相对位置动态构建邻接图,再对“边”做特征变换。
EdgeConv 的计算过程可分为以下几步:
X ∈ ℝ^{N×d},使用 k 近邻(k-NN)构建局部图;x_i 及其邻居 x_j,计算边特征 h(x_i, x_j) = MLP(x_j - x_i);x_i' = AGGREGATE({h(x_i, x_j)})。这种机制使模型能自适应地学习局部几何结构,非常适合处理 3D 点云、分子图等不规则数据。
class EdgeConv(nn.Module):
def __init__(self, in_channels, out_channels):
super().__init__()
self.mlp = nn.Sequential(
nn.Linear(in_channels * 2, out_channels),
nn.ReLU(),
nn.Linear(out_channels, out_channels)
)
def forward(self, x, edge_index):
# x: [N, C], edge_index: [2, E]
row, col = edge_index
edge_features = torch.cat([x[row], x[col] - x[row]], dim=1)
out = self.mlp(edge_features)
return scatter_max(out, row, dim=0, dim_size=x.size(0))[0]
Wang, Y., Sun, Y., Liu, Z., Sarma, S. E., Bronstein, M. M., & Solomon, J. M. (2019). Dynamic Graph CNN for Learning on Point Clouds. ACM Transactions on Graphics (TOG).