CVPR 2022 论文链接
源代码:Github
试图解决:基于PnPDE的单目物体位姿估计,需要获得图像中点的3D深度(通过深度网络之类的方法)以及2D-3D之间的关联,然后通过PnP求解得到物体位姿;而PnP本质上不可导,使得无法通过反向传播位姿的误差训练网络;
文章通过将求解位姿转换为预测位姿的概率密度解决这一问题,实现了基于位姿真值的端到端训练网络学习2D-3D关联;
在端到端训练PnP求解位姿网络不是新问题,但是以往方法对PnP的处理无法解决PnP不可导带来的收敛问题;
文章解决的新问题为:在没有形状先验的情况下,通过位姿误差直接端到端地训练得到2D-3D关联及权重系数;
①直接位姿预测(显式方法):一个前馈网络需要预测:深度+图像上的投影位置+物体朝向(等信息),利用标注的物体真实位姿计算损失函数,完成端到端训练
显式的方法中,物体系到相机系的转化包含在了网络结果中,这导致网络解释性差+容易过拟合;
②基于PnP的位姿估计方法(隐式方法):需要给出图像坐标系下N个2D点+物体坐标系下N个3D点+各对点的关联权重(网络或者传统方法给出),通过2D-3D匹配求解最优位姿
显示的方法中,现有的神经网络策略集中在获取更准确的2D-3D的匹配关系,从而确保PnP的结果足够精确,这存在一个问题即:希望得到最优的位姿而解决方式是通过一个Surrogate loss中间损失函数完成;
同样有网络尝试从端到端优化这个问题,但是由于argmin函数不可导的性质,导致这个过程是不稳定的;
③基于概率的深度学习:略过,作者主要提及Softmax,因为文章将其推广到连续域
①提出了用于端到端位姿估计的概率PnP层:EPro-PnP,将不可微的确定PnP操作转化为可微的概率层
②提出的EPro-PnP可嵌入到基于PnP的工程中,也可以通过论文的思路灵活设计2D-3D关联网络
③将离散SoftMax拓展到连续域的思路,可以推广到其他嵌套了优化层的网络
核心在于:将PnP位姿优化问题转变为预测位姿概率密度的问题
①将离散分类SoftMax引入连续域;
②通过最小化预测位姿和目标位姿构成的KL散度学习2D-3D之间的对应关系和权重;
LineMOD数据集:13条序列共1200张图片,每个object对应一个6DOF位姿
划分:每个物体200张图片用于训练;
误差指标:ADD(-S) 和 n°, n cm
nuScenes数据集:1000条序列,每条序列40张关键帧,每个关键帧有来自环视相机的6张RGB图,包含覆盖10种类别的超过140万个3D bounding box
划分:700/150/150 对应 训练/验证/测试
误差指标:mAP、Average Translation Error (ATE), Average Scale Error (ASE), Average Orientation Error (AOE), Average Velocity Error (AVE) and Average Attribute Error (AAE). Finally, there is a nuScenes detection score (NDS)
任务:给定一张含有 3D 物体投影的图像,确定物体坐标系到相机坐标系的刚体变换
输入:一张图片
输出:由学习到的2D-3D对应关系表出的位姿概率分布
确定:图像坐标系下N个2D点+物体坐标系下N个3D点+各对点的关联权重;求解:物体坐标系到图像坐标系的位姿变换
最小化重投影误差得到最优位姿解y:
a r g m i n y = 1 2 ∑ i = 1 N ∣ ∣ w i 2 D ∘ ( π ( R x i 3 D + t ) − x i 2 d ) ∣ ∣ 2 = 1 2 ∑ i = 1 N ∣ ∣ f i ( y ) ∣ ∣ 2 \underset{y}{argmin} = \frac{1}{2}\sum\limits_{i=1}^{N}||w_i^{2D}\circ(\pi(Rx_i^{3D}+t)-x_i^{2d})||^2 = \frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y)||^2 yargmin=21i=1∑N∣∣wi2D∘(π(Rxi3D+t)−xi2d)∣∣2=21i=1∑N∣∣fi(y)∣∣2定义最大似然函数 p ( X ∣ y ) p(X|y) p(X∣y),表示事件X(2D-3D匹配)发生的情况下对于位姿y的似然,似然函数最大值处对应最合理的位姿y:
p ( X ∣ y ) = e x p − 1 2 ∑ i = 1 N ∣ ∣ f i ( y ) ∣ ∣ 2 p(X|y) = exp -\frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y)||^2 p(X∣y)=exp−21i=1∑N∣∣fi(y)∣∣2在没有任何先验知识的情况下,位姿的后验概率为似然函数的归一化:
p ( y ∣ X ) = e x p − 1 2 ∑ i = 1 N ∣ ∣ f i ( y ) ∣ ∣ 2 ∫ e x p − 1 2 ∑ i = 1 N ∣ ∣ f i ( y ) ∣ ∣ 2 d y p(y|X) = \frac{exp-\frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y)||^2}{\int exp -\frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y)||^2\ dy} p(y∣X)=∫exp−21i=1∑N∣∣fi(y)∣∣2 dyexp−21i=1∑N∣∣fi(y)∣∣2该位姿后验概率形似SoftMax在连续域上的推广:
S o f t M a x ( α i ) = e x p α i ∑ j e x p α j SoftMax(\alpha_i) = \frac{exp\ \alpha_i}{\sum_j exp\ \alpha_j} SoftMax(αi)=∑jexp αjexp αi
用于表出误差
KL散度表示两个几率分布P和Q差别的非对称性的度量。一般情况下,用一个近似的分布Q对一个分布P进行建模,如果我们使用 q(x) 来建立一个编码体系,用来把 x 的值传给接收者,那么由于我们使用了q(x)而不是真实分布p(x),平均编码长度比用真实分布p(x)进行编码增加的信息量(单位是 nat )为:
K L ( p ∣ ∣ q ) = − ∫ p ( x ) l o g q ( x ) p ( x ) d x = ∫ p ( x ) l o g p ( x ) d x − ∫ p ( x ) l o g q ( x ) d x KL(p||q) = -\int p(x)log\frac{q(x)}{p(x)}dx = \int p(x)log\ p(x) dx -\int p(x)log\ q(x)dx KL(p∣∣q)=−∫p(x)logp(x)q(x)dx=∫p(x)log p(x)dx−∫p(x)log q(x)dx用真实的位姿概率分布 t ( y ) t(y) t(y)和构建的位姿概率分布 p ( y ∣ X ) p(y|X) p(y∣X)之间的KL散度表示训练误差 D K L ( t ( y ) ∣ ∣ p ( y ∣ X ) ) D_{KL}(t(y)||p(y|X)) DKL(t(y)∣∣p(y∣X)):(原论文中只有最后一个式子,中间过程为我自己的推导,可能存在问题)
D K L ( t ( y ) ∣ ∣ p ( y ∣ X ) ) = ∫ t ( y ) l o g t ( y ) d y − ∫ t ( y ) l o g p ( y ∣ X ) d y D_{KL}(t(y)||p(y|X)) = \int t(y)log\ t(y)dy - \int t(y)log\ p(y|X)dy DKL(t(y)∣∣p(y∣X))=∫t(y)log t(y)dy−∫t(y)log p(y∣X)dy由于第一项是确定值,故损失函数可以不包含这一部分,则有:
L K L = − ∫ t ( y ) l o g p ( X ∣ y ) ∫ p ( X ∣ y ) d y d y L_{KL}=-\int t(y)log\frac{p(X|y)}{\int p(X|y)dy}dy LKL=−∫t(y)log∫p(X∣y)dyp(X∣y)dy = ∫ t ( y ) l o g ( ∫ ( p ( X ∣ y ) d y ) d y − ∫ t ( y ) l o g p ( X ∣ y ) d y = \int t(y)log(\int(p(X|y)dy)dy - \int t(y)log\ p(X|y)dy =∫t(y)log(∫(p(X∣y)dy)dy−∫t(y)log p(X∣y)dy最终得到由似然表示的损失函数,此时将真实的位姿概率分布设定为一个类似脉冲函数的g.t.,则有:
L K L = − l o g p ( X ∣ y g t ) + l o g ∫ p ( X ∣ y ) d y L_{KL}= -log\ p(X|y_{gt}) + log\int p(X|y)dy LKL=−log p(X∣ygt)+log∫p(X∣y)dy = 1 2 ∑ i = 1 N ∣ ∣ f i ( y g t ) ∣ ∣ 2 + l o g ∫ e x p − 1 2 ∑ i = 1 N ∣ ∣ f i ( y ) ∣ ∣ 2 d y = \frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y_{gt})||^2 + log\int exp-\frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y)||^2dy =21i=1∑N∣∣fi(ygt)∣∣2+log∫exp−21i=1∑N∣∣fi(y)∣∣2dy第一项 L t a r g e t = 1 2 ∑ i = 1 N ∣ ∣ f i ( y g t ) ∣ ∣ 2 L_{target}=\frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y_{gt})||^2 Ltarget=21i=1∑N∣∣fi(ygt)∣∣2表示在目标位姿处的重投影误差,反映了在真值处的表现能力,在其他相似工作的论文中长作为损失函数
第二项 L p r e d i c t = l o g ∫ e x p − 1 2 ∑ i = 1 N ∣ ∣ f i ( y ) ∣ ∣ 2 d y L_{predict}=log\int exp-\frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y)||^2dy Lpredict=log∫exp−21i=1∑N∣∣fi(y)∣∣2dy对应 p ( y ∣ X ) p(y|X) p(y∣X)的分母,反映了在各个位姿处的表现能力,是完成端到端训练的关键;
根据链式求导法则,上式loss函数的偏导数形式为:
∂ L K L ∂ ( ⋅ ) = ∂ ∂ ( ⋅ ) 1 2 ∑ i = 1 N ∣ ∣ f i ( y g t ) ∣ ∣ 2 + 1 ∫ e x p − 1 2 ∑ i = 1 N ∣ ∣ f i ( y ) ∣ ∣ 2 d y ∗ ∫ e x p − 1 2 ∑ i = 1 N ∣ ∣ f i ( y ) ∣ ∣ 2 ∗ ∂ ∂ ( ⋅ ) ( − 1 2 ∑ i = 1 N ∣ ∣ f i ( y ) ∣ ∣ 2 ) d y \frac{\partial L_{KL}}{\partial(\cdot)} = \frac{\partial}{\partial(\cdot)} \frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y_{gt})||^2 + \frac{1}{\int exp-\frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y)||^2dy}*\int exp-\frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y)||^2\ *\frac{\partial}{\partial(\cdot)}(-\frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y)||^2)dy ∂(⋅)∂LKL=∂(⋅)∂21i=1∑N∣∣fi(ygt)∣∣2+∫exp−21i=1∑N∣∣fi(y)∣∣2dy1∗∫exp−21i=1∑N∣∣fi(y)∣∣2 ∗∂(⋅)∂(−21i=1∑N∣∣fi(y)∣∣2)dy = ∂ ∂ ( ⋅ ) 1 2 ∑ i = 1 N ∣ ∣ f i ( y g t ) ∣ ∣ 2 − E y ∼ p ( y ∣ X ) ∂ ∂ ( ⋅ ) ( 1 2 ∑ i = 1 N ∣ ∣ f i ( y ) ∣ ∣ 2 ) = \frac{\partial}{\partial(\cdot)} \frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y_{gt})||^2 - \underset{y\sim p(y|X)}{\mathbb{E}}\frac{\partial}{\partial(\cdot)}(\frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y)||^2) =∂(⋅)∂21i=1∑N∣∣fi(ygt)∣∣2−y∼p(y∣X)E∂(⋅)∂(21i=1∑N∣∣fi(y)∣∣2)第一项 ∂ ∂ ( ⋅ ) 1 2 ∑ i = 1 N ∣ ∣ f i ( y g t ) ∣ ∣ 2 \frac{\partial}{\partial(\cdot)} \frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y_{gt})||^2 ∂(⋅)∂21i=1∑N∣∣fi(ygt)∣∣2表示在目标位姿处的重投影误差梯度;
第二项 − E y ∼ p ( y ∣ X ) ∂ ∂ ( ⋅ ) ( 1 2 ∑ i = 1 N ∣ ∣ f i ( y ) ∣ ∣ 2 ) - \underset{y\sim p(y|X)}{\mathbb{E}}\frac{\partial}{\partial(\cdot)}(\frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y)||^2) −y∼p(y∣X)E∂(⋅)∂(21i=1∑N∣∣fi(y)∣∣2)表示重投影误差的在预测的位姿分布上的梯度期望;
以参数匹配权重 w i 2 D w_i^{2D} wi2D为例,其关于重投影误差的偏导数为:
∂ ∂ ( w i 2 D ) 1 2 ∑ j = 1 N ∣ ∣ f i ( y ) ∣ ∣ 2 = ∂ ∂ ( w i 2 D ) 1 2 ∑ j = 1 N ∣ ∣ w j 2 D ∘ ( π ( R x j 3 D + t ) − x j 2 d ) ∣ ∣ 2 \frac{\partial}{\partial(w_i^{2D})}\frac{1}{2}\sum\limits_{j=1}^{N}||f_i(y)||^2 = \frac{\partial}{\partial(w_i^{2D})}\frac{1}{2}\sum\limits_{j=1}^{N}||w_j^{2D}\circ(\pi(Rx_j^{3D}+t)-x_j^{2d})||^2 ∂(wi2D)∂21j=1∑N∣∣fi(y)∣∣2=∂(wi2D)∂21j=1∑N∣∣wj2D∘(π(Rxj3D+t)−xj2d)∣∣2 = w i 2 D ∘ ∣ ∣ π ( R x j 3 D + t ) − x j 2 d ∣ ∣ 2 = w_i^{2D} \circ ||\pi(Rx_j^{3D}+t)-x_j^{2d}||^2 =wi2D∘∣∣π(Rxj3D+t)−xj2d∣∣2 = w i 2 D ∘ r i ( y ) 2 = w_i^{2D} \circ r_i(y)^2 =wi2D∘ri(y)2有 w i 2 D w_i^{2D} wi2D关于loss函数的重投影误差的负梯度为:
− ∂ L K L ∂ ( w i 2 D ) = w i 2 D ∘ ( − r i ( y g t ) 2 + E y ∼ p ( y ∣ X ) r i ( y ) 2 ) -\frac{\partial L_{KL}}{\partial(w_i^{2D})}= w_i^{2D} \circ (-r_i(y_{gt})^2+\underset{y\sim p(y|X)}{\mathbb{E}}r_i(y)^2) −∂(wi2D)∂LKL=wi2D∘(−ri(ygt)2+y∼p(y∣X)Eri(y)2)第一项 − r i ( y g t ) 2 -r_i(y_{gt})^2 −ri(ygt)2表示在真值处重投影误差较大的点的权重需要降低,这些点往往对应图像中物体之外的点,对应下图中的uncertainty;
第二项 E y ∼ p ( y ∣ X ) r i ( y ) 2 ) \underset{y\sim p(y|X)}{\mathbb{E}}r_i(y)^2) y∼p(y∣X)Eri(y)2)表示在不同位姿处误差变化明显的点的权重需要增加,这些点往往对应图像中物体的边缘,因为这些地方对位姿变化很敏感,对应下图中的discrimination;
用于完成积分计算
∫ a b F ( x ) d x ≈ 1 N ∑ i = 1 N F ( x i ) P ( x i ) \int _a^b F(x)dx \approx \frac{1}{N}\sum \limits_{i=1}^{N}\frac{F(x_i)}{P(x_i)} ∫abF(x)dx≈N1i=1∑NP(xi)F(xi)对于正常的积分有:
∫ a b F ( x ) d x = l i m N → ∞ b − a N ∑ i = 1 N F ( x i ) = l i m N → ∞ 1 N ∑ i = 1 N F ( x i ) 1 b − a \int _a^b F(x)dx = \underset{N\rightarrow\infin}{lim}\frac{b-a}{N}\sum \limits_{i=1}^{N}{F(x_i)}=\underset{N\rightarrow\infin}{lim}\frac{1}{N}\sum \limits_{i=1}^{N}\frac{F(x_i)}{\frac{1}{b-a}} ∫abF(x)dx=N→∞limNb−ai=1∑NF(xi)=N→∞limN1i=1∑Nb−a1F(xi)即在蒙特卡洛方法中将 P ( x i ) P(x_i) P(xi)定义为均匀分布且采样次数趋向于无穷时即为积分的定义,由于N无法趋向于无穷,故为积分的近似。
对于概率分布 P ( x i ) P(x_i) P(xi),如果能够给出与 F ( x i ) F(x_i) F(xi)近似的分布函数,可以在相同采样次数N的情况下大大提高近似的精度。
2.3.2 蒙特卡洛位姿误差
对于误差中的第二项用蒙特卡洛方法近似计算积分, v j v_j vj表示位姿 y j y_j yj的重要性权重
L p r e d i c t = l o g ∫ e x p − 1 2 ∑ i = 1 N ∣ ∣ f i ( y ) ∣ ∣ 2 d y L_{predict}=log\int exp-\frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y)||^2dy Lpredict=log∫exp−21i=1∑N∣∣fi(y)∣∣2dy ≈ l o g 1 K ∑ j = 1 N e x p − 1 2 ∑ i = 1 N ∣ ∣ f i ( y ) ∣ ∣ 2 q ( y i ) = l o g 1 K ∑ j = 1 N v j \approx log \frac{1}{K}\sum \limits_{j=1}^{N}\frac{exp-\frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y)||^2}{q(y_i)}=log\frac{1}{K}\sum \limits_{j=1}^{N}v_j ≈logK1j=1∑Nq(yi)exp−21i=1∑N∣∣fi(y)∣∣2=logK1j=1∑Nvj
推理过程中仍然需要知道通过PnP直接求解得到的位姿 y ⋆ y^\star y⋆,首先对于计算得到的 y ⋆ y^\star y⋆,通过高斯牛顿方法计算:
Δ y = − ( J T J + ε I ) − 1 J T F ( y ⋆ ) \Delta y = -(J^TJ+\varepsilon I)^{-1}J^TF(y^{\star}) Δy=−(JTJ+εI)−1JTF(y⋆) Δ y \Delta y Δy在 y ⋆ y^\star y⋆到达局部最小值时应为0,此时利用 Δ y \Delta y Δy构建正则化误差:
L r e g = l ( y ⋆ + Δ y , y g t ) L_{reg} = l(y^{\star}+\Delta y, y_{gt}) Lreg=l(y⋆+Δy,ygt)即希望 Δ y \Delta y Δy能够将PnP的解指向真实的位姿;
基于CDPN做出小改动,原网络旋转变换R和平移变换T由两个Head给出,作者将其替换为一个head,统一使用PnP计算;
输入:单帧图片,有对应的2d坐标 x 2 D x^{2D} x2D;
输出:①3D坐标 x 3 D x^{3D} x3D+②两通道的confidence map(对应 x 2 D x^{2D} x2D),通过Softmax和global scale得到weight map;
此处②的改动中,Softmax将一个绝对的对应权重转换为一个相对的关系,同时global scale表示了对于预测分布的全局集中度,保证KL散度误差可以更好地收敛,在实验结果中有声明没有softmax不会收敛;
实验结果比较:
基于FCOS3D做出更改,FCOS3D是一个one-stage detector直接生成一系列信息,作者保留head的结果用于生成object queries(embedding point+reference point)而不是直接预测位姿;
一个多头的attention layer从稠密的特征中采样得到point特征,然后聚合成object特征;
point特征经过一个subnet预测出3D点和对应的权重,其中3D点坐标是在归一化的object坐标系下的,没有尺度;
object特征用于预测object级别的参数(3D定位socre、权重、尺寸、速度等);
①为什么位姿最优解在反向传播中不可导?
答:由于argmin函数是不可导的,如下图所示:
argmin的作用:对于一组2D-3D匹配X,存在一组与pose相关的损失函数,argmin会到达损失函数极小值对应的位姿;
损失函数的特点:由2D-3D匹配X确定,存在多个局部最小值,分别对应多个pose
不可导的体现:在训练过程中,会导致2D-3D匹配变化 Δ X \Delta X ΔX,这导致损失函数的形状发生变化,当一个局部最小值取代成为全局最小值的时候,argmin对于 Δ X \Delta X ΔX表现出不连续
②位姿积分是怎么做的?
答:使用蒙特卡洛方法近似;
③怎么用重要性权重更新位姿分布?
④boungding box、深度、尺寸等信息出现的原理是什么?(不是本篇文章的内容)