Zhou, H., Feng, Y., Fang, M., Wei, M., Qin, J., & Lu, T. (2021). Adaptive Graph Convolution for Point Cloud Analysis. ICCV.
博主导读:
在 CNN 的世界里,卷积核(Kernel)通常是“死”的。训练好了参数后,不管输入是猫还是狗,卷积核都用同一套权重去滑窗。这种“各向同性 (Isotropic)” 的操作在规则的 2D 图像上没问题,但到了 3D 点云这种“奇形怪状”的数据上,就显得有点僵硬了。
AdaptConv (Adaptive Graph Convolution)提出了一种离经叛道的思路:使用特征生成卷积核,处理坐标数据
它设计了一种“特征驱动”的机制,根据每一对点之间的特征差异,实时动态生成独一无二的卷积核。这就好比从“大锅饭”变成了“私房菜”,针对每一种食材(几何结构)都用专门的刀法(卷积核)去处理。
论文:Adaptive Graph Convolution
1. 痛点:千篇一律的“固定核”
在 AdaptConv 之前,Graph CNN (如 DGCNN) 虽然也能动态找邻居,但在算特征聚合时,用的公式通常长这样:
h i = ReLU ( θ ⋅ ( x j − x i ) ) h_i = \text{ReLU}(\theta \cdot (x_j - x_i))hi=ReLU(θ⋅(xj−xi))
这里的θ \thetaθ是训练好的一组固定权重。
这有个大问题:
- 无论邻居j jj是在那张椅子的“腿部”还是“背部”,只要它们的相对坐标一样,网络就会用完全相同的逻辑去处理它们。
- 但显然,语义不同,处理方式应该不同。这种“一视同仁”的做法,被称为Isotropic (各向同性),导致网络很难捕捉精细的语义差异。
AdaptConv 的核心大招:
抛弃固定权重,让特征说话。每一对点( i , j ) (i, j)(i,j)都有属于它们自己的卷积核。
2. 核心方法:特征造刀,几何为菜 🔥
AdaptConv 的运算逻辑非常反直觉,它把传统的“权重× \times×特征”反过来了。整个过程可以概括为:用特征生成核,去卷几何坐标。
2.1 第一步:造刀 (Kernel Generation) 🗡️
每一对点( i , j ) (i, j)(i,j)的关系都不一样,所以我们要为它们量身定做M MM个卷积核(对应输出的M MM个通道)。
e ^ i j m = g m ( Δ f i j ) \hat{e}_{ijm} = g_m(\Delta f_{ij})e^ijm=gm(Δfij)
- 原料:相对特征Δ f i j = [ f i , f j − f i ] \Delta f_{ij} = [f_i, f_j - f_i]Δfij=[fi,fj−fi]。这是语义层面的差异。
- 工艺:映射函数g m g_mgm(MLP)。
- 产物:卷积核权重e ^ i j m \hat{e}_{ijm}e^ijm。
这里是用高维的特征(比如 128 维),去生成一个低维的核(比如 6 维)。这是“降维打击”,把复杂的语义浓缩成了处理几何的规则。
需要升维到多少维,就有多少个核。每个核是6维的
2.2 第二步:切菜 (Convolution) 🥕
有了刀,切什么?切空间几何 (Spatial Geometry)。
h i j m = ⟨ e ^ i j m , Δ x i j ⟩ h_{ijm} = \langle \hat{e}_{ijm}, \Delta x_{ij} \ranglehijm=⟨e^ijm,Δxij⟩
- 原料:相对坐标Δ x i j = [ x i , x j − x i ] \Delta x_{ij} = [x_i, x_j - x_i]Δxij=[xi,xj−xi](通常是 xyz 坐标,3+3=6 维)。
- 动作:点积 (Dot Product)。
- 物理含义:在当前的语义语境下(Kernel),这个空间结构(Geometry)意味着什么?
3. 深度解析:维度的魔法 (The Dimension Flow) 📐
这是论文最精彩、也最容易让人晕的地方。很多同学看不懂代码,就是因为没搞清 Tensor 的形状变化。
我们假设输入点数N NN,邻居数K KK,特征维度D DD,输出维度M MM。
| 步骤 | 操作 | 输入 Tensor | 输出 Tensor | 大师兄点评 |
|---|---|---|---|---|
| 1. 准备 | 构造相对特征 | F : [ N , D ] F: [N, D]F:[N,D] | Δ F : [ N , K , 2 D ] \Delta F: [N, K, \mathbf{2D}]ΔF:[N,K,2D] | 拼接中心点和差值,特征翻倍 |
| 2. 准备 | 构造相对坐标 | X : [ N , 3 ] X: [N, 3]X:[N,3] | Δ X : [ N , K , 6 ] \Delta X: [N, K, \mathbf{6}]ΔX:[N,K,6] | 拼接坐标和偏移,xyz 变 6 维 |
| 3. 造刀 | MLP 映射 | Δ F : [ N , K , 2 D ] \Delta F: [N, K, 2D]ΔF:[N,K,2D] | E ^ : [ N , K , M , 6 ] \hat{E}: [N, K, M, \mathbf{6}]E^:[N,K,M,6] | 高能预警!这里把2 D 2D2D维特征压缩成了6 66维权重。 输出有M MM个核,每个核管 6 个参数。 |
| 4. 卷积 | 点积 Sum | E ^ × Δ X \hat{E} \times \Delta XE^×ΔX | H : [ N , K , M ] H: [N, K, M]H:[N,K,M] | 6 66维权重× \times×6 66维坐标,求和消掉。 得到M MM个响应值。 |
| 5. 聚合 | Max Pooling | H : [ N , K , M ] H: [N, K, M]H:[N,K,M] | F ′ : [ N , M ] F': [N, M]F′:[N,M] | 典型的图卷积收尾动作。 |
灵魂拷问:为什么要卷坐标(6维),而不直接卷特征(2D维)?
- 省显存:2 D 2D2D往往很大(如 128),如果生成一个128 × 128 128 \times 128128×128的核,显存直接爆炸。而坐标只有 6 维,生成M × 6 M \times 6M×6的核非常轻量。
- 去冗余:特征已经用来生成核了(作为指导者),如果再被卷(作为被执行者),信息就重复了。“Feature is the Guide, Geometry is the Content.”
特征选择的讨论 (Feature Decisions) —— 为什么卷坐标?作者解释了一个很容易被问到的问题:“你为啥用特征去生成核,然后卷坐标?为啥不直接卷特征?”作者给了三个理由 :
- 冗余 (Redundancy):特征f j f_jfj已经用来生成核了,如果再卷f j f_jfj,信息就重复了。
- 难学 (Hard to learn):特征维度很高(64/128维),让 MLP 去学高维特征的空间关系很难;而坐标只有 3 维(或者加上法向量 6 维),MLP 很容易学明白空间关系。
- 显存 (Memory):卷高维特征计算量太大,显存扛不住。卷低维坐标(6维映射到6维核)非常省资源。
4. 实验:以少胜多的效率怪兽 📊
AdaptConv 的设计极其精简,这也体现在了它的实战表现上。
- ModelNet40 分类:
- 它只用了1k 个点,且只输入xyz 坐标,就达到了93.4%的准确率。
- 对比之下,SpiderCNN、PointCNN 往往需要 5k 个点或者额外的法向量输入才能达到类似效果。
- 鲁棒性 (Robustness):
- 在点云稀疏或加噪声的情况下,AdaptConv 的掉点率远低于标准图卷积。因为它能动态调整卷积核来适应“烂数据”。
- 参数量:
- 只有1.85M参数,和 DGCNN 差不多,但精度更高;远小于 KPConv 的 14.3M。
5. 可视化:特征空间的“心有灵犀” (Visual Analysis) 👁️
这一部分非常有意思,作者为了证明 AdaptConv 不是在“死记硬背”坐标,而是真的看懂了物体,特意做了一个特征空间热力图实验。
图解逻辑:
- 设定:作者选中了飞机左机翼尖端的一个点(蓝星)和右机翼尖端的一个点(绿星)。
- 颜色:红色代表特征距离近(长得像),黄色代表特征距离远(没关系)。
- 当我们观察左机翼的蓝星时,发现远在另一头的右机翼竟然也变红了!
- 尽管这两个点在物理空间上离得十万八千里(几何距离远),但在 AdaptConv 的特征空间里,它们是“亲兄弟”(特征距离近)。
这说明 AdaptConv 成功突破了 Graph Convolution 的“局部限制”。它学会了非局部感知 (Non-local Perception)——它知道“左翅膀”和“右翅膀”是同一种语义部件。这种**“跨越空间的共鸣”**,正是它在分割任务上表现出色的根本原因。
6. 总结 (Conclusion)
AdaptConv 给我们上了一堂生动的“卷积哲学课”:
- 卷积核不一定是死的:它可以是根据输入数据实时生成的(Hypernetwork 思想)。
- 特征与几何的分工:特征负责“制定规则”(生成核),几何负责“承载内容”(被卷积)。
- 维度的艺术:通过将高维特征映射为低维几何权重,既实现了自适应,又完美避开了计算量的陷阱。
如果你觉得 DGCNN 这种固定图卷积差点意思,或者你的任务对局部细微几何结构非常敏感,AdaptConv 绝对是你的首选。
📚 参考文献
[1] Zhou, H., Feng, Y., Fang, M., Wei, M., Qin, J., & Lu, T. (2021). Adaptive Graph Convolution for Point Cloud Analysis. ICCV.
💬 互动话题:
- 关于“卷坐标”:文中只卷了 6 维的几何坐标 (xyz + delta_xyz)。如果物体颜色对任务很重要(比如红苹果和青苹果),你觉得应该怎么改 AdaptConv 的公式,把颜色信息加进去?
- 关于 Dynamic Graph:AdaptConv 在每一层都动态重新建图(k-NN),这虽然准但很慢。如果让你优化速度,你会砍掉这个环节吗?为什么?
📚 附录:点云网络系列导航
🔥欢迎订阅专栏:【点云特征分析_顶会论文代码硬核拆解】持续更新中…
本文为 CSDN 专栏【点云特征分析_顶会论文代码硬核拆解】原创内容,转载请注明出处。