【计算机图形学】Where2Act: From Pixels to Actions for Articulated 3D Objects

文章目录

  • 1.论文做了件什么事儿
  • 2. 论文为什么要做这件事
  • 3. 介绍Introduction
  • 4. 相关工作
    • 预测语义表达
    • 推理几何和物体属性
    • 从被动观察中学习Affordance
    • 从交互中学习感知
  • 5. 问题陈述
  • 6. 方法
    • 6.1 网络模块
      • 主干特征提取器
      • 可运动性评分模块
      • 运动建议模块
      • 运动评分模块
    • 6.2 训练数据收集
      • 离线随机数据采样
      • 在线适应性数据采样
    • 6.3 训练与损失
      • 运动评分损失
      • 运动策略模块
      • 可运动性损失
  • 7. 实验
    • 7.1 实验设定
    • 7.2 指标和基线
    • 7.3 结果和分析
  • 8. 总结与限制
  • 9. 补充
    • 召回率与F-score
  • 10. slide参考

1.论文做了件什么事儿

论文处理的任务是:预测给定的六种原子动作的affordances,这种affordances可以被用于更丰富的交互,同时学习能够引起期望改变的low-level的动作。具体地展开说,比如我指定向左拉的动作,对于一个推拉门,理想的affordance应该预测出最大的操作可能性在推拉门的把手上,抓住推拉门把手的某个点,把它向左拉开。

输入是image和depth data

输出

  1. image每个pixel上可能的动作集合

  2. 在力的驱动下那些可能移动的铰接物体部件

同时提出了从交互中学习的框架,搜集策略并训练网络

2. 论文为什么要做这件事

从人类的视角看来,当我们看到一个铰接物体时候,我们可以毫不费力地知道这个铰接对象可以做什么,我们需要在哪个位置完成交互,以及我们如何完成交互,例如,我们可以抓住把手拉开从而打开抽屉,推动门的任意一个位置使其观赏,旋转按钮来把灯打开,或者是按下按钮来启动烤箱。我们不仅知道怎样的动作可以完成一个任务,我们还可以知道什么事情是不应该做的,比如我们不应该把遥控器上的按钮拔出来。

在这篇工作中,目标就是建立一个感知系统,能够理解通用物体。当给定一个新的物体时,作者希望系统能够推理出在铰接物体上无数种可能的交互,

3. 介绍Introduction

预测物体可能的交互在机器人领域和计算机视觉领域方面是十分重要的。在机器人领域,预测可行的动作(如抽屉可以被拉开)有助于帮助动作规划、高效探索和交互学习(使得采样成功率更高)。在另一方面,计算机视觉领域主要聚焦于从视觉输入中推理语义标签(如部件分割和关键点估计),但是这种被动学习的表示仅能够提供有限的理解。被动学习受到智能体执行动作的能力、学习到的预测模型、很多案例下的语义(类别通常定义了功能本身)的限制。文章的目标是建立一个多物体适用的通用感知系统,同时对什么交互动作能够使得动作成功的问题进行自监督学习。

第一个问题是如何参数化动作预测空间。任何长时间的动作都可以被分解成原子动作。因此本文将问题限定于“在给定物体当前状态的情况下,能够执行哪些短期交互”。每个原子交互被进一步分解成“在哪里做”和“怎么做”两个部分,比如机器人可以与橱柜的哪个部分交互(如抽屉的把手或抽屉的表面)、机器人应该如何执行动作(如平移或垂直拉动把手)。这些观察将文章的任务定义为 “密集视觉预测”,给定物体的深度图和RGB图,尝试去推理,在每一个像素/点上是否能够执行原子动作,如果能够执行,又应该如何去执行。

我们学习一个预测网络,给定一个原子动作类型的条件,可以预测逐像素的如下信息:一个“运动能力”分数、动作策略、成功概率。

我们的方法让智能体和多个物体进行简单地交互来学习、记录动作的输出,并标记那些朝着理想状态改变的动作。我们意识到可以让智能体学习随机的交互采样,但这并不是一个高效率的探索策略,因此我们提出一个基于策略的数据采样方法来减轻这个问题——通过将采样偏置向那些智能体认为可能成功的动作来实现(就是通过让网络学习一些可能成功的动作,在这些成功率高的位置多做采样)。

论文贡献如下:

  1. 论文作者将任务定义为通过推理逐像素的动作分数和动作建议来得到可操纵3D铰接物体的Affordance;

  2. 提出了从交互中学习的方法,同时使用适应性采样来获得更多有价值的采样;

  3. 我们的网络能够学习到动作的视觉表达,并能够泛化到新的shape甚至是未见过的物体类别上。

4. 相关工作

预测语义表达

为了成功与3D物体交互,智能体需要去“理解”给定的感知输入。计算机视觉领域的很多方法都追求以多种语义标签的形式来表达这种“理解”。如预测类别标签、或者更细力度的语义特征点或部件分割等任何能够更具有运动解释性的表达。考虑如何推理出“把手”或“按钮”的位置等。然而,仅获得这些语义标签是不足够的,智能体必须理解需要做些什么(如在把手上能够通过“拉”的动作打开门)、以及如何运动来完成这个动作(在特定物体上执行“拉开”这个动作需要怎样精确的运动)。

推理几何和物体属性

为了得到能够直接用于如何操纵相关的信息,一些方法利用经典的机器人技术实现。给定shape的表达,以及刚性物体姿态、铰接物体姿态,在机器人领域可以利用离线planner或预测系统来获得动作策略。另外,推理物理属性如材质,mass的能力可以进一步提升精确性。

然而,这种两个阶段的动作执行过程,包括预测物体状态的感知系统对于出现预测误差的情况并不鲁棒,同时也会让感知系统产生比我们所需更丰富的输出,例如我们不需要预测完整的物体状态来判断如何拉出抽屉。另外,当这一类方法让智能体更精确地产生一个动作时,这些方法首先回避了需要/可以执行什么动作的问题,如,智能体如何理解一个按钮可以被按下?

(第二段可能稍微有点绕,我理解的意思是传统的机器人planner方法是通过以物体初态为输入,预测物体的终态后再获得执行的动作,但是这就导致了冗余。同时这一类方法一开始就回避了在物体上哪些地方可以做一些动作/操作的问题,故并不理想)

从被动观察中学习Affordance

让智能体学习在给定上下文中可以执行什么动作的方法通常是利用一些被动的观察——比如看一个其他智能体和物体/场景交互的视频,并学习可能可以做一些什么。这种技术被用于成功地学习场景的affordance(坐下/站立),可能的触摸位置,交互热点,甚至是抓取方式。

但是从被动观察中学习是具有挑战性的,例如学习的智能体在解剖结构上有所不同,就需要适当的重新定位来解决这一点。一个更加常见的问题是在模仿学习中的分布转移问题,当智能体看到可以做一件事的例子时,它可能没有见过足够的负例或足够多的正例。

从交互中学习感知

与我们工作最相关的工作是通过他们生成的数据(与真实世界交互来尝试可能的动作)来预测affordances。大部分工作被应用与如物体分割,planar pushing,或者non-planar grasp,但这些系统都受限于他们建模动作的复杂性。大部分方法都执着于去学习一些复杂的affordances,而没有尝试去建模一些所需low-level的动作,而是去将任务定性为使用oracle manipulators进行的分类任务(我大概理解的是,就是哪些动作在当前条件下可以执行,哪些动作在当前操作下不能执行)。在本文的工作中,作者处理了affordances的预测任务,这种affordances可以被用于更夫妇的交互,同时学习哪些能够引起想要改变的low-level的动作。

5. 问题陈述

在这里插入图片描述

我们将问题定义为一个新的挑战性问题Where2Act——推理用于操纵3D铰接物体的逐像素的“可操纵性信息”。如图所示,给定一个具有铰接部件的3D shape S S S,我们对每一个像素进行预测,预测出(a)哪些位置可以进行交互,(b)如何进行交互,©在不同交互动作下的交互的输出是什么。

输入的shape可以以2D RGB图像或者3D部分点云扫描来表示。同时参数化了6种类型的短期原子动作,即gripper pose在SE(3)空间下的推和拉等动作。如果和预期接触点进行交互并使得交互的部件产生了较大的运动(即运动比较明显),则认为交互成功。

在3D shape的铰接部件的每一个像素/点 p p p上预测如下的信息:

  • (a) 运动性分数 a p a_p ap用于衡量 p p p有多大的可能是可操作的;

  • (b) 一组和点 p p p进行的交互建议 { R z ∣ p ∈ S O ( 3 ) } \{R_{z|p}∈SO(3)\} {RzpSO(3)},其中 z z z是从高斯分布中随机采样的;

  • (c) 每一个运动建议 R R R成功的概率 s R ∣ p s_{R|p} sRp

6. 方法

整个pipeline首先通过encoder-decoder(2D-UNet/3D-PointNet++)主干来提取per-pixel/per-point的特征,然后设计三个解码分支来预测“可运动性信息”,包括一个运动性分数模块、一个运动建议模块、一个运动评估模块。

为每一种运动训练一个独立的网络。共六个原子动作

6.1 网络模块

在这里插入图片描述

主干特征提取器

在铰接部件上提取密集的逐像素/点特征 { f p } p \{f_p\}_p {fp}p

对于2D的情况,使用UNet架构,其中编码器使用在ImageNet上预训练的ResNet-18,以及从头开始训练的对称解码器,其中在encoder和decoder之间有密集的跳跃连接。

对于3D的情况,使用PointNet++,包括4个set abstraction layers和single-scale grouping来作为编码器,4个特征传播层作为解码器将特征传播回每个点。

以上两种情况,均能够产生逐像素特征 f p ∈ R 128 f_p∈\mathbb{R}^{128} fpR128

可运动性评分模块

对于每一个像素/点 p p p,预测一个用于指示当前像素/点能否运动的分数 a p ∈ [ 0 , 1 ] a_p∈[0,1] ap[0,1]。这里的多层感知机 D a D_a Da由一个具有128层隐藏单元的MLP组成该模块。网络的输出在应用Sigmoid函数后是一个标量值 a p a_p ap,更高的分数意味着更高的交互成功的概率。即

a p = D a ( f p ) a_p=D_a(f_p) ap=Da(fp)

运动建议模块

运动建议模块被作为一个条件生成模型,用于提出交互参数 { R z ∣ p } \{R_{z|p}\} {Rzp}。这里应用另一个具有128个隐藏单元的多层感知机 D r D_r Dr来实现这个模块。

输入是当前像素/点的特征 f p f_p fp和一个随机采样的高斯噪声 z ∈ R 10 z∈\mathbb{R}^{10} zR10,网络预测gripper在SO(3)空间中的的end-effector 3-DoF orientation R z ∣ p R_{z|p} Rzp

R z ∣ p = D r ( f p , z ) R_{z|p}=D_r(f_p,z) Rzp=Dr(fp,z)

3-DoF夹持器的方向follow 6D旋转表示法,使用3×3旋转矩阵的前两个轴来表示。

运动评分模块

对于每一个像素/点 p p p的运动建议 R R R,我们为每一个交互方式 ( p , R ) ∈ S E ( 3 ) (p,R)∈SE(3) (p,R)SE(3)最终评估一个成功概率 s R ∣ p ∈ [ 0 , 1 ] s_{R|p}∈[0,1] sRp[0,1]。可以通过预测的评分来过滤掉低概率的运动建议,或者根据这个预测的评分来排序所有运动建议。这里的这个分数类似于目标检测相关文献中边界框的置信分数。

网络模块 D s D_s Ds仍然是一个含有128个隐藏单元的单隐层来实现的MLP,给定输入的元组 ( f p , R ) (f_p,R) (fp,R),产生运动评分 s R ∣ p ∈ [ 0 , 1 ] s_{R|p}∈[0,1] sRp[0,1],即:

s R ∣ p = D s ( f p , R ) s_{R|p}=D_s(f_p,R) sRp=Ds(fp,R)

在测试的时候,认为 s R ∣ p > 0.5 s_{R|p}>0.5 sRp>0.5表示策略 R R R是可用的。

6.2 训练数据收集

因为人为标注数据是很困难的,所以取而代之地使用智能体在模拟环境中和物体交互以获得数据。

在模拟环境中奖随机的3D铰接物体放置在场景的中心,一个flying gripper可以在物体几何表面的指定位置 p ∈ R 3 p∈\mathbb{R}^3 pR3使用末端夹持器方向 R ∈ S O ( 3 ) R∈SO(3) RSO(3)的方式进行交互。仅考虑如图(b)中所示的6中预定义的简单的交互策略。每一种都是由一开始的抓手姿态 ( p , R ) ∈ S E ( 3 ) (p,R)∈SE(3) (p,R)SE(3)定义的。

同时使用一种混合数据采样的方式。首先使用离线随机交互策略来提速学习,接着基于网络预测的数据点来进行交互以实现更高效的学习。

离线随机数据采样

通过在多CPU的环境下同步模拟可以采样很多训练数据。

对于数据点,在GT的铰接部件上随机采样一个位置 p p p进行交互。接着,从 p p p周围切平面的上半球随机抽取一个交互作用方向 R ∈ S O ( 3 ) R∈SO(3) RSO(3),方向始终朝向正法线方向,并尝试去查询参数化 ( p , R ) (p,R) (p,R)的交互结果。同时将来自另一个半球的方向 R s R_s Rs标记为负,因为抓手不能放在物体体积内部。

实验中,对于每一种原子运动类型,都采样足够的离线数据,给定粗略的一万个策略来提速训练。虽然可以实现大规模的数据收集,但这种随机的数据采样策略在查询兴趣交互区域以获得正数据点时候的效率非常低。实验统计证明,对于拉这个原子动作来说,只有1%的数据是正例。这也导致了训练过程中一个非常大的数据不平衡挑战,也暗示了可以拉动的区域可能仅占据一个非常小的部分,比如在拉动门把手或者拉动抽屉把手时候才能完成拉的动作。

在线适应性数据采样

为解决离线采样过程中数据采样不高效的问题,我们提出去构建一个在线适应性数据采样方法。对于我们正在学习的网络预测出极有可能成功的子区域做更多的采样。

在网络使用数据 ( p , R ) (p,R) (p,R)训练运动评分模块 D s D_s Ds时,能够推理出所有像素 { p i } i \{p_i\}_i {pi}i上的运动预测分数 { s R ∣ p i } i \{s_{R|p_i}\}_i {sRpi}i。接着,采样一个位置 p ∗ p* p来构建一个额外的交互尝试 ( p ∗ , R ) (p*,R) (p,R)。其中, p ∗ p* p是根据SoftMax所有可能的相互作用位置上归一化概率分布后确定的。(我的理解是,对一所有可能的相互作用位置,将所有位置的概率做一个归一化,然后取交互概率最大的位置进行采样)。

通过这种自适应的数据采样,正数据采样率得以提升,因为网络正在积极地在可能成功的子区域周围进行更多采样。此外,我们观察到在可能成功区域周围采样更多数据有利于网络更好地学习特征,以更好地区分小而关键的交互部分(如手柄、按钮和旋钮)。

虽然自适应在线数据采样是有益处的,但它也可能导致新区域中采样数据不够的问题。因此,在我们最后的在线数据采样过程中,我们有50%的数据来自随机数据采样,剩下50%来自基于预测的适应性数据采样。

6.3 训练与损失

经验性地发现最好的训练方式是首先训练运动评分模块 D s D_s Ds,接着联合训练三个解码器。在训练中维护一个单独的数据队列,在每个训练批中提供相同数量的正交互和负交互数据,以解决数据不平衡的问题,同时平等地从不同类别中采样shape。

运动评分损失

给定一个batch,其中含有 B B B个交互数据点 { ( S i , p i , R i , r i ) } i \{(S_i,p_i,R_i,r_i)\}_i {(Si,pi,Ri,ri)}i,其中 r i = 1 r_i=1 ri=1表示正例, r i = 0 r_i=0 ri=0表示负例,使用二分类交叉损失来训练运动评分模块:

L s = − 1 B ∑ i r i l o g ( D s ( f p i ∣ S i , R i ) ) + ( 1 − r i ) l o g ( 1 − D s ( f p i ∣ S i , R i ) ) L_s=-\frac{1}{B}\sum_ir_ilog(D_s(f_{p_i|S_i},R_i))+(1-r_i)log(1-D_s(f_{p_i|S_i},R_i)) Ls=B1irilog(Ds(fpiSi,Ri))+(1ri)log(1Ds(fpiSi,Ri))

运动策略模块

利用N个最小策略来训练运动策略模块 D r D_r Dr,本质上是一个条件生成模型,将像素 p p p map到交互策略分布 R z ∣ p R_{z|p} Rzp中。对于含有B个交互数据点的batch { ( S i , p i , R i , r i ) } i \{(S_i,p_i,R_i,r_i)\}_i {(Si,pi,Ri,ri)}i,其中 r i = 1 r_i=1 ri=1,Min-of-N损失被定义为:

L r = 1 B ∑ i min ⁡ j = 1 , . . . , 100 d i s t ( ( D r ( f p i ∣ S i ; z j ) ) , R i ) L_r=\frac1B\sum_i\min_{j=1,...,100}dist((D_r(f_{p_i|S_i};z_j)),R_i) Lr=B1iminj=1,...,100dist((Dr(fpiSi;zj)),Ri)

其中 z j z_j zj是随机采样的高斯向量, d i s t dist dist表示两个6D-rotation的距离。

可运动性损失

我们将“actionability”视作是一个像素/点上进行操纵预期成功率。

a ^ p i ∣ S i = 1 100 ∑ j = 1 , . . . , 100 D s ( f p i ∣ S i , D r ( f p i ∣ S i , z j ) ) \hat{a}_{p_i|S_i}=\frac{1}{100}\sum_{j=1,...,100}D_s(f_{p_i|S_i},D_r(f_{p_i|S_i},z_j)) a^piSi=1001j=1,...,100Ds(fpiSi,Dr(fpiSi,zj))

L a = 1 B ∑ i ( D a ( f p i ∣ S i ) − a ^ p i ∣ S i ) 2 L_a=\frac1B\sum_{i}(D_a(f_{p_i|S_i})-\hat{a}_{p_i|S_i})^2 La=B1i(Da(fpiSi)a^piSi)2

这个策略的计算是很高效的,因为我们使用了运动策略模块中的100个策略。由于 D r D_r Dr经过优化以后会覆盖所有成功的交互方向,因此当大多数建议成功时,估计的 a ^ p i ∣ S i \hat{a}_{p_i|S_i} a^piSi预计将接近1,而位置 p p p不可操作时, a ^ p i ∣ S i \hat{a}_{p_i|S_i} a^piSi将接近0(所有提案成功的可能性评分都非常低)

7. 实验

7.1 实验设定

这部分是一些训练集和测试集的划分,以及六个原子动作的定义、对交互成功的定义。

7.2 指标和基线

指标方面

  • 衡量 D s D_s Ds(运动策略评分模块)的指标是二分类精确性,主要评价召回率与F-score

  • 引入采样成功率指标ssr用于评价网络提出交互策略的成功概率

对于后面这个指标,评价过程如下:使用可运动性评分模块 D a D_a Da来采样交互的像素,接着应用运动策略提出模块 D r D_r Dr来生成多个交互策略,最后根据 D s D_s Ds对这些运动评分来采样出合适的交互策略。

关于交互策略的采样,是在所有像素的预测运动评分做一个归一化,然后采样那些绝对概率大于0.5的策略。对于策略采样步骤,是在每个像素上采样100个策略,这是通过从高斯分布中随机采样并输入到 D r D_r Dr中获得的。对于每一种交互策略,都应用模拟器来观察GT输出,故:

s s r = # s u c c e s s f u l _ p r o p o s a l s # t o t a l _ p r o p o s a l s ssr=\frac{\#successful\_proposals}{\#total\_proposals} ssr=#total_proposals#successful_proposals

基线方面

由于没有类似的任务,所以与三个相对简单的baseline比较,以及文章方法的消融版本比较。

  • B-Random:随机的智能体,总是给出随机的策略和分数

  • B-Normal:将2D-UNet和3D-PN++编码出的特征 f p f_p fp替换成3维的GT法线,使用相同的解码头、损失、训练框架

  • B-PCPNet:将上面提到的特征 f p f_p fp替换成使用PCPNet预测的法线和曲率,使用相同的解码头、损失和训练框架

  • Ours w/o OS:本文方法的消融实验,移除了适应性数据采样部分,仅使用随机探索来采样数据,为了保证公平,采样的数据量和文中离线+在线采样的数据量保持一致

其中,B-Random展示了测量指标的下界;B-Normal用于验证网络学习的特征提取器提取的特征是面向交互的特征,而不是如法线一样简单的几何特征;B-PCPNet进一步证明网络学习了比局部法线和曲率更多的几何特征;Ours w/o OS进一步证明在线适应性采样策略的改进。

7.3 结果和分析

定量实验:

在这里插入图片描述

上述表格展示了文中方法的优越性,优于其他所有基线,即使是使用2D版本,本文的方法也展示出了competitive的结果。

在这里插入图片描述

消融实验证明了在线采样策略的高效性。

定性实验:
在这里插入图片描述

其余见论文

8. 总结与限制

文章完成了一个挑战性任务:预测操纵3D物体的逐像素运动信息。对于一个物体铰接部件上的每一个像素,预测每个像素关于6个原子动作的运动概率,并提出候选交互参数。

限制:

  1. 网络使用单帧视角作为输入,如果铰接部件运动信息无法从单帧中进行确定,则容易引起解空间的二义性;

  2. 实验限制在6个类型的原子动作,每个动作策略都是硬编码的;

则可探索的方向就是实现free-form的交互。同时文章没有显式建模部件分割和部件的motion axis,这些信息在未来可以被进一步结合。

9. 补充

召回率与F-score

一种评价二分类任务的指标,详见:【机器学习笔记15】多分类混淆矩阵、F1-score指标详解与代码实现(含数据)-CSDN博客

将二分类分为TP(预测正确,为正类),FP(预测错误,为正类),FN(预测错误,为负类),TN(预测正确, 为负类);即TP为真阳性,FP为假阳性,FN为真阴性,FN为假阴性。

召回率是基于这些分类进行计算的。召回率 R c = T P T P + F N R_c=\frac{TP}{TP+FN} Rc=TP+FNTP,也就是真实类别为正类的所有结果中,模型预测正确的比重。

F-score用于综合考虑精确度和召回度指标,其公式在上面的文章中有写明

10. slide参考

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

德人合科技 | —数据泄露可能会对公司造成哪些影响?

数据泄露可能会对公司造成多方面的影响,以下是一些可能的影响: 财务损失:数据泄露可能导致公司遭受财务损失。攻击者可能会盗取公司的敏感信息,如客户信息、银行账户信息、商业机密等,并利用这些信息进行欺诈、盗窃等非…

网络安全概述(一)

目录 资产保护 资产的类型 资产损失类型 资产保护考虑因素 安全强度、安全代价和侵入可能性的关系 信息安全技术发展 单机系统的信息保密阶段 信息保障阶段 信息保障技术框架IATF PDRR模型 网络攻击类型 阻断攻击、截取攻击、篡改攻击、伪造攻击 被动攻击和主动攻…

使用 WordPress SureMembers 创建 Patreon 等粉丝网站

各行各业的创意专业人士和爱好者越来越多地转向在线平台分享他们的作品、建立忠实的粉丝并创造收入。 无论您是新晋艺术家还是知名影响者,拥有粉丝订阅网站都可以帮助您将热情货币化,同时培养紧密的支持者社区。 根据Statista的一份报告,到…

java 商机管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java 商机管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…

GPT-SoVITS音色克隆-模型训练步骤

GPT-SoVITS音色克隆-模型训练步骤 GPT-SoVITS模型源码一个简单的TTS后端项目 基于模型部署和训练教程,语雀 模型部署和训练教程 启动模型训练的主页面 1. 切到模型路径 /psycheEpic/GPT-SoVITS进入Python虚拟环境,并挂起执行python脚本 conda activ…

亚信安慧AntDB:打破数据孤岛,实现实时处理

AntDB数据库以其独特的创新能力在分布式数据库领域引领潮流。其中,融合统一与实时处理是其两大核心创新能力,为其赢得广泛关注与赞誉。融合统一意味着AntDB能够将多种不同类型的数据库融合为一体,实现数据的统一管理与处理,极大地…

OJ_重建二叉树

题干 已知&#xff1a;二叉树的先序序列和中序序列求&#xff1a;后序序列 C实现 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string> using namespace std;struct TreeNode {char data;TreeNode* left;TreeNode* right; };TreeNode* Rebuil…

基于ssm江苏融汇房地产营销策划有限公司的宣传网站

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

3月5日济南,2024生物发酵展全新起航!助力打造生物产业经济新时代

生物发酵是生物产业的重要组成部分&#xff0c;近年来&#xff0c;我国生物产业发展迅猛&#xff0c;也已广泛应用于食品、农业、医药、饲料、日化、材料等领域&#xff0c;市场前景广阔。2022年5月&#xff0c;国家发改委发布的《“十四五”生物经济发展规划》明确着力做大做强…

Sora如何申请,Sora如何使用(最新详细教程)

引言 OpenAI发布的Sora模型以及有一段时间了~现在在tiktok的sora官网上也时长发布最新的视频。 OpenAI Tiktok的官网 那么普通人如何申请sora和使用sora呢&#xff0c;可以参考以下方式~ 1、虚假的Sora使用渠道2、真实的Sora使用渠道3、什么是OpenAI Red Teaming Network4、…

qt 基于百度API的人脸识别

百度云官网&#xff1a;点击跳转 一、创建应用 跳转进去&#xff0c;可以看到以下界面&#xff1a; 点击红色圈内的“去创建”&#xff0c;创建自己的项目。可以看到以下界面&#xff1a; 输入“应用名称”&#xff0c;并勾选“人脸对比”&#xff0c;还要到页面的最后输入“应…

蓝桥杯练习系统(算法训练)ALGO-993 RP大冒险

资源限制 内存限制&#xff1a;64.0MB C/C时间限制&#xff1a;200ms Java时间限制&#xff1a;600ms Python时间限制&#xff1a;1.0s 问题描述 请尽情使用各种各样的函数来测试你的RP吧~~~ 输入格式 一个数N表示测点编号。 输出格式 一个0~9的数。 样例输入 0 样…