斯坦福大学提出在类别层级对多零件多关节三维拼装新方法

来源:投稿 作者:橡皮
编辑:学姐

paper:https://arxiv.org/pdf/2303.06163.pdf

背景:

形状装配通过排列一组简单或基本的零件几何图形来组成复杂的形状几何图形。许多重要的任务和应用都依赖于形状装配算法。

计算机辅助设计建模要求设计者重新定位和对齐一组零件几何图形,以创建复杂的设计。精确和稳健的形状装配算法对于开发家具装配或CAD建模的自主系统至关重要。

这些先前的工作采用了从零件建模形状的整体几何视角。它们制作的形状具有很高的美学价值。然而,这种纯粹的几何视角对零件的旋转和反射对称性是不可知的,因此会产生倒置、翻转和旋转的零件姿态预测。这些有噪声的预测可能导致关节不匹配或关节之间的不匹配,使其难以直接用于自主装配或功能形状建模。在多部件多关节装配设置中存在许多挑战:1)大的匹配搜索空间,2)非连续优化,以及3)误差复合。

在由两部分组成的装配设置中,关节的配对是明确的,因此可以通过连续的姿势优化直接实现所需的装配。然而,我们的多部分多关节任务需要在非常大的匹配空间中求解二部分联合配对。此外,我们的任务需要交错的离散和连续优化。联合配对是离散解空间中的组合问题,而姿态估计是在连续解空间中。

主要贡献:

针对类别级多零件三维形状装配问题,考虑了接头的概念。引入了一个联合注释零件数据集以及一组评估指标来检查性能。

提出了一种新的层次图网络,该网络同时优化整体形状结构和关节对齐精度。

进行了广泛的实验,以证明方法在整体形状结构和关节对准精度这两个任务目标上优于先前的工作。

方法介绍:

在本文中,目标是解决多部件多关节形状装配的任务。该任务模拟了真实世界的家具装配设置,其中多个造型零件通过接触接头以不同的方式连接,以形成复杂的造型几何结构。如图所示,我们得到了(a)多个形状的零件,其中每个零件都包含多个接头。

对于我们的设置,使用桩孔接头对来表示允许的连接,类似于螺栓和螺母,其中只允许在相同接触几何形状的公件和母件之间进行匹配。我们的目标是(b)将所有销钉接头与孔接头正确连接,(c)将这些零件拼接在一起,(d)形成所需形状。

方法概览:

我们的多级图网络由两个主要的GNN模块组成:零件图模块和联合图模块。零件图模块负责预测每个零件的姿态,以构建所需的形状结构。联合图模块有助于校正零件姿势,以连接匹配的关节。联合图消息传递(b)包含四个消息传递层:

方法细节1:问题设置与概述

问题设置:多零件多关节形状装配任务定义如下:给定 1)一组3D零件点云

和2)每个零件都应该包含多个销钉和/或孔接头

,我们旨在预测一组6-DoF零件姿态

对于所有输入零件P,以满足双边目标:1)变换零件

其形成期望的3D形状,2)所有关节匹配,并且匹配的桩J^P和孔J^h彼此靠近。

概述:我们的多部件多关节形状装配任务有几个挑战1)从非常大的匹配搜索空间(O(M2))中找到一组一对一的栓孔匹配,2)预测所有部件的姿态,使它们同时实现连接所有匹配的关节和形成所需形状结构的两个目标,3)局部关节匹配或姿态预测误差可以容易地传播到整个形状并导致退化。

为了应对第一个挑战,我们引入了形状先验启发式算法来减少匹配搜索空间。受先前工作的启发,我们使用零件几何信息通过零件图提出初始粗略形状结构。然后,我们的关节图与粗略的形状结构一起工作,以找到初始的桩孔匹配。我们通过让两个层次的图表示学习专注于两个目标中的每一个来解决第二个挑战。关节图模块匹配关节。零件图构造形状。

然后,我们使用层次特征聚合将关节级和零件级信息相结合,以预测符合这两个目标的零件姿态。我们通过在两种表示之间交替来逐渐细化零件姿势,以实现两个期望的目标。

方法细节2:零件图姿势建议

零件图旨在从给定的一组零件几何形状中提出所需的形状结构。受先前工作的启发,我们直接从零件几何图形中回归零件姿态。因此,我们通过对每个图节点v_i^p和在所有零件节点之间运行的边e_{i,j}^p上的零件几何形状P特征进行编码来初始化我们的零件图

。使用 PointNet 提取零件几何特征。为了明确地对零件之间的关系进行建模,以形成所需的形状,我们使用图来消息传递,这是一种节点通过边缘连接与邻居交换信息的机制。部分级消息传递是通过迭代更新边缘特征来实现的和节点特征

。我们使用更新后的图进行姿态预测,如图所示。在部分图卷积的第一次迭代中,从部分节点特征中解码部分姿态向量,

。对于任何后续迭代,在给定先前步骤姿态预测和更新的节点特征

的情况下,预测姿态向量

方法细节3:关节图关系推理

我们使用关节图来推断和细化关节连接关系。如图所示,我们首先使用 PointNet 初始化关节节点特征v_i^j ,以提取关节几何特征向量。关节边eij被初始化为在所有桩节点和所有孔节点

之间运行的一组二分边,以反映所有可能的允许连接。然后,我们使用消息传递来迭代地更新边缘和节点特征。具体来说,我们首先用从其连接节点特征计算出的神经消息更新每个边缘eij的特征,

对于接下来的步骤,我们通过聚合来自所有连接的关节边v0i=fe的信息来更新节点特征

。我们通过显式地建模关节连接关系来进一步更新关节节点特征vi。关节连接性取决于两个关键信息,即接触曲面几何图形和相对零件位置。因此,我们根据关节几何形状p_i^{joint}和零件位置q_i对关节匹配关系进行建模。

我们学习了一个关节连通性矩阵r_j^i∈[0,1]来反映关节是如何连接的。然后,连接矩阵被用作应用于边缘特征e_j^i的边缘权重,并且我们通过聚合加权的边缘特征来进一步更新联合节点:

方法细节4:关节感知姿势预测

为了生成同时实现关节匹配和形状结构目标的零件姿态,我们需要结合来自零件图和关节图的信息。关节-零件关系是分层的,因为关节是零件上的接触位置。我们建议使用分层特征聚合来对这种关系进行建模。

具体而言,我们对零件

的所有相关关节节点使用池化操作,以形成新的以关节为中心的零件特征,如图2底部的(c)部分所示。

然后,通过部分特征级联将这些联合聚合的部分节点特征与原始部分图相结合,用于联合感知姿态预测,如图2中的(d)部分所示。2。现在,由于新的零件特征包含关节和零件信息,我们使用新更新的零件图进行关节感知姿势建议。以先前图迭代生成的零件姿态{qi,t+1}为条件,我们预测了一个精化零件姿态算子

新的姿态预测由预测的姿态算子和前一阶段的部分姿态组成,

其中,通过将新的旋转差应用于先前的旋转预测来计算新的旋转,并且通过添加平移差和先前的平移预测来更新平移。

方法细节5:损失函数

我们利用两组损失函数:形状损失和联合损失来优化我们的多级图网络。 旨在帮助零件图网络生成有效的形状结构, 帮助关节图匹配和连接所有关节。

形状损失:在设计形状损失时,我们专注于平移、旋转和整体形状结构方面,其中=λ1Lt+λ2Lr+λ3La。我们使用L2损失来监督翻译,使用CD来监督旋转和整体形状结构。

其中,倒角距离(CD)定义为:

此外,我们确保我们的形状损失是一个阶不变的损失度量,以解决几何上一致的部分,例如椅子的腿。具体来说,我们在每个全等部分类中执行匈牙利匹配,以使用最接近的基本事实部分姿势进行监督。

关节损失:关节匹配任务对预测误差非常敏感;一个小的匹配误差可能导致整个形状的恶化。因此,我们以从粗到细的方式监督关节匹配目标,包括三个损耗分量:=λ4+λ5+λ6。第一损失项直接校正翻转姿势预测。我们使用旋转L2损失来校正具有反射对称性的零件的倒置预测:

第二损失项提供了粗略的引导以连接匹配的接头。我们使用匹配的桩j_a^p和孔j_b^h之间的L2距离。我们使用n_{joint}表示关节点的数量,

受先前工作的启发,最后一个损失分量使用关节几何线索来细化关节对齐。

我们使用成对的桩j_a^p和孔j_b^h之间的倒角距离,并应用预测的姿态,

联合损耗的后两个分量以联合匹配分配

为条件。由于全等部分类中的任何任意排列也是有效的预测,我们不能直接使用地面实况联合匹配Φgt作为我们的监督信号。因此,为了保证关节匹配的顺序不变性,我们设计了一种具有图遍历方案的关节匹配算法,以分配全等零件类之间的关节匹配 。

实验结果:

关注下方【学姐带你玩AI】🚀🚀🚀

免费领取人工智能学习大礼包(电子书、论文、教程视频...)

码字不易,欢迎大家点赞评论收藏!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

你是否好奇交流充电桩主板的安装维度?

你是否好奇交流充电桩主板的安装维度?安装环境、要求和方式,将影响充电桩的可靠性和安全性。 交流充电桩主板的安装环境至关重要,设备需要安装在室外,因此应选择防水、防火、耐候、耐腐蚀的材料。同时,安装要求具有良好的接地&am…

企业人力资源管理系统servlet+jsp人事招聘培训薪资java源代码mysql

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 企业人力资源管理系统servletjsp 系统1权限&#xff…

uniApp 插件 Fvv-UniSerialPort 使用实例

接上一篇 uniApp 对接安卓平板刷卡器, 读取串口数据 , 本文将详细介绍如何使用插件读取到串口数据 原理 通过uniApp 插件读取设备串口数据, 解析后供业务使用; 步骤 创建uniApp 项目;添加插件 安卓串口通信 Fvv-UniSerialPort 安卓串口通信 Fvv-UniSerialPort - DCloud 插件…

刷题笔记 day6

力扣 57 和为s的两个整数 class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {vector<int> v;int i 0 , j nums.size()-1;while(i < j){if(nums[i] nums[j] > target){--j;}else if(nums[i] nums[j] < target){i…

【Linux】内核线程创建 kthread_run 函数和内核中断

kthread_run函数详解 以PCIE的热插拔内核线程创建为例说明 注意&#xff1a;内核线程和RTOS的线程略有不同&#xff0c;这里Linux上创建以后直接运行&#xff0c;RTOS上有的是需要加入到调度队列中后才会执行&#xff0c;比如RT-Thread的系统 kthread_run 是 Linux 内核中的…

Mac端口扫描工具

端口扫描工具 Mac内置了一个网络工具 网络使用工具 按住 Command 空格 然后搜索 “网络实用工具” 或 “Network Utility” 即可 域名/ip转换Lookup ping功能 端口扫描 https://zhhll.icu/2022/Mac/端口扫描工具/ 本文由 mdnice 多平台发布

关于win11 debian wsl 子系统安装启动docker一直starting,无法启动

首先我先说明&#xff0c;我的步骤都是按照官网步骤来的 通过官网的操作步骤 通过测试命令 sudo docker run hello-world得到下面的命令&#xff0c;我们通过启动命令 sudo service docker start 执行结果如下图 也就是说无法启动&#xff0c;一直显示在启动中 遇到这种情况…

基于ARM+FPGA的驱控一体机器人控制器设计

目前市场上工业机器人&#xff0c;数控机床等多轴运动控制系统普遍采用运动控制器加 伺服驱动器的分布式控制方式。在这种控制方式中&#xff0c;控制器一方面完成人机交互&#xff0c;另 一方面进行 NC 代码的解释执行&#xff0c;插补运算&#xff0c;继而将计算出来的位…

Go项目实现日志按时间及文件大小切割并压缩

关于日志的一些问题: 单个文件过大会影响写入效率&#xff0c;所以会做拆分&#xff0c;但是到多大拆分? 最多保留几个日志文件&#xff1f;最多保留多少天&#xff0c;要不要做压缩处理&#xff1f; 一般都使用 lumberjack[1]这个库完成上述这些操作 lumberjack //info文件wr…

Java版工程行业管理系统源码-专业的工程管理软件-em提供一站式服务 em

​ Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目…

弱监督语义分割伪标签可视化(把单通道灰度图转为voc格式语义分割标签的彩色形式)

一、目的 以图片2007_001960为例&#xff0c;voc数据集中的原图和对应的语义分割标签分别如下&#xff1a; 图1 图2 图像级标签WSSS任务第一阶段最后生成的pseudo mask如下&#xff1a; 图3 我们的…

【雕爷学编程】MicroPython动手做(33)——物联网之天气预报3

天气&#xff08;自然现象&#xff09; 是指某一个地区距离地表较近的大气层在短时间内的具体状态。而天气现象则是指发生在大气中的各种自然现象&#xff0c;即某瞬时内大气中各种气象要素&#xff08;如气温、气压、湿度、风、云、雾、雨、闪、雪、霜、雷、雹、霾等&#xff…

react中PureComponent的理解与使用

一、作用 它是一个纯组件&#xff0c;会做一个数据的浅比较&#xff0c;当props和state没改变的时候&#xff0c;不会render重新渲染&#xff0c; 改变后才会render重新渲染&#xff0c;提高性能。 二、使用 三、注意 它不能和shouldComponentUpdate生命周期同时使用。因为它…

如何获取最新的底图边线数据(高德)

由于近期的大屏项目需要地图的边界线的数据&#xff0c;找了很多方式&#xff0c;都有局限性&#xff0c;就是不能保证是最新的&#xff0c;所以使用高德地图提供的边线数据&#xff0c;那就肯定是最新的了&#xff0c;之前仔细看文档&#xff0c;现在仔细看了&#xff0c;才发…

【云原生】k8s中Contrainer 生命周期回调/策略/指针学习

个人主页&#xff1a;征服bug-CSDN博客 kubernetes专栏&#xff1a;kubernetes_征服bug的博客-CSDN博客 目录 1 容器生命周期 2 容器生命周期回调/事件/钩子 3 容器重启策略 4 自定义容器启动命令 5 容器探针 1 容器生命周期 Kubernetes 会跟踪 Pod 中每个容器的状态&am…

Python 批量处理JSON文件,替换某个值

Python 批量处理JSON文件&#xff0c;替换某个值 直接上代码&#xff0c;替换key TranCode的值 New 为 Update。输出 cancel忽略 import json import os import iopath D:\\Asics\\850\\202307 # old path2 D:\\test2 # new dirs os.listdir(path) num_flag 0 for file…

【Spring练习项目】博客系统

目录 1.项目展示2.项目结构设计3.项目功能设计4 数据库准备4.1 建表4.2 DB相关数据 5.项目模块6.添加项目公共模块6.1 common6.2 实现前端界面 7.功能实现7.1实现博客列表约定前后端交互接口实现服务器代码实现客户端代码 7.2实现博客详情约定前后端交互接口实现服务器代码实现…

基于图片、无人机、摄像头拍摄进行智能检测功能

根据要求进行无人机拍摄的视频或图片进行智能识别&#xff0c;开发过程需要事项 1、根据图片案例进行标记&#xff0c;进行模型训练 2、视频模型训练 开发语言为python 根据需求功能进行测试结果如下 根据车辆识别标记进行的测试结果截图 测经过查看视频 8月1日

opencv-33 图像平滑处理-中值滤波cv2.medianBlur()

中值滤波是一种常见的图像处理滤波技术&#xff0c;用于去除图像中的噪声。它的原理是用一个滑动窗口&#xff08;也称为卷积核&#xff09;在图像上移动&#xff0c;对窗口中的像素值进行排序&#xff0c;然后用窗口中像素值的中值来替换中心像素的值。这样&#xff0c;中值滤…

【二等奖方案】Web攻击检测与分类识别赛题「机器学习」团队解题思路

2022 CCF BDCI 数字安全公开赛 赛题「Web攻击检测与分类识别」 地址&#xff1a;http://go.datafountain.cn/4Zj 机器学习战队 获奖方案 团队简介 我们团队由五名成员组成&#xff0c;对机器学习都非常感兴趣&#xff0c;同时在机器学习领域有着丰富的实战经验&#xff0c…