资讯动态

PVN3D 6DoF位姿估计:逐点投票与几何解算的关键设计解析

发布时间:2026/10/16 12:19:10 来源:尧图企业网站定制
做机器人抓取和AR这两年我读了不少6DoF位姿估计的论文PVN3D是印象比较深的一篇。它的核心思路很简洁让网络为每个三维点预测一个指向关键点的偏移向量最后由所有点一起投票决定关键点坐标再通过最小二乘解算刚体变换得到6DoF位姿。这套设计看起来不复杂但它绕开了直接回归位姿的很多麻烦在当时的基准测试里把精度推到了一个新台阶也被后续不少工作当成对比基线。无论你是刚接触位姿估计的初学者还是已经在做机器人抓取落地的工程师这篇笔记都能给你一些可复用的理解包括PVN3D为什么这样设计、网络内部到底做了什么、以及复现时容易被忽略的几个细节。1. 先搞清楚它要解决什么问题6DoF位姿估计的三种主流路线1.1 位姿估计为什么难从能识别到能抓取的鸿沟物体检测解决的是它在哪里、是什么但机器人要真正抓起来还得知道物体的摆放朝向和精确位置。6DoF位姿估计就是要输出三维空间里的平移量x、y、z和旋转量绕三个轴的r、p、y一共六个自由度。这个问题的难点在于物体外观会随视角剧烈变化深度传感器在边缘和反光表面会带来大量噪声遮挡又让很多可见线索变得不可靠。尤其是旋转量的估计远比回归横坐标来得困难。同样是3D旋转欧拉角存在万向锁四元数虽然是紧致的但优化过程中要保持单位范数约束。如果直接在网络输出端回归这些参数网络本质上是在高维非欧空间里做拟合很容易收敛到平均值或荒谬的外插值。这也是早期直接回归位姿方法不够稳的深层原因。1.2 三条技术路线直接回归、建立对应点、投票汇总主流方法可以粗分成三类。第一类是直接回归网络端到端地从图像或点云输出6DoF参数简单粗暴但精度和鲁棒性受限于旋转表达和遮挡情况。第二类是建立对应点先在二维或三维空间找到若干物体点与模型点的匹配关系再通过PnP或Kabsch这样的几何算法解算位姿典型代表是各类关键点方法。第三类是投票范式每个局部线索像素、点云中的点、图像补丁都对物体的某个属性投一票最后汇总得到结果这也是PVN3D采用的思路。这三条路线背后有一个共同的权衡深度学习负责哪些部分几何算法负责哪些部分。直接回归把一切都交给网络可解释性差、上限受限纯几何匹配又难以应付真实世界的纹理缺失和遮挡。PVN3D选择的是中间路线——网络只负责逐点感知和局部推理最终位姿交给成熟的最小二乘几何算法。1.3 PVN3D的定位网络做特征几何做位姿论文最值得品的地方就是它对学习和几何分工的理解。网络要输出的是每个点对每个关键点的偏移量这是一种局部、稠密、物理意义清晰的预测。关键点的最终位置则通过所有点的投票汇总得到位姿通过两组关键点集合的最小二乘匹配求解。这样一来网络的容错空间很大少数点的预测偏离会被大量正常投票稀释几何求解部分又足够严格不会因为网络输出的中间表达出现非线性扭曲。这种分工也让训练目标变得非常干净。网络不需要去理解六维空间里复杂的旋转结构只需要学会从当前点位置往物体关键点方向走多少偏移这个任务在几何上是良定义的在物理世界也有直观解释。实际复现时的感受是这种设计比端到端回归位姿更容易收敛对超参也不那么敏感。2. 关键思想拆解为什么投票比直接回归更适合2.1 直接回归关键点的三个问题有些人可能会问既然最终都要回归关键点坐标为什么不让网络直接输出关键点在相机坐标系下的位置这里有几个被反复验证过的坑。第一直接回归坐标会让网络对全局上下文过于敏感。当物体被部分遮挡时一个点很难定位到远在遮挡区域后面的关键点回归出来的坐标往往偏向可见部分。第二三维坐标的回归范围很大物体离相机近和远时坐标数值差好几倍网络要同时覆盖大范围和小误差精度难度很高。第三直接回归本质上是让每个独立的点去预测一个全局属性这违背了点云作为局部传感器的直觉——单个点的信息量根本不足以知道整个物体在哪儿。投票机制天然缓解了这三个问题。每个点只输出自己与关键点的相对偏移这是局部且稳定的即使看不见被遮挡的关键点可见的局部几何结构也能推断出大致方向大量点参与投票后随机误差通过平均效应被抑制系统性偏差才可能保留下来。2.2 Hough投票在三维视觉里的应用投票思想其实不新鲜经典Hough变换在二维图像检测里早就用得很成熟后来也有不少工作将这种思路引入三维物体检测和位姿估计。把投票用在关键点预测上的核心优势是它的多源证据融合能力一个关键点周围可能有几十个可见点都在为它投票每个投票者贡献一个独立的预测来源最终结果是所有信息来源的折中。在三维场景里同一物体往往以不同大小、不同位置和朝向出现在视野中。直接对全局坐标做投票几何范围大、投票空间离散化难度高而PVN3D把投票对象定为关键点而非物体中心或位姿参数在数学上仍然简洁在物理上又保留了精细的空间信息这个选择让投票的操作性大大增强。2.3 为什么预测偏移向量而不是关键点坐标逐点投票的具体形式也很有讲究。PVN3D让网络为每个三维点输出它在与每个关键点连线方向上的偏移量dx, dy, dz。这个偏移量定义在当前点的局部坐标系里天然具有平移不变性——物体远近变化时只要相对几何关系不变网络学到的映射也基本不变。同时偏移向量的数值范围通常远小于全局坐标网络输出层的回归压力小得多。关键点离当前点越近偏移越小预测越容易准确反之远处关键点的偏移会有更大的不确定性但可以通过多个近处点的投票来补偿。这种近处精确、远处补偿的机制是非常工程化的思路。3. 网络结构细节从点云到6DoF的完整Pipeline3.1 输入表示与预处理RGB-D到点云PVN3D的输入是RGB-D数据。深度图结合相机内参可以投影出三维点云每个点除了位置坐标还可以把颜色信息作为额外特征拼接进来。这种做法很自然因为纯几何信息在纹理缺失区域会遇到困难颜色正好提供了互补线索。训练时通常以物体实例为中心对点云进行裁剪保证网络看到的是物体附近的稠密点而不是整张图的冗余点。测试阶段配合检测框或类别分割结果把输入裁剪到可能包含物体的区域。这里有个容易被忽略的细节深度噪声在远距离和大倾斜平面上非常严重直接使用原始坐标会在边缘产生大量离群点。实际处理时往往需要根据深度值做统计滤波或者通过数据增强让网络对噪声更鲁棒。3.2 骨干网络三维稀疏卷积U-Net特征提取部分采用编码器-解码器结构逐层下采样获取更大感受野再上采样恢复全分辨率。与普通2D网络不同这里处理的点云是稀疏的使用三维稀疏卷积在性能上要比稠密体素方法高效得多因为空间中真正占据位置只是少数。网络输出的是逐点特征每个点都获得一个综合了局部几何和上下文信息的高维向量。说人话就是经过多层卷积之后原始的三维位置加上颜色变成了一堆表达能力更强的特征后面的任务头就在这些特征上做预测。由于使用了跳跃连接浅层细节和深层语义能够融合这对后面要做的语义分割和关键点投票都很关键。3.3 输出头一语义分割把背景和物体分开网络有两个输出分支。第一个分支是逐点语义分割目的是区分当前点属于哪个物体或者是否属于目标物体。这个分支的作用是给后续投票提供一个可靠的参与集合——只有属于目标物体的点才有资格参与该物体的关键点投票。语义分割的重要性在遮挡场景里更加凸显。如果背景点也参与了投票它们对关键点位置的预估往往是错乱的会严重污染最终的平均结果。所以论文设计了分割分支测试时将语义得分超过阈值的点保留下来参与投票其余点直接丢弃。这个设计看似简单却是精度稳定的重要保障。3.4 输出头二逐点关键点偏移投票第二个分支是核心也是论文名字里Point-wise 3D Keypoints Voting的由来。对每个三维点网络预测一个K行3列的张量其中K是预先定义好的关键点数每一行表示该点指向第k个关键点的偏移向量。推理阶段把每个点的坐标与它预测的偏移相加就得到这个点对第k个关键点的投票位置。所有有效点对同一个关键点投票之后采用加权平均的方式聚合权值可以来自语义分割的分数或网络额外预测的置信度。加权平均的前提是各个投票源的误差近似零均值这在很多真实场景下是成立的。理论上也可以用聚类、中值等更鲁棒的聚合手段不过会增加额外计算量论文在主流基准上验证了简单聚合已经足够有效。3.5 关键点怎么选最远点采样关键点的定义直接影响位姿解算的条件数。PVN3D没有让网络去寻找关键点而是在物体的三维模型表面用最远点采样Farthest Point Sampling预先取一组均匀分布的三维点。这个过程类似往球面上尽量均匀地撒几颗钉子保证点之间的最小距离尽量大。为什么不能用学习得到的关键点因为关键点的物理意义要用于和模型关键点做匹配如果场景关键点和模型关键点不是同一套坐标系定义后面的最小二乘就没有意义。固定的均匀关键点可以让求解几何变换时具有较好的数值稳定性也有利于形成紧凑的包围盒减小回归偏移的方差。实践中K值取多少对精度有影响通常8到9个已经能提供足够约束再增加收益会递减。3.6 位姿解算Kabsch算法的数学内核得到场景关键点估计和模型关键点真值之后最后一步就是求一个刚体变换把它们对齐。这个问题可以用最小二乘框架描述寻找旋转矩阵R和平移t使得所有模型关键点经过变换后与对应的场景关键点距离平方和最小。求解的核心步骤是先对各组点去中心化然后计算两个点集之间的协方差矩阵对该矩阵做SVD分解从中恢复出旋转矩阵最后利用中心点确定平移量。整个过程闭式可解不需要迭代优化。值得一提的是这个算法对关键点之间的对应关系是敏感的如果某个关键点被严重遮挡导致预测偏差很大整体位姿会被拉偏。这也是为什么前面语义分割分支和投票数量那么重要——它们本质上都是在保护这个最小二乘过程不被离群点干扰。4. 实验设计与结果分析ADD-S指标背后的真相4.1 评估指标ADD与ADD-S要读懂实验结果先得明白指标的口径。对非对称物体常采用ADD指标计算模型点经过预测位姿变换后的位置与真值位姿变换后的位置之间的平均最近邻距离。对对称物体因为物体旋转之后表面看起来一样直接用ADD会过大惩罚那些本质上等效的预测于是改用ADD-S对每个模型点取到真值位姿最近点的距离。很多论文会同时报ADD/ADD-S的AUC面积曲线和特定阈值下的精度比如距离小于物体直径的某个百分比算作成功。PVN3D在主流基准上的成绩相当亮眼尤其是在YCB-Video这样的重遮挡、多物体场景里相比当年的直接回归类方法提升很明显。在物体较孤立、背景干净的基准上精度几乎逼近上限这时候再看增量反而不太能说明方法差异。4.2 消融实验在验证什么论文做了多组消融实验主要回答几个问题语义分割分支要不要投票聚合与直接回归相比优势有多大关键点数量和采样方式会不会影响结果这类实验的价值在于证明性能提升不是来自某个隐藏的trick而是来自设计逻辑。从消融结果来看去掉语义分割后整体精度明显下降这验证了筛选投票点的重要性把预测偏移改为直接回归关键点坐标后性能也变差验证了投票形式本身的优势。这种清晰的因果链条是论文值得学习的地方很多工作在刷完数字之后并不确定自己每个组件的真实贡献而PVN3D的每个关键设计都能在实验上找到对应证据。4.3 与同期方法的本质差异和同期方法对比时需要注意它们之间的本质差异而不是只比数字。直接回归位姿的方法把旋转和平移作为网络输出思路直白但在部分可见和复杂遮挡下容易失效基于二维图像关键点的方法虽然也用了投票但需要后续对二维到三维恢复引入了额外的投影歧义。PVN3D直接把投票放在三维空间天然避开了二维到三维的歧义问题。换句话说PVN3D的改进并不只是在网络结构上多加几层卷积而是把投票这个操作放到了正确的空间维度。这个观察可以帮助我们理解后来各种位姿估计工作为什么普遍采用关键点加几何求解的范式。5. 个人复现笔记踩坑、思考与后续方向5.1 训练中容易忽视的几个细节复现PVN3D时我踩过不少坑挑几个最值得说的。第一训练数据增强一定要包含围绕物体中心的随机旋转和平移。位姿估计的最终目标是刚体不变性如果训练时物体位置和姿态过于固定网络很快过拟合到全局坐标上测试集上一换场景精度就断崖下跌。这个增强的幅度需要摸索旋转角度范围太小没效果太大又会让初始偏移量分布过宽。第二语义分割分支的收敛速度对整体结果影响很大。如果分割分支训练不到位训练初期参与投票的点大量是背景点关键点分支接收到的梯度会有很强噪声。可以尝试让两个分支使用不同的学习率或者先冻结关键点分支训练几个epoch的分割再把整个网络联合训练。第三偏移量回归的损失尺度需要留意。不同物体的尺寸差异大同一个物体在近距离和远距离时偏移量的尺度也会差不少。如果直接对所有样本统一损失权重大物体和近距离物体容易主导训练。一种有效的做法是对偏移量除以物体直径或者归一化因子让损失尺度与物体物理尺寸解耦。5.2 投票聚合在真实场景中的鲁棒性问题论文里的加权平均在测试集上效果不错但工程落地时还是要注意离群点。如果语义分割概率阈值设置过低一些边缘背景点会被放进投票池它们预测的偏移完全不靠谱加权平均又不像聚类那样能自动剔除离群点结果可能出现位姿轻微偏转。我自己的做法是对投票集合做两遍过滤第一遍用过低的置信度阈值筛掉明显不可靠的点第二遍用卡方检验或简单统计剔除那些与中值投票位置偏差过大离群点。如果目标是制造高鲁棒性的系统还可以进一步引入聚类方法取最大簇作为有效投票簇代价是推理时间增加但对强遮挡场景的提升值得。另外还要注意对称物体的特殊性。对于轴对称或镜像对称物体即使关键点预测准确Kabsch算法也可能找到两个等价的旋转解。训练时如果只提供单一真值位姿网络在对称方向上会无所适从。常见做法是在损失计算阶段对关键点匹配关系做最近邻替换或者在评估时使用ADD-S口径但要做到物理层级一致还得在推理后额外判断对称变换的整流。5.3 关键点选择与位姿解算之间的相互作用很多人只看网络不看解算这里有一个比较容易忽略的关系关键点的几何分布直接决定了最小二乘问题的条件数。若所有关键点几乎共线SVD求旋转时会出现退化微小噪声也可能导致巨大的旋转误差如果关键点均匀分布在三维空间求出的位姿通常更稳。所以工程上不要机械地随机采样关键点而应该针对物体的实际形状做优化。扁平物体和长条形物体的最优关键点分布很不一样未来完全可以根据物体类别自适应地采样关键点甚至让采样过程可微。这个方向其实比单纯提高网络特征能力更值得探索因为它直接改善了几何求解的病态问题。5.4 从PVN3D延伸出去这个范式还能往哪走这个思路后续被很多工作吸收主要延展方向有几个。一是把关键点投票与策略梯度结合在预测位姿的同时对不确定度建模方便机器人根据置信度决定是否重试二是把这种方法推广到类别级位姿估计不再为每个物体实例单独定义关键点而是为类别定义规范空间内的关键点三是与抓取姿态规划结合把位姿估计的方差信息直接传到机械臂运动规划里避免在物体位姿不确定时盲目抓取。另有一条实践上的心得PVN3D这类局部偏移投票的方法对传感器噪声和点云密度不均匀的鲁棒性比端到端回归要好这使它很适合部署在实际机械臂系统上。我在自己搭视觉分拣小系统时遇到过箱子中物体互相挤压导致位姿不确定的场景把背景过滤和置信度聚合做扎实之后成功率提升比换更大模型更明显。作为一个论文笔记PVN3D值得反复读的地方并不是某个花哨模块而是它对感知与几何如何分工这个根本问题的处理方式。它证明了谨慎地设计输出表达让网络做自己擅长的事情其余交给可靠几何算法往往比让网络自带所有能力更有效。如果你正在做机器人抓取、增强现实或者自动驾驶的三维感知这篇论文中的设计思路是一个非常好用的参考坐标准绳。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑