【计算机图形学】3D Implicit Transporter for Temporally Consistent Keypoint Discovery

对3D Implicit Transporter for Temporally Consistent Keypoint Discovery的简单理解

在这里插入图片描述

文章目录

  • 1. 现有方法限制和文章改进
  • 2. 方法
    • 2.1 寻找时间上一致的3D特征点
      • 2.1.1 3D特征Transporter
      • 2.1.2 几何隐式解码器
      • 2.1.3 损失函数
    • 2.2 使用一致特征点的操纵

1. 现有方法限制和文章改进

用于探测特征点的、已经存在的2D和3D方法主要依赖于几何一致性来获得空间上的对齐,而忽视了时间上的一致性。

为了解决这个问题,Transporter在2D数据上,聚合时间和空间信息,进而从原始帧重建目标帧。然而2D Transporter不能直接应用于3D点云上,因为3D点云和2D图像存在结构上的差异。

因此,文章提出了第一个3D版本的Transporter,充分利用混合3D表示、跨注意力机制、隐式重建。在3D铰接物体和非刚性动物(人类和啮齿动物)上应用这种新的学习系统,从而展示了学习到的特征点在时空上的一致性。另外提出了一种closed-loop的控制策略,利用学习到的特征点来进行3D物体操纵,证明其表现。

2. 方法

文章的感知方法提出了一种新的方式,以自监督的方式,在一系列点云中发现移动物体和物体部件在时间和空间上一致的3D特征点。

一旦训练好,学习到的特征点可以被用于设计从初始状态到目标状态的铰接物体的操纵策略,从而避免了UMPNet和Where2Act策略搜集的试错。

2.1 寻找时间上一致的3D特征点

根据[23],数据集的组成是一对对的、从一系列策略中提取出来的帧,每一帧是一个3D点云。一对点云之间是通过物体的姿态/几何(有点类似于Template的概念吗?同一类别下的物体可以泛化?)来辨别差异的。文章的目标是去寻找从源帧到目标帧的、能够描述物体或物体运动部件的对应特征点。文章对这个问题的处理方式是从源帧构建目标帧的基本形状。如下图所示。

在这里插入图片描述

2.1.1 3D特征Transporter

混合的3D表示: 2D图像这种规则数据的对应不适用于不规则的3D点云数据。将点云统一成3D体素网格是最直接的方式,但转换成体素也会引起一些几何结构的信息丢失,比如表面可能不够精确等。尽管可以使用高分辨率的体素网格,但也会带来计算和空间上的成本。

相反,基于点的模型凭借其稀疏表示可以大大减少这些成本,因此,文章利用了基于点的backbone来从稀疏的点钟提取局部特征,利用给予体素的模型来实现局部特征迁移。

给定一帧 o ∈ R N 1 × 3 o∈\R^{N_1×3} oRN1×3 N 1 N_1 N1是输入点的数量,利用PointNet P P P来获得逐点特征 P ( o ) ∈ R N 1 × C 1 P(o)∈\R^{N_1×C_1} P(o)RN1×C1 C 1 C_1 C1是特征维度数。这些特征局部池化并投影到结构化网格 v ∈ R C 2 × C h × C w × C d v∈\R^{C_2×C_h×C_w×C_d} vRC2×Ch×Cw×Cd中。使用3D-UNet U U U来处理特征体素得到输出 U ( v ) ∈ R C 3 × C h × C w × C d U(v)∈\R^{C_3×C_h×C_w×C_d} U(v)RC3×Ch×Cw×Cd。这些步骤通过图2的特征编码器 Φ Φ Φ实现。


注意力特征点探测: 当被要求在一对帧之间寻找移动物体或移动部件时,采用迭代检查和筛选的方式来在帧之间寻找多个试探性区域。受启发于之前的工作,提出使用跨注意力机制模块来聚集两帧的几何信息来定位特征点。

利用基于点的模型来提取输入点云多层特征,进而实现两帧点云之间的关联。给定一对帧 o s , o t o_s,o_t os,ot,利用共享的PointNet++ P ^ \hat{P} P^来获得两个下采样的点特征 f s = P ^ ( o s ) f_s=\hat{P}(o_s) fs=P^(os) f t = P ^ ( o t ) f_t=\hat{P}(o_t) ft=P^(ot),且 f s , f t ∈ R N 2 × C 4 f_s,f_t∈\R^{N_2×C_4} fs,ftRN2×C4。接着使用跨注意力机制来混合这对输入之间的点特征:

在这里插入图片描述

模块的输出( f s ′ , f t ′ f'_s,f'_t fs,ft)是输入特征和注意力特征的concatenation。接着通过PointNet++解码器上采样 f s ′ , f t ′ f'_s,f'_t fs,ft以获得dense features f s ′ , f t ′ ∈ R N 1 × C 5 f'_s,f'_t∈\R^{N_1×C_5} fs,ftRN1×C5

通过以上操作,通过投影和3D UNet U k U_k Uk 将dense point features转换为keypoint saliency volumes(不知道怎么翻译)。整个检测模块的输出表示为 Ψ Ψ Ψ,分别为 Ψ ( o s , o t ) s , Ψ ( o s , o t ) t ∈ R m × C h × C w × C d Ψ(o_s,o_t)_s,Ψ(o_s,o_t)_t∈\R^{m×C_h×C_w×C_d} Ψ(os,ot)s,Ψ(os,ot)tRm×Ch×Cw×Cd,从中可以提取出 m m m个3D关键点 k s , k t ∈ R m × 3 k_s,k_t∈\R^{m×3} ks,ktRm×3,如图2的蓝色部分所示。 k s 和 k t k_s和k_t kskt的第 i i i个特征点彼此对应。


Feature Transportation: 类似于2D Transporter,下一步就是feature transportation以从 o s o_s os中重建 o t o_t ot。Transport Φ ( o t ) Φ(o_t) Φ(ot) k t k_t kt周围的特征至 Φ ( o s ) Φ(o_s) Φ(os)中,压缩 Φ ( o s ) Φ(o_s) Φ(os) k t , k s k_t,k_s kt,ks的特征。如图2绿色部分所示。首先擦除 Φ ( o s ) Φ(o_s) Φ(os)中两个集的特征得到 Φ − ( o s ) Φ^-(o_s) Φ(os),接着从 o t o_t ot中提取特征点 k t k_t kt周围的特征,最后连接到 Φ ( o s ) Φ(o_s) Φ(os)中生成 Φ + ( o s ) Φ^+(o_s) Φ+(os),公式化为:

在这里插入图片描述

其中 H Ψ H_Ψ HΨ表示由固定方差 σ \sigma σ各向同性高斯线组成的3D热力图,以 Ψ Ψ Ψ表示的 m m m个关键点为中心。

2.1.2 几何隐式解码器

由于源和目标帧之间除运动部件外的几何形状保持相同,使用探测到的移动部件上的特征点可以重新合成目标视觉输入。受到3D重建中深度隐式函数的启发,这里使用几何隐式解码器。

给定查询集 Q Q Q中的点 q ∈ R 3 q∈\R^3 qR3,文章的方法使用MLP将点编码成 C e C_e Ce维的向量 q e q_e qe。接着,通过三线性插值从 Φ + ( o s ) Φ^+(o_s) Φ+(os)查询 Φ q + ( o s ) Φ^+_q(o_s) Φq+(os)。隐式解码器 Ω Ω 将特征 q e q_e qe Φ q + ( o s ) Φ^+_q(o_s) Φq+(os)连接后的结果map到目标表面占用率: Ω ( q e , Φ q + ( o s ) ) → P r o b ( q ∣ o t ) Ω(q_e,Φ^+_q(o_s))→Prob(q|o_t) (qe,Φq+(os))Prob(qot)

2.1.3 损失函数

所有模块都可以通过表面重建损失来优化。在预测的目标表面占用率 P r o b ( q ∣ o t ) Prob(q|o_t) Prob(qot)和目标帧的GT标签 P r o b g t ( q ∣ o t ) Prob^{gt}(q|o_t) Probgt(qot)中使用二分类交叉熵损失。如果 q q q来自目标点云,则 P r o b ( q ∣ o t ) Prob(q|o_t) Prob(qot)为1,反之为0,损失函数为:

在这里插入图片描述

除此之外,还使用了额外的损失项 L o c c s L_{occ_s} Loccs,通过利用其自身的特征网格 Φ ( o s ) Φ(o_s) Φ(os)来辅助源帧的重建。

2.2 使用一致特征点的操纵

使用特征点作为中层表示,对于接触丰富的机器人3D空间操纵任务来说是一种合适的方式。之前的工作仅关注与2D特征点表示,或在面对巨大的shape变化或物体拓扑改变的情况下,难以探测到时空一致的3D特征点。由于3D Transporter特征点的长期一致性,文章的方法很好地处理了3D操纵任务。此处以铰接物体操纵作为基线来证明。

在UMPNet工作中,给定目标状态 o g o_g og,目标是生成机器人的end-effector从当前状态 o c o_c oc转变到目标状态 o g o_g og的一组动作。在本片工作中,每个状态使用点云而不是2D图像表示,使用吸盘手以实现对物体表面任意一个点的抓取。

特征点一致性损失: 由于预测的特征点分布在预测的移动部件上,可以使用它来生成源和目标之间的刚性部件运动姿态假设:

在这里插入图片描述

可以使用奇异值分解在封闭形式下计算。强制所有特征点满足刚性转换,使关键点几何对齐:

在这里插入图片描述

关节一致性损失: 铰接运动过程中,轴的方向要么保持不变要么平行。给定预测的姿态,可以通过Rodrigues旋转公式计算轴的方向 μ μ μ和角度 θ \theta θ,惩罚不同时间步下的轴的方向:

在这里插入图片描述

其中, μ a b μ_{ab} μab表示在时间步 a a a和时间步 b b b中预测的轴方向。

完整的损失就是occupancy loss加上这个corr和axis。


在训练后设计了一个基于3D Implicit Transporter keypoint的对象无关的操纵策略,避免了低效探索。对于每个将物体从current state移动到goal state的动作 A c , g A_{c,g} Ac,g,6-Dof姿态表示吸盘手的位置 A c , g p o s ∈ R 3 A^{pos}_{c,g}∈\R^3 Ac,gposR3和移动方向 A c , g d i r ∈ R 3 A^{dir}_{c,g}∈\R^3 Ac,gdirR3,策略由两个部分组成:

位置和方向推理: 第一步是获得预测特征点 k c , k g k_c,k_g kc,kg,轴 μ c , g μ_{c,g} μc,g,角度 θ c , g \theta_{c,g} θc,g。接着从对应特征点计算系数铰接流 F c , g i = k g i − k c i F^i_{c,g}=k^i_g-k^i_c Fc,gi=kgikci。为有效驱动铰接部件,根据杠杆原理选择具有最高magnitude flow的关键点位置 k c s k^s_c kcs作为吸力点,表示为 A c , g p o s = k c s A^{pos}_{c,g}=k^s_c Ac,gpos=kcs

对于旋转轴, k c s k_c^s kcs被限制在垂直于旋转轴的半径为 r s r^s rs的2D圆上,其中 r s r^s rs是从 k c s k^s_c kcs到关节的最短向量。因此, k c s k_c^s kcs的理想行动方向与 A c , g d i r s A^{dir_s}_{c,g} Ac,gdirs相切。若当前状态和目标状态的运动范围较小,则 F c , g s F^s_{c,g} Fc,gs将近似平行于 A c , g d i r s A^{dir_s}_{c,g} Ac,gdirs,则可被设置为运动方向。然而随着旋转范围的增加,它们之间的差异也会越来越显著,减轻这个问题的方法就是根据预测的轴多插值几个中间状态。

对于平移轴, A c , g d i r s A^{dir_s}_{c,g} Ac,gdirs平行于每个移动点的GT铰接流的。直接设置 F c , g s F^s_{c,g} Fc,gs作为铰接方向。不需要区分关节类型,两种方法在极小的差异内都是一样的。

闭环操纵: 与使用单个步骤动作实现目标不同,该工作生成一系列动作来逐渐改变铰接状态。应用一个closed-loop的控制系统,依赖于反馈来逐渐调整当前动作。特别地,基于物体当前状态和目标状态来预测下一个动作。不同于UMPNet使用一个常数移动距离,这里利用 F c , g s F^s_{c,g} Fc,gs的大小来动态调整移动距离。受到PID控制器的启发,设置 ∣ ∣ A c , g d i r s ∣ ∣ = λ ⋅ ∣ ∣ F c , g s ∣ ∣ ||A^{dir_s}_{c,g}||=\lambda·||F^s_{c,g}|| ∣∣Ac,gdirs∣∣=λ∣∣Fc,gs∣∣作为当前状态, λ \lambda λ是一个比例系数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2904688.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云服务器价格表(2024年最新阿里云服务器租用优惠价格表)

2024年阿里云服务器优惠价格表,一张表整理阿里云服务器最新报价,阿里云服务器网aliyunfuwuqi.com整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单,大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新…

[Flutter]环境判断

方式一(推荐) 常量kReleaseMode,它会根据你的应用是以什么模式编译的来获取值。bool.fromEnvironment会从Dart编译时的环境变量中获取值。对于dart.vm.product这个特定的环境变量,它是由Dart VM设置的,用来标明当前是…

机器学习之决策树现成的模型使用

目录 须知 DecisionTreeClassifier sklearn.tree.plot_tree cost_complexity_pruning_path(X_train, y_train) CART分类树算法 基尼指数 分类树的构建思想 对于离散的数据 对于连续值 剪枝策略 剪枝是什么 剪枝的分类 预剪枝 后剪枝 后剪枝策略体现之威斯康辛州乳…

前端项目在本地localhost可以调取到拍照或麦克风等设备,但是在局域网内IP+端口号访问项目时访问不到设备

前端项目在本地localhost可以调取到拍照或麦克风等设备,但是在局域网内IP端口号访问项目时访问不到设备,调取navigation.mediaDevices时本科可以获取到mediaDevices列表,局域网内ip端口访问时获取不到mediaDevices。 原因: 存在…

中国信通院 X StarRocks金融用户社区正式成立

在国家战略的推动下,开源技术正逐渐成为金融行业创新发展的重要驱动力。2024 年 3 月 26 日,中国信息通信研究院 X StarRocks 金融用户社区(以下简称“社区”)正式成立,这一举措旨在深化国内金融领域的开源生态建设&am…

<QT基础(5)>事件监听

事件监听 事件监听(Event Handling)是在程序中监视和响应发生的事件的一种机制。在Qt中,事件监听是一种常见的用于处理用户输入、系统事件以及其他类型事件的方法。通过事件监听,您可以在发生特定事件时捕获事件并执行相应的操作…

docker部署-RabbitMq

1. 参考 RabbitMq官网 docker官网 2. 拉取镜像 这里改为自己需要的版本即可,下面容器也需要同理修改 docker pull rabbitmq:3.12-management3. 运行容器 docker run \ --namemy-rabbitmq-01 \ -p 5672:5672 \ -p 15672:15672 \ -d \ --restart always \ -…

pulsar: kafka on pulsar之把pulsar当kafka用

一、下载协议包(要和pulsar版本比较一致) https://github.com/streamnative/kop/releases?q2.8.0&expandedtrue二、在pulsar的根目录创建一个protocols目录,将上述包放到这个目录里 三、编辑broker.conf(如果是集群)或者standalone.con…

【二十七】【算法分析与设计】归并(1),912. 排序数组,归并排序,递归函数的时间复杂度计算,LCR 170. 交易逆序对的总数

912. 排序数组 给你一个整数数组 nums&#xff0c;请你将该数组升序排列。 示例 1&#xff1a; 输入&#xff1a;nums [5,2,3,1] 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;nums [5,1,1,2,0,0] 输出&#xff1a;[0,0,1,1,2,5] 提示&#xff1a; 1 < …

前端学习-CSS基础-Day3

一、CSS三大特性 1.1层叠性 相同选择器给设置相同的样式&#xff0c;此时一个样式就会覆盖&#xff08;层叠&#xff09;另一个冲突的样式。层叠性主要解决样式冲突的问题 层叠性原则&#xff1a; 1.样式冲突&#xff0c;遵循的原则是就近原则&#xff0c;哪个样式离结构近&a…

深度解析 Partisia Blockchain 可证明的快速通道共识

来源&#xff1a; https://partisiablockchain.com/poseidon-provable-fast-track-consensus-by-partisia-blockchain/ https://drive.google.com/file/d/1OX7ljrLY4IgEA1O3t3fKNH1qSO60_Qbw/view 编译&#xff1a;TinTinLand 任何区块链的核心要求都是建立对共享分布式账本…

Web框架开发-Django中间件

一、中间件的概念 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出。因为改变的是全局,所以需要谨慎实用,用不好会影响到性能。 Django的中间件的定义: Middleware is a framework of hooks into Dj…

软件工程学习笔记12——运行维护篇

运行维护篇 一、版本发布1、关于软件版本2、版本发布前&#xff0c;做好版本发布的规划3、规范好发布流程&#xff0c;保障发布质量 二、DevOps工程师1、什么是 DevOps 三、线上故障1、遇到线上故障&#xff0c;新手和高手的差距在哪里2、大厂都是怎么处理线上故障的 四、日志管…

【AI】在本地 Docker 环境中搭建使用 Hugging Face 托管的 Llama 模型

目录 Hugging Face 和 LLMs 简介利用 Docker 进行 ML格式的类型请求 Llama 模型访问创建 Hugging Face 令牌设置 Docker 环境快速演示访问页面入门克隆项目构建镜像运行容器结论推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战Hugging Fa…

每日算法之接雨水

题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1…

Zookeeper节点ZNode和相关属性

节点类型&#xff1a; Znode两种类型 &#xff1a; 持久的&#xff08;persistent&#xff09;&#xff1a;客户端和服务器端断开连接后&#xff0c;创建的节点不删除&#xff08;默认&#xff09;。 短暂的&#xff08;ephemeral&#xff09;&#xff1a;客户端和服务器端断…

OpenCV 如何使用 XML 和 YAML 文件的文件输入和输出

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;如何利用OpenCV4.9离散傅里叶变换 下一篇: 目标 本文内容主要介绍&#xff1a; 如何使用 YAML 或 XML 文件打印和读取文件和 OpenCV 的文本条目&#xff1f;如何对 OpenCV …

2023中国制造业标杆工厂数字化转型场景地图报告(可下载)

请前往星球下载&#xff08;可领取优惠券&#xff09;&#xff1a;https://t.zsxq.com/18gRm06pe

VsCode的json文件不允许注释的解决办法

右下角找到注释点进去 输入Files: Associations搜索出此项 改为项为*.json值为jsonc保存即可 然后会发现VsCode的json文件就允许注释了

[BT]BUUCTF刷题第10天(3.28)

第10天&#xff08;共3题&#xff09; Basic BUU SQL COURSE 1 打开网站看到右上角有个登录界面&#xff0c;怀疑是SQL注入 但是多次尝试都无果 通过看题解知道了还有一个隐藏网页&#xff08;content_detail.php&#xff09; 随便点一个测试新闻进去后点F12看网络&#xf…