澳大利亚国立大学,澳大利亚机器人视觉中心

本文解决的问题:BLind Perspective-n-Point(BPnP)

与Perspective-n-Point(PnP) 问题的区别在于PnP是已知2D与3D点之间的匹配关系的,而BPnP问题只有给定的2D点集和3D点集。因此BPnP需要额外求解一个匹配关系矩阵。

论文使用深度声明层将RANSAC结合到BPnP求解网络中,提出了第一个完全端到端可训练网路来解决BPnP问题

什么是深度声明层?

应该是在《deep declarative networks: A new hope》中首先提出的,与常见的具有显式前向函数、可以逐步进行梯度计算的命令层(如卷积层就是命令层)相对应。

声明层以优化目标函数的形式计算输出值,相比于命令层网络的逐层求梯度反向传播,其梯度计算是一步得到的,且允许递归或不可微算子存在,只要保证最后一个前向层是可微的。具体见其论文。

网络架构:

  • 数据预处理:将3D点云p∈R3\mathbf{p} \in \mathbb{R}^{3}p∈R3进行输入变换以规范其朝向。(借鉴了PoseNet);2D点是以三维方位向量f∈R3\mathbf{f} \in \mathbb{R}^{3}f∈R3的形式表示:∥f∥=1\|\mathbf{f}\|=1∥f∥=1 且 f∝K−1[u,v,1]⊤\mathbf{f} \propto \mathbf{K}^{-1}[u, v, 1]^{\top}f∝K−1[u,v,1]⊤,在此基础上对f除以Z轴坐标转为2D点,以减少网络参数量。

  • 特征提取:将P和f输入到各自的特征提取网络中,得到128维度的特征Zp和Zf.

    特征提取器使用了论文《learning to findgood correspondence》

  • 计算匹配概率:首先计算L2距离矩阵M:Mij=∥zfi−zpj∥2\mathbf{M}_{i j}=\left\|\mathbf{z}_{\mathbf{f}_{i}}-\mathbf{z}_{\mathbf{p}_{j}}\right\|_{2}Mij​=∥∥​zfi​​−zpj​​∥∥​2​,Mij表示第i个2D点与第j个3D点之间的特征距离。然后使用 Sinkhorn 算法求解运输问题得到匹配概率矩阵P。

    • Sinkhorn 算法是在声明层中封装的:输入M,输出P

      该层优化的目标函数:
      f(M,P)=∑i=1m∑j=1n(MijPij+μPij(log⁡Pij−1))其中U(r,c)={P∈R+m×n∣P1n=r,P⊤1m=c}f(\mathbf{M}, \mathbf{P})=\sum_{i=1}^{m} \sum_{j=1}^{n}\left(\mathbf{M}_{i j} \mathbf{P}_{i j}+\mu \mathbf{P}_{i j}\left(\log \mathbf{P}_{i j}-1\right)\right)\\ 其中 \ \ \ U(\mathbf{r}, \mathbf{c})=\left\{\mathbf{P} \in \mathbb{R}_{+}^{m \times n} \mid \mathbf{P} \mathbf{1}^{n}=\mathbf{r}, \mathbf{P}^{\top} \mathbf{1}^{m}=\mathbf{c}\right\}\\ f(M,P)=i=1∑m​j=1∑n​(Mij​Pij​+μPij​(logPij​−1))其中   U(r,c)={P∈R+m×n​∣P1n=r,P⊤1m=c}
      r,c是先验概率, 初始化时使用均匀分布作为先验
      相比于匈牙利算法O(n3),Sinkhorn算法时间复杂度为O(n2)。

      给定最优的概率匹配矩阵P,根据下列公式(引理2)计算P关于M的梯度:

      若:欠约束线性方程组:Au=dy(x)∈arg⁡min⁡uf(x,u)subject to Au=dH=DYY2f(x,y)and B=DXY2f(x,y)则:Dy⁡(x)=(H−1A⊤(AH−1A⊤)−1AH−1−H−1)B若:\\ 欠约束线性方程组: Au=d\\ \mathbf{y}(\mathbf{x}) \in \arg \min _{\mathbf{u}} f(\mathbf{x}, \mathbf{u}) \text { subject to } \mathbf{A} \mathbf{u}=\mathbf{d} \\ \mathbf{H}=\mathrm{D}_{Y Y}^{2} f(\mathbf{x}, \mathbf{y}) \text { and } \mathbf{B}=\mathrm{D}_{X Y}^{2} f(\mathbf{x}, \mathbf{y}) \\ 则:\\ \operatorname{Dy}(\mathbf{x})=\left(\mathbf{H}^{-1} \mathbf{A}^{\top}\left(\mathbf{A} \mathbf{H}^{-1} \mathbf{A}^{\top}\right)^{-1} \mathbf{A} \mathbf{H}^{-1}-\mathbf{H}^{-1}\right) \mathbf{B}若:欠约束线性方程组:Au=dy(x)∈argumin​f(x,u) subject to Au=dH=DYY2​f(x,y) and B=DXY2​f(x,y)则:Dy(x)=(H−1A⊤(AH−1A⊤)−1AH−1−H−1)B
      将这种算法封装在声明层中能够使算法运行到收敛,而不是固定其迭代次数,并且无需展开算法步骤并维护计算图,从而节省了大量的运算量。

  • BPnP优化: 已知匹配概率矩阵P,优化目标函数得到局部最优位姿(R,t)

    目标函数:
    f(P,r,t)=∑i=1m∑j=1nPij(1−fi⊤Rrpj+t∥Rrpj+t∥)f(\mathbf{P}, \mathbf{r}, \mathbf{t})=\sum_{i=1}^{m} \sum_{j=1}^{n} \mathbf{P}_{i j}\left(1-\mathbf{f}_{i}^{\top} \frac{\mathbf{R}_{\mathbf{r}} \mathbf{p}_{j}+\mathbf{t}}{\left\|\mathbf{R}_{\mathbf{r}} \mathbf{p}_{j}+\mathbf{t}\right\|}\right) f(P,r,t)=i=1∑m​j=1∑n​Pij​(1−fi⊤​∥Rr​pj​+t∥Rr​pj​+t​)
    优化算法:pytorch自带的 L-BFGS 算法,关于这个算法,这个博客讲的很清楚。

    由于目标函数是二阶可微的,所以可以用如下的方式求解r和t 关于P的导数,而不是通过L-BFGS迭代计算其反向传播:给定了(r*,t *),可以通过如下公式(论文中引理1)求r和t 关于P的导数Dr⁡⋆(P)\operatorname{Dr}^{\star}(\mathbf{P})Dr⋆(P) and Dt⋆(P)\mathrm{D} \mathbf{t}^{\star}(\mathbf{P})Dt⋆(P):
    若:H=DYY2f(x,y(x))∈Rm×m;B=DXY2f(x,y(x))∈Rm×m;y(x)∈arg⁡min⁡uf(x,u)则:Dy⁡(x)=−H−1B若:\mathbf{H}=\mathrm{D}_{Y Y}^{2} f(\mathbf{x}, \mathbf{y}(\mathbf{x})) \in \mathbb{R}^{m \times m} ; \quad B=\mathrm{D}_{X Y}^{2} f(\mathbf{x}, \mathbf{y}(\mathbf{x}))\in \mathbb{R}^{m \times m};\quad \mathbf{y}(\mathbf{x}) \in \arg \min _{\mathbf{u}} f(\mathbf{x}, \mathbf{u}) \\ 则:\operatorname{Dy}(\mathbf{x})=-\mathbf{H}^{-1} \mathbf{B} 若:H=DYY2​f(x,y(x))∈Rm×m;B=DXY2​f(x,y(x))∈Rm×m;y(x)∈argumin​f(x,u)则:Dy(x)=−H−1B
    单步求解只需要求解(局部)最优解用于计算梯度即可,尽管可以获得梯度的解析解,但它相当难计算。

    作为替代,论文使用自动微分来计算必要的雅可比矩阵和黑森矩阵。

    注意这里自动微分应用于规范目标函数,而不是用于优化目标函数的算法步骤,与深度学习中的标准用法不同。

    对现有的可微PnP求解器(DSAC,DLT等),对应关系集合太大了,对于m = n = 1000,99.9%的对应关系是异常值。

  • 声明层集成RANSAC

    根据概率匹配矩阵P选择前K个匹配关系,这里k=1.5min{m,n},用RANSAC选择内点,然后使用EPnP优化位姿调整。EPnP: 《EPnP: An accurate O(n) solution to thePnP problem》

    由于声明层中的最终处理节点优化了二次可微分的目标函数,因此任何中间不可微的计算与梯度计算无关。

    RANSAC不可微,且没有显式解,不可能使用诸如显式或自动微分之类的标准技术来获得梯度。

  • 损失函数:
    衡量匹配矩阵的损失项:Lc=∑im∑jnPij(1−2[∠(fi,Rgtpj+tgt)⩽θ])衡量位姿预测的损失项目:Lp=Lr+LtLr=∠(R,Rgt)=arccos⁡12(trace⁡Rgt⊤R−1)Lt=∥t−tgt∥2衡量匹配矩阵的损失项:\\L_{\mathrm{c}}=\sum_{i}^{m} \sum_{j}^{n} \mathbf{P}_{i j}\left(1-2\left[\angle\left(\mathbf{f}_{i}, \mathbf{R}_{\mathrm{gt}} \mathbf{p}_{j}+\mathbf{t}_{\mathrm{gt}}\right) \leqslant \theta\right]\right)\\\begin{array}{l}\\衡量位姿预测的损失项目:\\L_{\mathrm{p}}=L_{\mathrm{r}}+L_{\mathrm{t}} \\L_{\mathrm{r}}=\angle\left(\mathbf{R}, \mathbf{R}_{\mathrm{gt}}\right)=\arccos \frac{1}{2}\left(\operatorname{trace} \mathbf{R}_{\mathrm{gt}}^{\top} \mathbf{R}-1\right) \\L_{\mathrm{t}}=\left\|\mathbf{t}-\mathbf{t}_{\mathrm{gt}}\right\|_{2}\end{array} 衡量匹配矩阵的损失项:Lc​=i∑m​j∑n​Pij​(1−2[∠(fi​,Rgt​pj​+tgt​)⩽θ])衡量位姿预测的损失项目:Lp​=Lr​+Lt​Lr​=∠(R,Rgt​)=arccos21​(traceRgt⊤​R−1)Lt​=∥t−tgt​∥2​​
    总的损失函数:L=Lc+γpLpL=L_{\mathrm{c}}+\gamma_{\mathrm{p}} L_{\mathrm{p}}L=Lc​+γp​Lp​

    训练时先使用L_c进行训练120epoch,然后用总损失训练。先学习好对应关系预测,可以有效减少搜索空间。

  • 实验结果:SOTA

    仿真数据集:

真实数据集:

速度:0.12s

【论文笔记】匹配关系未知情况下点云配准Solving the Blind Perspective-n-Point ProblemEnd-To-End With Robust Differentiabl相关推荐

  1. 02、在层级未知情况下通过递归查找子物体

    1.在在层级未知情况下通过递归查找子物体 ,这个主要是用于UI的的层级查找中 2.代码: 1 using System.Collections; 2 using System.Collections. ...

  2. ⽬标⾏动及稠密环境未知情况下,⽆⼈机跟踪的系统解决⽅案

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文是对<Fast-Tracker:A Robust Aerial System for Tra ...

  3. 论文笔记(综述)——Image fusion meets deep learning: A survey and perspective

    文章目录 零.摘要(Abstract) 一.引言(Introduction) 二.方法回顾(Method review) 1.数字摄影图像融合(Digital photography image fu ...

  4. 【论文笔记】ICNet:用于无监督医学图像配准的逆一致性模型

    本文是文章<Inverse-Consistent Deep Networks for Unsupervised Deformable Image Registration>的阅读笔记. 过 ...

  5. ycf 梗_你从哪些情况下觉得云次方是真的?

    最近刚看的声,对声1首席复议那里嘎子看着大龙唱without you what are they for那段印象深刻.作为一个饭桶狂热粉+老不死黑的音乐剧迷(考虑到音乐剧和声圈之间的爱恨缠绵,比如我自 ...

  6. sql外键需要输入吗_关于sql:为什么在没有连接的情况下可以联接,为什么需要主-外键关系?...

    如果我们可以从两个表中获取数据而又没有主键和外键关系,那为什么我们需要这个规则? 你能用合适的例子清楚地解释我吗? 这是一个测试数据库,不要介意不良的结构. 表的结构: ** TABLE - 'tes ...

  7. [论文笔记]User-Centric Ultra-Dense Networks for 5G: Challenges , Methodologies, and Directions

    前言 本文是我所作的第四篇论文笔记,前三篇都是按照"翻译--笔记"的模式进行,本篇将跳过翻译环节直接进行论文的笔记摘录.原因有以下几点:1.翻译步骤对内容理解很有限,理解主要在笔记 ...

  8. 论文笔记-2019-Object Detection in 20 Years: A Survey

    Object Detection in 20 Years: A Survey Zhengxia Zou, Zhenwei Shi, Member, IEEE, Yuhong Guo, and Jiep ...

  9. SA-ConvONet: Sign-Agnostic Optimization of Convolutional Occupancy Networks论文笔记

    Motivation 在不考虑局部场之间的几何关系的情况下,现有方法通常需要精确的法线来避免局部场重叠区域中的符号冲突问题,这严重限制了它们对原始扫描的适用性,因为在原始扫描中表面法线可能不可用.尽管 ...

最新文章

  1. HAProxy+Keepalived高可用负载均衡配置
  2. vue国际化-vue-i18n的配置
  3. 浅谈python+requests接口自动化框架
  4. android7.1.2 user版本打开usb调试功能
  5. 《Linux内核原理与分析》第三周作业
  6. 卸载一直在创建还原点_Win10电脑开机一直转圈无法进入系统的解决方法
  7. Go服务迁到K8s后老抽风重启? 记一次完整的线上问题解决过程
  8. Linux-Android系统启动之INIT进程和system v init
  9. linux上的中国象棋游戏下载,中国象棋下载_中国象棋最新下载_玩一玩游戏
  10. 百练 Let it Bead
  11. 借助Docker,在win10下编码,一键在Linux下测试
  12. c++语言取整为什么要加0.5_蛋鸡饲料要加石粉,那你知道为什么加?要加什么石粉?我来告诉你...
  13. 【51nod】最大子段和
  14. 多智能体强化学习算法【三】【QMIX、MADDPG、MAPPO】
  15. Python实战教程 | 轻松批量识别数百个快递单号
  16. 安全技巧:映像劫持与反劫持技术
  17. c语言怎么用setw输出每行6个,setw和setfill控制输出间隔
  18. 第5章 电容元件与电感元件
  19. C++项目设计与总结
  20. 如何高效的开展测试工作?

热门文章

  1. 全球与中国户外楼梯升降机市场现状及未来发展趋势
  2. springboot停车场车辆定位管理可视化分析系统的设计与实现毕业设计源码101702
  3. jsp22216美食菜谱食谱网站系统mysql
  4. 2021年全球与中国不锈钢反应堆行业市场规模及发展前景分析
  5. EXCEL表格-根据身份证号计算性别、年龄(IF、MOD函数)
  6. js前端通过身份证号判断年龄、性别、出生日期。
  7. 用VideoView实现播放本地的m3u8
  8. n个评委给m个选手打分python_n个评委为m个选手打分(n个评委打分总次数mn)。请问如何评判m个选手的成绩?...
  9. 汽车电子之NXP车规级芯片
  10. Sentinel 结合 GateWay 限流