CVPR 2022 论文链接
源代码:Github

1 速读

1.1 论文试图解决什么问题?这是否是一个新的问题?

试图解决:基于PnPDE的单目物体位姿估计,需要获得图像中点的3D深度(通过深度网络之类的方法)以及2D-3D之间的关联,然后通过PnP求解得到物体位姿;而PnP本质上不可导,使得无法通过反向传播位姿的误差训练网络;
文章通过将求解位姿转换为预测位姿的概率密度解决这一问题,实现了基于位姿真值的端到端训练网络学习2D-3D关联;

在端到端训练PnP求解位姿网络不是新问题,但是以往方法对PnP的处理无法解决PnP不可导带来的收敛问题;
文章解决的新问题为:在没有形状先验的情况下,通过位姿误差直接端到端地训练得到2D-3D关联及权重系数;

1.2 有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员?

①直接位姿预测(显式方法):一个前馈网络需要预测:深度+图像上的投影位置+物体朝向(等信息),利用标注的物体真实位姿计算损失函数,完成端到端训练
显式的方法中,物体系到相机系的转化包含在了网络结果中,这导致网络解释性差+容易过拟合;

②基于PnP的位姿估计方法(隐式方法):需要给出图像坐标系下N个2D点+物体坐标系下N个3D点+各对点的关联权重(网络或者传统方法给出),通过2D-3D匹配求解最优位姿
显示的方法中,现有的神经网络策略集中在获取更准确的2D-3D的匹配关系,从而确保PnP的结果足够精确,这存在一个问题即:希望得到最优的位姿而解决方式是通过一个Surrogate loss中间损失函数完成;
同样有网络尝试从端到端优化这个问题,但是由于argmin函数不可导的性质,导致这个过程是不稳定的;


③基于概率的深度学习:略过,作者主要提及Softmax,因为文章将其推广到连续域

1.3 文章的贡献是什么?

①提出了用于端到端位姿估计的概率PnP层:EPro-PnP,将不可微的确定PnP操作转化为可微的概率层
②提出的EPro-PnP可嵌入到基于PnP的工程中,也可以通过论文的思路灵活设计2D-3D关联网络
③将离散SoftMax拓展到连续域的思路,可以推广到其他嵌套了优化层的网络

1.4 文章解决方案的关键是什么

核心在于:将PnP位姿优化问题转变为预测位姿概率密度的问题
①将离散分类SoftMax引入连续域;
②通过最小化预测位姿和目标位姿构成的KL散度学习2D-3D之间的对应关系和权重;

1.5 实验如何设计?实验结果足够论证其效果吗?

1.6 数据集是什么?

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)

1.7 还会存在什么问题?

2 主要内容

任务:给定一张含有 3D 物体投影的图像,确定物体坐标系到相机坐标系的刚体变换
输入:一张图片
输出:由学习到的2D-3D对应关系表出的位姿概率分布

2.1 PnP

确定:图像坐标系下N个2D点+物体坐标系下N个3D点+各对点的关联权重;求解:物体坐标系到图像坐标系的位姿变换
最小化重投影误差得到最优位姿解y:
argminy=12∑i=1N∣∣wi2D∘(π(Rxi3D+t)−xi2d)∣∣2=12∑i=1N∣∣fi(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)||^2yargmin=21i=1N∣∣wi2D(π(Rxi3D+t)xi2d)2=21i=1N∣∣fi(y)2定义最大似然函数p(X∣y)p(X|y)p(Xy),表示事件X(2D-3D匹配)发生的情况下对于位姿y的似然,似然函数最大值处对应最合理的位姿y:
p(X∣y)=exp−12∑i=1N∣∣fi(y)∣∣2p(X|y) = exp -\frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y)||^2p(Xy)=exp21i=1N∣∣fi(y)2在没有任何先验知识的情况下,位姿的后验概率为似然函数的归一化:
p(y∣X)=exp−12∑i=1N∣∣fi(y)∣∣2∫exp−12∑i=1N∣∣fi(y)∣∣2dyp(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(yX)=exp21i=1N∣∣fi(y)2dyexp21i=1N∣∣fi(y)2该位姿后验概率形似SoftMax在连续域上的推广:
SoftMax(αi)=expαi∑jexpαjSoftMax(\alpha_i) = \frac{exp\ \alpha_i}{\sum_j exp\ \alpha_j}SoftMax(αi)=jexpαjexpαi

2.2 KL散度

用于表出误差
KL散度表示两个几率分布P和Q差别的非对称性的度量。一般情况下,用一个近似的分布Q对一个分布P进行建模,如果我们使用 q(x) 来建立一个编码体系,用来把 x 的值传给接收者,那么由于我们使用了q(x)而不是真实分布p(x),平均编码长度比用真实分布p(x)进行编码增加的信息量(单位是 nat )为:
KL(p∣∣q)=−∫p(x)logq(x)p(x)dx=∫p(x)logp(x)dx−∫p(x)logq(x)dxKL(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)dxKL(p∣∣q)=p(x)logp(x)q(x)dx=p(x)logp(x)dxp(x)logq(x)dx用真实的位姿概率分布t(y)t(y)t(y)和构建的位姿概率分布p(y∣X)p(y|X)p(yX)之间的KL散度表示训练误差DKL(t(y)∣∣p(y∣X))D_{KL}(t(y)||p(y|X))DKL(t(y)∣∣p(yX)):(原论文中只有最后一个式子,中间过程为我自己的推导,可能存在问题)
DKL(t(y)∣∣p(y∣X))=∫t(y)logt(y)dy−∫t(y)logp(y∣X)dyD_{KL}(t(y)||p(y|X)) = \int t(y)log\ t(y)dy - \int t(y)log\ p(y|X)dyDKL(t(y)∣∣p(yX))=t(y)logt(y)dyt(y)logp(yX)dy由于第一项是确定值,故损失函数可以不包含这一部分,则有:
LKL=−∫t(y)logp(X∣y)∫p(X∣y)dydyL_{KL}=-\int t(y)log\frac{p(X|y)}{\int p(X|y)dy}dyLKL=t(y)logp(Xy)dyp(Xy)dy=∫t(y)log(∫(p(X∣y)dy)dy−∫t(y)logp(X∣y)dy= \int t(y)log(\int(p(X|y)dy)dy - \int t(y)log\ p(X|y)dy=t(y)log((p(Xy)dy)dyt(y)logp(Xy)dy最终得到由似然表示的损失函数,此时将真实的位姿概率分布设定为一个类似脉冲函数的g.t.,则有:
LKL=−logp(X∣ygt)+log∫p(X∣y)dyL_{KL}= -log\ p(X|y_{gt}) + log\int p(X|y)dyLKL=logp(Xygt)+logp(Xy)dy=12∑i=1N∣∣fi(ygt)∣∣2+log∫exp−12∑i=1N∣∣fi(y)∣∣2dy= \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=1N∣∣fi(ygt)2+logexp21i=1N∣∣fi(y)2dy第一项Ltarget=12∑i=1N∣∣fi(ygt)∣∣2L_{target}=\frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y_{gt})||^2Ltarget=21i=1N∣∣fi(ygt)2表示在目标位姿处的重投影误差,反映了在真值处的表现能力,在其他相似工作的论文中长作为损失函数
第二项Lpredict=log∫exp−12∑i=1N∣∣fi(y)∣∣2dyL_{predict}=log\int exp-\frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y)||^2dyLpredict=logexp21i=1N∣∣fi(y)2dy对应p(y∣X)p(y|X)p(yX)的分母,反映了在各个位姿处的表现能力,是完成端到端训练的关键;

根据链式求导法则,上式loss函数的偏导数形式为:
∂LKL∂(⋅)=∂∂(⋅)12∑i=1N∣∣fi(ygt)∣∣2+1∫exp−12∑i=1N∣∣fi(y)∣∣2dy∗∫exp−12∑i=1N∣∣fi(y)∣∣2∗∂∂(⋅)(−12∑i=1N∣∣fi(y)∣∣2)dy\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=1N∣∣fi(ygt)2+exp21i=1N∣∣fi(y)2dy1exp21i=1N∣∣fi(y)2()(21i=1N∣∣fi(y)2)dy=∂∂(⋅)12∑i=1N∣∣fi(ygt)∣∣2−Ey∼p(y∣X)∂∂(⋅)(12∑i=1N∣∣fi(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=1N∣∣fi(ygt)2yp(yX)E()(21i=1N∣∣fi(y)2)第一项∂∂(⋅)12∑i=1N∣∣fi(ygt)∣∣2\frac{\partial}{\partial(\cdot)} \frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y_{gt})||^2()21i=1N∣∣fi(ygt)2表示在目标位姿处的重投影误差梯度
第二项−Ey∼p(y∣X)∂∂(⋅)(12∑i=1N∣∣fi(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)yp(yX)E()(21i=1N∣∣fi(y)2)表示重投影误差的在预测的位姿分布上的梯度期望
以参数匹配权重wi2Dw_i^{2D}wi2D为例,其关于重投影误差的偏导数为:
∂∂(wi2D)12∑j=1N∣∣fi(y)∣∣2=∂∂(wi2D)12∑j=1N∣∣wj2D∘(π(Rxj3D+t)−xj2d)∣∣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=1N∣∣fi(y)2=(wi2D)21j=1N∣∣wj2D(π(Rxj3D+t)xj2d)2=wi2D∘∣∣π(Rxj3D+t)−xj2d∣∣2= w_i^{2D} \circ ||\pi(Rx_j^{3D}+t)-x_j^{2d}||^2=wi2D∣∣π(Rxj3D+t)xj2d2=wi2D∘ri(y)2= w_i^{2D} \circ r_i(y)^2=wi2Dri(y)2wi2Dw_i^{2D}wi2D关于loss函数的重投影误差的负梯度为:
−∂LKL∂(wi2D)=wi2D∘(−ri(ygt)2+Ey∼p(y∣X)ri(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+yp(yX)Eri(y)2)第一项−ri(ygt)2-r_i(y_{gt})^2ri(ygt)2表示在真值处重投影误差较大的点的权重需要降低,这些点往往对应图像中物体之外的点,对应下图中的uncertainty
第二项Ey∼p(y∣X)ri(y)2)\underset{y\sim p(y|X)}{\mathbb{E}}r_i(y)^2)yp(yX)Eri(y)2)表示在不同位姿处误差变化明显的点的权重需要增加,这些点往往对应图像中物体的边缘,因为这些地方对位姿变化很敏感,对应下图中的discrimination

2.3 Monte Carlo 位姿误差

用于完成积分计算

2.3.1 蒙特卡洛方法

∫abF(x)dx≈1N∑i=1NF(xi)P(xi)\int _a^b F(x)dx \approx \frac{1}{N}\sum \limits_{i=1}^{N}\frac{F(x_i)}{P(x_i)}abF(x)dxN1i=1NP(xi)F(xi)对于正常的积分有:
∫abF(x)dx=limN→∞b−aN∑i=1NF(xi)=limN→∞1N∑i=1NF(xi)1b−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=NlimNbai=1NF(xi)=NlimN1i=1Nba1F(xi)即在蒙特卡洛方法中将P(xi)P(x_i)P(xi)定义为均匀分布且采样次数趋向于无穷时即为积分的定义,由于N无法趋向于无穷,故为积分的近似。
对于概率分布P(xi)P(x_i)P(xi),如果能够给出与F(xi)F(x_i)F(xi)近似的分布函数,可以在相同采样次数N的情况下大大提高近似的精度。

2.3.2 蒙特卡洛位姿误差
对于误差中的第二项用蒙特卡洛方法近似计算积分,vjv_jvj表示位姿yjy_jyj的重要性权重
Lpredict=log∫exp−12∑i=1N∣∣fi(y)∣∣2dyL_{predict}=log\int exp-\frac{1}{2}\sum\limits_{i=1}^{N}||f_i(y)||^2dyLpredict=logexp21i=1N∣∣fi(y)2dy≈log1K∑j=1Nexp−12∑i=1N∣∣fi(y)∣∣2q(yi)=log1K∑j=1Nvj\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_jlogK1j=1Nq(yi)exp21i=1N∣∣fi(y)2=logK1j=1Nvj

2.4 导数正则化

推理过程中仍然需要知道通过PnP直接求解得到的位姿y⋆y^\stary,首先对于计算得到的y⋆y^\stary,通过高斯牛顿方法计算:
Δy=−(JTJ+εI)−1JTF(y⋆)\Delta y = -(J^TJ+\varepsilon I)^{-1}J^TF(y^{\star})Δy=(JTJ+εI)1JTF(y)Δy\Delta yΔyy⋆y^\stary到达局部最小值时应为0,此时利用Δy\Delta yΔy构建正则化误差:
Lreg=l(y⋆+Δy,ygt)L_{reg} = l(y^{\star}+\Delta y, y_{gt})Lreg=l(y+Δy,ygt)即希望Δy\Delta yΔy能够将PnP的解指向真实的位姿;

2.5 网络测试

2.5.1 Dense Correspondence Network

基于CDPN做出小改动,原网络旋转变换R和平移变换T由两个Head给出,作者将其替换为一个head,统一使用PnP计算;
输入:单帧图片,有对应的2d坐标x2Dx^{2D}x2D;
输出:①3D坐标x3Dx^{3D}x3D+②两通道的confidence map(对应x2Dx^{2D}x2D),通过Softmax和global scale得到weight map;
此处②的改动中,Softmax将一个绝对的对应权重转换为一个相对的关系,同时global scale表示了对于预测分布的全局集中度,保证KL散度误差可以更好地收敛,在实验结果中有声明没有softmax不会收敛;

实验结果比较:

2.5.2 Deformable Correspondence Network

基于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、权重、尺寸、速度等);

3 实验结果


3 疑问

①为什么位姿最优解在反向传播中不可导?
答:由于argmin函数是不可导的,如下图所示:
argmin的作用:对于一组2D-3D匹配X,存在一组与pose相关的损失函数,argmin会到达损失函数极小值对应的位姿;
损失函数的特点:由2D-3D匹配X确定,存在多个局部最小值,分别对应多个pose
不可导的体现:在训练过程中,会导致2D-3D匹配变化ΔX\Delta XΔX,这导致损失函数的形状发生变化,当一个局部最小值取代成为全局最小值的时候,argmin对于ΔX\Delta XΔX表现出不连续

②位姿积分是怎么做的?
答:使用蒙特卡洛方法近似;
③怎么用重要性权重更新位姿分布?

④boungding box、深度、尺寸等信息出现的原理是什么?(不是本篇文章的内容)

[文章阅读] EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Points for Monocular Object ...相关推荐

  1. 如何估算文章阅读时长?

    简评:包括 Medium 在内的很多阅读类网站或 App 都有阅读时长的提示,那么这个数值是怎么来的呢? 早些时候,阅读类平台还在野蛮生长. Medium 的工程师写着代码的同时,也在阅读自家平台上的 ...

  2. .Net Discovery系列文章阅读索引--带你探索未知的.Net世界

    .Net Discovery系列文章是讲述.Net平台机制的文章,目前已有12篇,分别讲述了.Net垃圾收集.实时编译.字符串等部件的机制,现在推出1周年之际总结文章阅读索引,希望对大家有所帮助.   ...

  3. “云时代架构”经典文章阅读感想十二

    云时代架构"经典文章阅读感想十二 (牛逼的架构师是怎么炼成的?) 前几周阅读的三四十岁的大龄程序员,应该如何保持自己的职场竞争力?中提到如何在35岁左右可以实现掌握有核心竞争力.其中之一便是 ...

  4. 用户dsn保存位置‘_苹果iOS 13.6终于能保存文章阅读进度了 朋友都等秃了

    几天前,iOS 13.6 Beta 2和iPadOS 13.6 Beta 2发布,据外媒iPhoneHacks消息,苹果此次通过新软件更新对Apple News应用程序进行了改进,更新后的iOS 13 ...

  5. 阅读量PHP设计,zblogPHP如何修改文章阅读量

    很多网站访问量比较少,尤其是对于新站来说,有时发布的文章几天下来阅读量一直上不去,甚至还保留在个位数,这样看起来难免会有些尴尬,如何打破这种尴尬?zblogphp文章阅读量可以修改吗?答案是肯定的,修 ...

  6. python刷阅读_通过python+selenium3实现浏览器刷简书文章阅读量

    准备工作 下载python,本文以python3.6为例.python3.6下载地址:python3下载地址,选择合适的版本安装.安装成功后,打开命令提示符,在其中输入python,显示如下信息,则说 ...

  7. [html] 请实现一个文章阅读的进度条

    [html] 请实现一个文章阅读的进度条 chrome 浏览器中,通过document.documentElement.scrollTop获取页面滚过高度,通过document.documentEle ...

  8. “云时代架构”经典文章阅读感想十六

    云时代架构"经典文章阅读感想十六 (支付宝架构师眼中的高并发架构) 经过这一学期的阅读,看到最多的一个名词就是高并发. 高并发高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒 ...

  9. WordPress文章阅读量统计和显示(非插件, 刷新页面不累加)

    本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发.Nodejs.Python.Linux.IT资讯等板块. WordPress文章阅读 ...

  10. Android--从零开始开发一款文章阅读APP

    代码地址如下: http://www.demodashi.com/demo/11212.html 前言 本案例已经开源!如果你想免费下载,可以访问我的Github,所有案例均在上面,只求给个star. ...

最新文章

  1. ZABBIX(八) Zabbix 通知媒介
  2. 查看mysql当前表使用的存储引擎(转)
  3. 不用额外变量交换两个整数的值
  4. 请问投稿中要求上传的author_SCI 这些投稿状态都是什么意思?审稿人这些“暗语”如何应对?下...
  5. 关于python文件_关于python文件操作
  6. 关于动画培养灵感的网站
  7. A Simple Math Problem
  8. php发表图片文章代码,PHP实现发表文章时自动保存图片_php
  9. PHP 判断用户语言跳转网页
  10. 繁体中文转换为简体中文的PHP函数
  11. sharepoint学习资料-个人博客
  12. 使用Camera的几个步骤
  13. 如何在IDEA中导出jar包
  14. 网页游戏开发入门教程一(webgame+design)
  15. ReviewBoard代码评审实践总结
  16. jav使用python模型实现方案
  17. python计算ln与log,python计算以e为底的对数
  18. 虚假共识—阿比勒尼悖论:“枪打出头鸟”与“事后诸葛亮”
  19. marshmallow——快速入门
  20. (二)硕博生常用的外文文献检索方式推荐

热门文章

  1. 算法中的基础数学知识(一)—初等数论
  2. 22类高频场景词汇-1
  3. 学习LDA主题模型总结
  4. win7和win10系统的安装教程
  5. 125KHz唤醒功能2.4GHz单发射芯片-Si24R2H
  6. 【C++ 程序】 数字推盘游戏(15-puzzle)
  7. 关于hash哈希以及为什么python中dict和set的key必须为不可变对象
  8. K-means 聚类算法的应用案例实战(含代码和图示)
  9. MAC如何打开pdm文件
  10. 简单2D游戏(剪子包袱锤)