#点云网络(Point Clouds Network)—— DGCNN (Dynamic Graph CNN, TOG 2019) 详解
目录
简介
DGCNN (Dynamic Graph CNN) 是 Wang 等人于 2019 年发表在 TOG(ACM Transactions on Graphics)的一篇高影响力论文,专注于点云(Point Cloud)深度学习。与以往的 PointNet、PointNet++ 相比,DGCNN 显式地将点云建模为图结构并在网络中进行动态更新,从而更好地刻画点与点之间的邻域关系,增强了对局部几何的刻画能力。
在 DGCNN 中,引入了关键算子 EdgeConv,在每个点与其邻居点之间计算“边特征”,并将这些边特征通过最大池化等操作更新点的表示。多层 EdgeConv 堆叠后,再通过全局池化和分类/分割头完成 3D 任务。该方法在多种数据集上表现优异,成为点云深度学习的重要里程碑。
核心思想
-
将点云表示为图 (Graph)
- 每个点作为图中的顶点;
- 通过 k 近邻 (kNN) 或基于距离阈值在点间连边,从而形成邻域结构。
-
动态更新图结构
- 传统方法常使用固定邻居关系(基于坐标),DGCNN 可以在每一层根据最新的特征来重新构造 kNN,以捕捉在深层特征空间中更有意义的邻域关系。
- 在实际实现中,也可只在坐标空间构图或隔层更新,以减少计算量。
-
EdgeConv 算子
- 在每个点 h i \mathbf{h}_i hi 与其邻居 h j \mathbf{h}_j hj 之间构造“边特征” ϕ ( h i , h j − h i ) \phi(\mathbf{h}_i, \mathbf{h}_j - \mathbf{h}_i) ϕ(hi,hj−hi),并通过最大池化来更新点的特征;
- 通过堆叠多层 EdgeConv 提取多级局部几何信息,同时保留“差分”维度 ( h j − h i \mathbf{h}_j - \mathbf{h}_i hj−hi ),让网络对局部形状更加敏感。
网络结构概览
DGCNN 用于分类时的典型结构可分为几个阶段:
- 输入点云: X = { x 1 , x 2 , … , x N } \mathbf{X} = \{\mathbf{x}_1, \mathbf{x}_2, \dots, \mathbf{x}_N\} X={ x1,x2,…,xN},每个 x i ∈ R d \mathbf{x}_i \in \mathbb{R}^d xi∈Rd(最简单是 3D 坐标,但也可带颜色或法线等特征)。
- 初始 kNN 构图:根据坐标或初始特征找到每个点的 k 个邻居,得到邻接表 E ( 1 ) \mathcal{E}^{(1)} E(1)。
- EdgeConv 层:对每个邻域施加边卷积,输出新的点特征 H ( l + 1 ) \mathbf{H}^{(l+1)} H(l+1),并在多层堆叠的过程中,可以在第 l + 1 l+1 l+1 层前重新更新邻居关系(Dynamic)。
- 多层特征拼接/聚合:将不同层学到的点特征拼接在一起,得到一个更丰富的表示。
- 全局特征:对拼接后特征做 Max Pooling(或 Mean Pooling) 得到全局描述子 g \mathbf{g} g。
- 分类头:若干全连接层(含 BN/Dropout 等),输出分类结果。
在分割任务中,保留逐点特征,在网络尾部为每个点输出一个标签分布(逐点分类)。
关键组件与数学原理
动态图构建(Dynamic Graph Construction)
- 初始 kNN:在原始坐标空间 R 3 \mathbb{R}^3 R3 或初始特征空间中,对每个点 x i \mathbf{x}_i xi 寻找 k 个邻居,获得邻接列表。
- 动态更新:在第 l l l 层得到特征 h i ( l ) \mathbf{h}_i^{(l)} hi(l) 后,可以再基于 ∥ h i ( l ) − h j ( l ) ∥ \|\mathbf{h}_i^{(l)} - \mathbf{h}_j^{(l)}\| ∥hi(l)−hj(l)∥ 寻找新的 kNN,更新图结构 E ( l + 1 ) \mathcal{E}^{(l+1)} E(l+1)。这使得深层次的邻居关系不再拘泥于欧几里得距离,而是反映更高层的语义相似度。
EdgeConv(边卷积)
EdgeConv 是 DGCNN 的核心算子,用于将每个点的特征与邻域特征结合起来,提升对局部几何的敏感度。
h i ( l + 1 ) = max j ∈ N i ( l ) ϕ ( h i ( l ) , h j ( l ) − h i ( l ) ) , \mathbf{h}_i^{(l+1)} = \max_{j \in \mathcal{N}_i^{(l)}} \phi\Big(\mathbf{h}_i^{(l)}, \;\mathbf{h}_j^{(l)} - \mathbf{h}_i^{(l)}\Big), hi(l+1)=j∈Ni(l)maxϕ(hi(l),hj(l)−hi(l)),
- h i ( l ) \mathbf{h}_i^{(l)} hi(l) 表示第 l l l 层中点 i i i 的特征向量(维度可大于 3);
- N i ( l ) \mathcal{N}_i^{(l)} Ni(l) 是第 l l l 层图中点 i i i 的邻居集合;
- h j ( l ) − h i ( l ) \mathbf{h}_j^{(l)} - \mathbf{h}_i^{(l)}