跳转到内容
新建笔记

RGB-D 位姿估计:注意力、多尺度特征与置信度

这篇笔记整理 Gao 等人的 Efficient 6D object pose estimation based on attentive multi-scale contextual information(IET Computer Vision,2022)。它在 RGB-D 位姿估计中组合两类信息:用注意力调整颜色与几何特征的权重,再用多尺度分支扩大特征覆盖范围,最后为多个位姿候选预测置信度。

阅读重点是每一维张量表示什么、局部邻域如何形成,以及训练误差与推理置信度怎样衔接。本文保留原笔记的全部图像,同时把公式图片转写为可检索的数学表达;原公式图集中保留在文末供核对。

RGB-D 多尺度上下文特征示意

原论文的多尺度多模态特征示意:同一目标的颜色与几何信息在不同尺度上参与位姿预测。

设模型点为 Xo\mathbf X_o,目标是在相机坐标系中找到

Xc=RXo+t,R∈SO(3).\mathbf X_c=R\mathbf X_o+\mathbf t,\qquad R\in SO(3).

完整齐次变换为

Tc←o=[Rt0T1].T_{c\leftarrow o}= \begin{bmatrix}R&\mathbf t\\\mathbf0^\mathsf T&1\end{bmatrix}.

[R∣t][R\mid\mathbf t] 是外参块,不是完整的 4×44\times4 齐次矩阵。深度、模型和 t\mathbf t 的长度单位必须一致。

对已配准且去畸变的 RGB-D 像素 (ui,vi)(u_i,v_i),若深度是相机光轴方向的 ZiZ_i,可反投影为

pi=ZiK−1[uivi1],P={pi∈R3}i=1N.\mathbf p_i= Z_iK^{-1}\begin{bmatrix}u_i\\v_i\\1\end{bmatrix}, \qquad P=\{\mathbf p_i\in\mathbb R^3\}_{i=1}^{N}.

若传感器给的是沿射线距离,需要先转换成光轴深度。RGB 与深度不在同一相机坐标系时,还需外参对齐。注意力模块无法补偿未经标定的错位。

注意力多尺度位姿估计整体架构

原论文整体结构:目标分割、颜色与点云特征提取、PFAM 注意力、多尺度特征和密集位姿预测。

论文使用已有的目标分割结果,主要研究后续位姿估计。因此评价其“端到端”表述时,应明确是否把分割也纳入共同训练与计时,不能仅凭一张连接完整的结构图作结论。

RGB 方法也可以利用三维模型、相机内参和投影几何,并非完全没有空间信息。RGB-D 的区别是增加了测量深度通道;它也会遇到反光、透明表面、孔洞和边界错配,不能保证所有无纹理目标都能准确估计。

2. 像素与点云特征怎样对应

跳转到“2. 像素与点云特征怎样对应”

颜色编码器输出图像特征,点云编码器输出几何特征。融合前需要知道第 ii 个点来自哪个像素,再抽取相应的颜色特征:

fi=[firgb  ;  figeom].\mathbf f_i= [\mathbf f_i^{\mathrm{rgb}}\;;\; \mathbf f_i^{\mathrm{geom}}].

这里的分号表示沿通道拼接。同一行必须对应同一采样位置;如果点云随机重排而颜色特征未同步重排,网络看到的是错误配对。

为方便阅读,下文一律把张量写为 N×CN\times C:NN 是点或采样位置数,CC 是通道数。实际深度学习框架的一维卷积常使用 B×C×NB\times C\times N,其中 BB 为批量维度,送入层之前需要转置相应轴。

3. PFAM:通道权重与位置权重

跳转到“3. PFAM:通道权重与位置权重”

PFAM 通道与位置注意力结构

PFAM 结构图。通道注意力之后使用不同卷积核的分支及位置权重,图中还画有旁路连接;精确复现时应同时核对图和正文。

设中间特征为 FG∈RN×CF_G\in\mathbb R^{N\times C}。对位置维求平均,得到每个通道的全局摘要:

zc=1N∑i=1N(FG)ic,a=σ(W2ϕ(W1z)).z_c=\frac1N\sum_{i=1}^{N}(F_G)_{ic}, \qquad \mathbf a=\sigma(W_2\phi(W_1\mathbf z)).

a\mathbf a 的形状是 1×C1\times C,沿 NN 个位置广播:

(Fch)ic=(FG)icac.(F_{\mathrm{ch}})_{ic}=(F_G)_{ic}a_c.

所以操作是特征乘以注意力图 A(FG)A(F_G),不是把 FGF_G 与自身相乘。ϕ\phi 表示中间非线性,σ\sigma 是 sigmoid;这个表达强调广播与权重含义,不补写论文未完整给出的层配置。

不同卷积核与位置权重

跳转到“不同卷积核与位置权重”

随后使用核大小为 1 与 3 的一维分支处理特征,并根据分支信息生成位置权重。位置注意力可以用 N×1N\times1 的权重向量表示,再广播到各通道。通道注意力回答“哪些通道更有用”,位置注意力回答“哪些采样位置更有用”。

论文正文描述两个加权分支相加,结构图还呈现了旁路。若只想理解方法,可把它看作多种上下文范围的加权融合;若要逐层重建,必须落实旁路连接点、padding、激活及归一化,不能把概念公式当作已经验证的官方实现。

逐点特征 128 与 256 通道拼接

原论文特征尺寸图:两个分支产生 N×128N\times128 与 N×256N\times256 特征,拼接为 N×384N\times384。

通道拼接得到 128+256=384128+256=384,位置数仍为 NN。它与按位置堆叠不同;后者会改变采样点数量和对应关系。

4. 多尺度分支:尺寸和感受野分别计算

跳转到“4. 多尺度分支:尺寸和感受野分别计算”

设 PFAM 输出 F0∈RN×384F_0\in\mathbb R^{N\times384}。论文接着使用两个核长为 3、步长为 2 的一维卷积,得到三种尺度:

Fs′∈RNs×384,s∈{1,2,3}.F'_s\in\mathbb R^{N_s\times384},\qquad s\in\{1,2,3\}.

对于一维卷积,长度为

Lout=⌊Lin+2p−d(k−1)−1s+1⌋,L_{\mathrm{out}}= \left\lfloor \frac{L_{\mathrm{in}}+2p-d(k-1)-1}{s}+1 \right\rfloor,

其中 pp 是 padding,dd 是 dilation,kk 是核长,ss 是步长。以 k=3,s=2,p=1,d=1k=3,s=2,p=1,d=1 为例,N=500N=500 时依次得到 500、250、125;奇数长度一般不能直接写成精确的 N/2N/2。

尺度位置数(N=500N=500 的示例)局部分支通道相对尺度模块输入的感受野
15003841
22503843
31253847

感受野递推应使用

rℓ=rℓ−1+(kℓ−1)jℓ−1,jℓ=jℓ−1sℓ,r_\ell=r_{\ell-1}+(k_\ell-1)j_{\ell-1}, \qquad j_\ell=j_{\ell-1}s_\ell,

并取 r0=j0=1r_0=j_0=1。这里的结果是 1→3→71\to3\to7,不是每层简单翻倍。它相对于进入多尺度模块的特征计算;前面的图像编码器和 PFAM 已经包含其他上下文。

还有一个更关键的实现问题:序列相邻不自动等于三维空间相邻。 长度为 3 的 Conv1D 沿采样点序列操作;如果采样点任意打乱,相邻索引可能来自物体相距很远的位置。要将其称为局部空间上下文,必须说明点的排列、像素遍历或邻域构造方式。本文核对的论文不足以唯一恢复这一实现策略,因此不替作者补造。

全局特征必须先广播才能拼接

跳转到“全局特征必须先广播才能拼接”

多尺度分支及全局特征尺寸

原论文多尺度特征图:每个尺度的局部特征都与该尺度的全局摘要拼接,形成用于位姿预测的特征。

对每个尺度,用映射 ϕs\phi_s 将通道变为 1024,再对位置求平均:

gs=1Ns∑i=1Nsϕs(Fs,i′)∈R1×1024.\mathbf g_s=\frac1{N_s}\sum_{i=1}^{N_s} \phi_s(F'_{s,i})\in\mathbb R^{1\times1024}.

然后重复到 NsN_s 行,再沿通道拼接:

Fs=concat⁡(Fs′,repeat⁡(gs,Ns))∈RNs×1408.F_s= \operatorname{concat} \left( F'_s,\operatorname{repeat}(\mathbf g_s,N_s) \right) \in\mathbb R^{N_s\times1408}.

1408=384+10241408=384+1024。省略 repeat 的紧凑公式只是在默认广播规则,不表示 Ns×384N_s\times384 可以直接和 1×10241\times1024 任意拼接。加入全局分支后,最终特征已包含全体采样位置的信息,不能再把整条输出分支的感受野只写成 3 或 7。

5. 每个候选如何计算位姿误差

跳转到“5. 每个候选如何计算位姿误差”

不同尺度和位置产生候选 (R^i,s,t^i,s)(\hat R_{i,s},\hat{\mathbf t}_{i,s})。设模型采样点为 {Xj}j=1M\{\mathbf X_j\}_{j=1}^{M},则 ADD 型误差为

ei,s=1M∑j=1M∥(R^i,sXj+t^i,s)−(RgtXj+tgt)∥2.e_{i,s}= \frac1M\sum_{j=1}^{M} \left\| (\hat R_{i,s}\mathbf X_j+\hat{\mathbf t}_{i,s}) -(R^{\mathrm{gt}}\mathbf X_j+\mathbf t^{\mathrm{gt}}) \right\|_2.

这里比较同一个模型点在两种位姿下的位置。对称物体可能存在外观或几何等价的旋转,因此常使用最近点版本:

ei,ssym=1M∑j=1Mmin⁡k∥(R^i,sXj+t^i,s)−(RgtXk+tgt)∥2.e_{i,s}^{\mathrm{sym}}= \frac1M\sum_{j=1}^{M}\min_k \left\| (\hat R_{i,s}\mathbf X_j+\hat{\mathbf t}_{i,s}) -(R^{\mathrm{gt}}\mathbf X_k+\mathbf t^{\mathrm{gt}}) \right\|_2.

ADD-S 减弱了一一对应的限制,但不代表对所有对象的可辨识旋转都有完美定义。例如一个纹理可区分、几何近似对称的对象,是否允许等价旋转还与任务有关。

这也解释了为何要区分“关键点刚体拟合”和 ICP:FFB6D 这类方法可以对已知对应的三维关键点做最小二乘配准;ICP 则包含反复更新最近邻对应的过程,二者不是同义词。旧笔记把 PVN3D 的关键点位姿求解写成 ICP,容易误导算法比较。

6. 置信度损失究竟学到了什么

跳转到“6. 置信度损失究竟学到了什么”

设候选置信度为 ci,s∈(0,1]c_{i,s}\in(0,1],所有尺度候选总数为 Npred=∑sNsN_{\mathrm{pred}}=\sum_sN_s。用统一索引后的目标写为

L=1Npred∑s∑i=1Ns(ei,sci,s−ωlog⁡ci,s),ω>0.L=\frac1{N_{\mathrm{pred}}} \sum_{s}\sum_{i=1}^{N_s} \left(e_{i,s}c_{i,s}-\omega\log c_{i,s}\right), \qquad \omega>0.

这一写法明确按全部候选计数;复现具体实现仍需核对是否对每个尺度单独归一化或加权。训练时 ei,se_{i,s} 可以由真值计算,推理时通常选择置信度最高的候选:

(i⋆,s⋆)=arg⁡max⁡i,sci,s.(i^\star,s^\star)=\arg\max_{i,s}c_{i,s}.

测试图像没有真值,所以不能在推理时“选择真实误差最小且置信度最高的候选”。

固定误差 e≥0e\ge0,考察单项

ℓ(c)=ec−ωlog⁡c.\ell(c)=ec-\omega\log c.

当 e>0e>0:

ℓ′(c)=e−ωc,ℓ′′(c)=ωc2>0,c⋆=min⁡(1,ω/e).\ell'(c)=e-\frac{\omega}{c},\qquad \ell''(c)=\frac{\omega}{c^2}>0,\qquad c^\star=\min(1,\omega/e).

当 e=0e=0,损失随 cc 增大而减小,最优值位于 c=1c=1。若用 sigmoid,1 只能作为极限。对数项会惩罚把所有候选置信度压到零的做法,但置信度仍是依赖 ω\omega 和误差尺度的分数,不自动是经过概率校准的正确率。

若长度单位从米改成毫米,误差乘以 1000。为了保持这个单项最优置信度不变,ω\omega 也需乘以 1000。只改数据单位而保持系数不变,会改变训练目标的相对权重。

可运行的损失与尺寸检查

跳转到“可运行的损失与尺寸检查”

下面是独立的 NumPy 教学示例,不包含论文网络或训练权重。

import numpy as np
def optimum_confidence(errors, omega):
e = np.asarray(errors, dtype=float)
if not np.all(np.isfinite(e)) or np.any(e < 0):
raise ValueError("Errors must be finite and nonnegative")
if not np.isfinite(omega) or omega <= 0:
raise ValueError("Omega must be finite and positive")
c = np.ones_like(e)
np.divide(omega, e, out=c, where=e > 0)
return np.minimum(c, 1.0)
errors_m = np.array([0.0, 0.005, 0.03, 0.15])
confidence = optimum_confidence(errors_m, 0.015)
assert np.allclose(confidence, [1.0, 1.0, 0.5, 0.1])
assert np.allclose(
confidence, optimum_confidence(errors_m * 1000, 15.0)
)
length, receptive_field, jump = 500, 1, 1
shapes = [(length, 384, receptive_field)]
for _ in range(2):
kernel, stride, padding = 3, 2, 1
length = (length + 2 * padding - (kernel - 1) - 1) // stride + 1
receptive_field += (kernel - 1) * jump
jump *= stride
shapes.append((length, 384, receptive_field))
assert shapes == [(500, 384, 1), (250, 384, 3), (125, 384, 7)]
assert 384 + 1024 == 1408
print("confidence, units and multiscale shapes: OK")

这个函数给出固定误差下的解析最优值,用于理解训练目标。实际网络中的误差和置信度共享参数,不会在每个训练步骤直接运行此函数作为预测器。

7. 论文实验的结论与边界

跳转到“7. 论文实验的结论与边界”

原论文第 4.3 节记录了以下训练设置:

项目论文记录
框架与优化器PyTorch、Adam
初始学习率0.001
最大迭代数500(原文为 iterations,未据此换算为 epoch)
批量大小16
置信度系数 ω\omega0.015
每个目标的采样位置数 NN500

原文 CPU 为 Xeon Gold 5115,但 GPU 型号文字存在歧义,因此这里不据其推定准确的 GPU 配置。上述数值是论文记录,不是本笔记重新训练采用的参数。

复杂场景中的位姿估计定性结果

原论文定性结果:多行场景中模型投影与对象位置的对照。此图是预测可视化,不是 ADD 公式的一部分。

LineMOD 方法比较表

原论文 LineMOD 对比表。数值用于理解作者报告的实验,本文没有重新训练模型。

原表平均值为 94.6,DenseFusion 加细化为 94.3,两者相差 0.3 个百分点。这不是“相对提升 0.3%”,也不意味着每个物体都改善。评价还需要一致的分割输入、模型采样、对称对象设置和阈值。

19 FPS 与 16 FPS 等速度对比表

原论文速度对比表:本文方法 19 FPS,对照的 DenseFusion 细化版本 16 FPS。

若仅根据表中数值计算:

19−1616=18.75%,1/16−1/191/16≈15.79%.\frac{19-16}{16}=18.75\%, \qquad \frac{1/16-1/19}{1/16}\approx15.79\%.

前者是吞吐量增加,后者是单帧时间减少,二者不能互换。对应单帧约 52.63 ms 与 62.5 ms。它们属于论文的硬件与计时设置,不是当前电脑测得的速度;若要工程选型,应重新计入数据读取、分割、预处理及多对象推理。

YCB-Video AUC 与 2 cm 阈值结果表

原论文 YCB-Video 结果表,同时列出 AUC 与误差小于 2 cm 的结果。

表中该方法的 AUC 为 85.1,PoseCNN+ICP 为 86.6;误差小于 2 cm 的结果则为 83.7 与 79.9。不同指标给出了不同排序,因此不应改写成所有指标均达到最优。AUC 还必须结合原评测协议中的阈值上限与归一化理解,不能把它当作“小于 2 cm 的比例”。

分割掩码与位姿性能曲线

原论文的分割掩码示例及相应性能曲线。该组合图用于讨论分割质量对结果的影响,不是一张 PFAM 模块消融表。

分割错误会改变参与融合的点集合。背景混入会让颜色与几何特征受到污染,目标缺失则会减少可见证据。注意力可以学习抑制部分干扰,但不能保证恢复完全缺失的目标信息。

8. 复现前需要明确的实现细节

跳转到“8. 复现前需要明确的实现细节”

目前本文没有确认到能完整对应论文的官方实现。可从结构图理解各模块,但训练复现至少还需固定:

  • RGB-D 标定、深度有效范围、单位和点采样方式;
  • 点序列如何排列,以及 Conv1D 邻域与空间邻域的关系;
  • PFAM 旁路、padding、各分支的归一化与融合位置;
  • 每个尺度的候选计数、损失归一化、旋转表示与置信度系数;
  • 分割来源、数据划分、对称物体处理和完整推理计时范围。

这篇方法与 FFB6D 的重点不同:前者从密集特征直接产生多个位姿候选,后者预测三维关键点后做几何拟合。与 DGECN 相比,它使用输入的 RGB-D 信息,而不是从单目 RGB 先估计深度。比较实验时应保持输入模态与评价协议一致。

以下六幅公式图来自原笔记,保留用于追溯。正文已用统一符号重新表达,图中的旧符号不改变本文约定。

原点云集合公式图

原点云集合公式,对应正文 P={pi}i=1NP=\{\mathbf p_i\}_{i=1}^{N}。

原三尺度特征集合公式图

原多尺度特征集合公式,对应三个尺度的 Fs′F'_s。

原局部与全局特征融合公式图

原局部与全局特征融合公式;正文显式写出了全局特征的重复操作。

原 ADD 位姿误差公式图

原 ADD 型候选位姿误差公式。

原 ADD-S 最近点误差公式图

原对称对象最近点误差公式。

原置信度加权损失公式图

原置信度加权损失公式;正文统一了候选索引与总数定义。

  • 原论文全文:Efficient 6D object pose estimation based on attentive multi-scale contextual information,IET Computer Vision,16(7),596–606,2022,DOI 10.1049/cvi2.12101。
  • CSDN 原笔记:首次发布于 2022-08-19。图像及论文实验归原作者;本文重新组织解释,新增尺寸、感受野与置信度推导。