MotionBERT:人体运动表征

news2024/9/21 2:45:40

MotionBERT:A Unified Perspective on Learning Human Motion Representations解析

  • 摘要
  • 1. 简介
  • 2. Related Work
    • 2.1 学习人体运动表征
    • 2.2 3D人体姿态估计
    • 2.3 基于骨骼的动作识别
    • 2.3 人体网格恢复
  • 3. Method
    • 3.1 Overview
    • 3.2 网络架构
      • Spatial Block
      • Temporal Block
      • Dual-stream Spatio-temporal Transformer
    • 3.3 统一预训练(Unified Pretraining)
    • 3.4 特定于任务的整合(Task-specific Finetuning)
      • 3D姿态估计
      • 基于骨骼的动作识别
      • 人体网格恢复
  • 4. 实验
    • 4.1 预训练
    • 4.2 3D姿态估计
    • 4.3 基于骨骼的动作识别
    • 4.4 人体网格恢复

论文地址:MotionBERT:A Unified Perspective on Learning Human Motion Representations
论文代码:https://github.com/Walter0807/MotionBERT
项目主页:https://motionbert.github.io/
论文出处:ICCV 2023
论文单位:北京大学+上海人工智能实验室

摘要

  • 我们提出了一个统一的观点,通过从大规模和异构数据资源中学习人类运动表示来解决各种以人为中心的视频任务
  • 具体来说,我们提出了一个预训练阶段,其中训练运动编码器以从嘈杂的部分2D观测中恢复潜在的3D运动
  • 通过这种方式获得的运动表示包含了关于人体运动的几何、运动学和物理知识,可以很容易地转移到多个下游任务。
  • 我们使用双流时空变换(Dual-stream Spatio-temporal Transformer,DSTformer)神经网络实现运动编码器。
  • 它能够全面、自适应地捕捉骨骼关节间的长期时空关系,从训练开始到目前为止三维姿态估计误差最低。
  • 此外,我们提出的框架通过简单的回归头(1-2层)微调预训练的运动编码器,在所有三个下游任务上实现了最先进的性能,这证明了学习到的运动表征的多功能性。

1. 简介

  • 感知和理解人类活动一直是机器智能的核心追求。
  • 为此,研究人员定义了各种任务来估计视频中以人为中心的语义标签,例如骨架关键点(skeleton keypoints)动作类(action classes)表面网格(surface meshes)
  • 虽然在这些任务中取得了重大进展,但它们往往被孤立地建模,而不是作为相互关联的问题建模。
  • 例如,时空图卷积网络(ST-GCN)在三维姿态估计和动作识别中已经被应用于人体关节的时空关系建模,但它们之间的联系尚未得到充分的探索。
  • 从直觉上讲,这些模型都应该学会识别典型的人类运动模式,尽管它们是为不同的问题设计的。
  • 尽管如此,当前的方法无法挖掘和利用跨任务的这些共性。
  • 理想情况下,我们可以开发一个统一的以人为中心的视频表示,可以在所有相关任务之间共享
  • 开发这种表示的一个重要挑战是可用数据资源的异构性。
  • 动作捕捉(Mocap)系统提供高保真度,通过标记和传感器获得3D运动数据,但捕获视频的外观通常限于简单的室内场景。
  • 动作识别数据集提供了动作语义的注释,但它们要么不包含人体姿势标签,要么以日常活动的有限运动为特征。
  • 相比之下,野外的人类视频提供了广泛而多样的外观和动作。
  • 然而,获得精确的2D姿态注释需要相当大的努力,并且需要获取ground-truth (GT)三维关节定位几乎是不可能的。
  • 因此,现有的研究大多集中在使用单一类型的人体运动数据的特定任务上,无法享受到其他数据资源的优势。
  • 在这项工作中,我们为学习人类运动表征提供了一个新的视角。
  • 关键思想是我们可以统一地从异构数据资源中学习通用的人体运动表示,并利用该表示统一地处理不同的下游任务
  • 我们提出了一个两阶段的框架,包括预训练和微调,如图1所示。
    在这里插入图片描述
  • 在预训练阶段,我们从不同的运动数据源中提取2D 骨架序列,并使用随机mask和噪声对其进行破坏。随后,我们训练运动编码器从损坏的2D骨架中恢复3D运动
  • 这个具有挑战性的任务本质上需要运动编码到:
    i)从它的时间运动中推断出潜在的3D人体结构。
    ii)恢复错误和缺失的观测。
  • 通过这种方式,运动编码器隐式地捕捉人类运动常识,如关节连接、解剖约束和时间动力学。
  • 在实践中,我们提出了**双流时空Transformer(DSTformer)**作为运动编码器捕捉骨架关键点之间的远程关系。
  • 我们假设从大规模和多样化的数据资源中学习到的运动表征可以在不同的下游任务中共享,并有利于它们的性能。
  • 因此,对于每个下游任务,我们使用任务特定的训练数据和具有简单回归头的监督信号来调整预训练的运动表示
  • 总之,这项工作的贡献有三个方面:
    (1) 我们通过学习人类运动表征的共享框架,为解决各种以人为中心的视频任务提供了新的视角。
    (2)我们提出了一种预训练方法来利用大规模而异构的人体运动资源,学习可泛化的人体运动表征。我们的方法可以同时利用3D动作捕捉数据的精确性和野外RGB视频的多样性。
    (3)我们设计了一个具有级联时空自注意块的双流transformer网络,可以作为人体运动建模的一般主干。
  • 实验表明,上述设计能够实现多功能的人体运动表示,可以转移到多个下游任务,优于任务特定的最先进的方法。

2. Related Work

2.1 学习人体运动表征

  • 早期的作品用隐马尔可夫模型(Hidden Markov Models)和图模型(graphical models )来描述人体运动。
  • 从动作识别的角度来看,设计了各种任务以自监督的方式学习运动表征,包括:未来预测、拼图、骨架对比、速度变化、跨视图一致性和对比度重建。
  • 在运动评估(motion assessment )和运动重定向(motion retargeting)等任务中也探索了类似的技术。
  • 这些方法利用同质运动数据,设计相应的名义任务,并将其应用于特定的下游任务。
  • 在这项工作中,我们提出了一个统一的预训练微调框架,以整合异构数据资源,并展示其在各种下游任务中的通用性。

2.2 3D人体姿态估计

  • 从单目RGB视频中恢复3D人体姿态是一个经典问题,其方法可分为两类。
  • 第一种是直接用CNN从图像中估计3D姿态。然而,这些方法的一个局限性是,由于当前的数据收集技术,在3D姿态精度和外观多样性之间存在权衡。
  • 第二类是首先提取2D姿态,然后用一个单独的神经网络将估计的2D姿态提升到3D。提升可以通过全连接网络,时间卷积网络 (TCN),GCN,Transformer等。
  • 我们的框架是建立在第二类,因为我们使用拟议的Transformer来完成2D到3D提升。

2.3 基于骨骼的动作识别

  • 对于人体关节间的时空关系建模,以往的研究主要采用LSTM和GCN
  • 最近,PoseConv3D提出将3D-CNN应用于堆叠的2D关节热图,取得了更好的效果。
  • 除了完全监督的动作识别任务外,NTU-RGB+D-120关注了具有挑战性的一次性(one-shot)动作识别问题。
  • 我们证明了预训练的运动表征可以很好地泛化到动作识别任务中,预训练-微调框架是一种适合于一次性(one-shot)挑战的解决方案。

2.3 人体网格恢复

  • 基于参数化人体模型如SMPL,许多研究工作专注于从单个图像回归人体网格。
  • 尽管这些方法的每帧结果很有希望,但当应用于视频时,这些方法会产生抖动和不稳定的结果
  • 一些工作以视频片段为输入来利用时间线索。
  • 另一个常见的问题是,配对图像和GT网格大多是在约束场景下捕获的,这限制了上述方法的泛化能力。
  • 为此,Pose2Mesh建议首先使用现成的姿态估计器提取2D骨架,然后将其提升到3D网格顶点。
  • 我们的方法是对最先进的人体网格恢复方法的补充,可以进一步提高它们与预训练的运动表征的时间一致性。

3. Method

3.1 Overview

  • 正如第1节所讨论的,我们的方法包括两个阶段,即统一的预训练和特定任务的微调
  • 在第一阶段,我们训练一个运动编码器来完成2D到3D的提升任务,其中我们使用所提出的Transformer作为骨干。
  • 在第二阶段,我们对预训练的运动编码器和下游任务的一些新层进行微调
  • 我们使用2D骨架序列作为预训练和微调的输入,因为它们可以可靠地从各种运动源中提取,并且对变化具有更强的鲁棒性。
  • 已有研究表明,在不同的下游任务中使用2D骨架序列是有效的。
  • 我们将首先介绍DSTformer的架构,然后详细描述训练方案。

3.2 网络架构

  • 图2显示了2D到3D提升的网络架构。
    在这里插入图片描述
    我们提出了双流时空Transformer(DSTformer)作为人体运动建模的一般骨干。
    DSTformer 由 N 个双流融合模块组成。
    每个模块包含空间或时间MHSA和MLP的两个分支。
    空间MHSA模拟一个时间步长内不同关节之间的连接,而时间MHSA模拟一个关节的运动。
  • 给定一个输入的2D骨架序列 x∈RT×J×Cin,我们首先将其投影到一个高维特征 F0∈RT×J×Cf, 然后对它添加可学习的空间位置编码 PSpos∈R1×J×Cf时间位置编码PTpos∈RT×1×Cf
  • 然后我们使用序列到序列模型DSTformer,用于计算 Fi∈RT×J×Cf(i = 1,…,N),其中N为网络深度。
  • 我们对 FN 应用 tanh激活 的线性层,来计算运动表示 E∈RT×J×Ce
  • 最后,我们对 E 进行线性变换来估计3D运动 X^ ∈ RT×J×Cout。其中,T为序列长度,J为人体关节数。Cin、Cf、Ce、Cout分别表示输入、特征、嵌入、输出的通道号。
  • 下面,首先介绍了DSTformer的基本组成模块,即多头空间和时间模块自关注(Spatial and Temporal Blocks with Multi-Head Self-Attention,MHSA),然后解释DSTformer的架构设计。

Spatial Block

  • 空间MHSA (S-MHSA)旨在对同一时间步长内关节之间的关系进行建模。
  • 它定义为:
    在这里插入图片描述
  • 我们将S-MHSA并行应用于不同时间步长的特征。
  • 残差连接(Residual connection)和层规范化(LayerNorm)用于S-MHSA结果,将其进一步输入多层感知器(MLP),然后再跟随一个残差连接和LayerNorm。
  • 我们用MHSA、LayerNorm、MLP和残差连接S表示整个空间块。
    在这里插入图片描述 在这里插入图片描述

Temporal Block

  • 时间MHSA (T-MHSA)旨在模拟身体关节在时间步长的关系
  • 它的计算过程与S-MHSA相似,只是MHSA应用于每个关节的时间特征 FT∈RT×Ce,并在空间维度上并行化。
    在这里插入图片描述

Dual-stream Spatio-temporal Transformer

  • 给定分别捕获帧内和帧间身体关节相互作用的空间和时间MHSA,我们组装基本构建块来融合流中的空间和时间信息。

  • 我们基于以下假设设计了一个双流架构:
    (1)这两个流都应该能够对全面的时空上下文进行建模。
    (2)每个流应该专门研究不同的时空方面。
    (3)将两个流融合在一起,并根据输入的时空特征动态平衡融合权值。

  • 因此,我们将空间和时间的MHSA块按不同顺序堆叠,形成两个并行计算分支

  • 利用注意力回归器预测的自适应权重融合两个分支的输出特征。

  • 双流融合模块重复N次:
    在这里插入图片描述
    其中Fi表示深度 i 处的特征嵌入,◦表示逐元素生成。
    S和T块的顺序如图2所示,不同的块不共享权重。

  • 自适应融合权重α_ST, α_TS∈RN×T×J由下式给出:
    在这里插入图片描述

3.3 统一预训练(Unified Pretraining)

  • 在设计统一的预训练框架时,我们解决了两个关键挑战:
    (1)如何在通用pretext task(前置任务)中学习强大的动作表征。
    (2)如何利用各种格式的大规模且异构的人体运动数据。

  • 对于第一个挑战,我们遵循语言和视觉建模的成功实践来构建监督信号,即掩码部分输入并使用编码表示来重构整个输入。

  • 需要注意的是,这种 “cloze” 任务在人体运动分析中自然存在,即从2D视觉观察中恢复丢失的深度信息,即3D人体姿态估计。受此启发,我们利用大规模3D动作捕捉数据并设计了一个2D到3D的升降前置任务

  • 我们首先通过投影3D运动来提取2D骨架序列 x。

  • 然后,我们通过随机屏蔽和添加噪声来破坏x,以产生损坏的2D骨架序列,这也类似于2D检测结果,因为它包含闭塞,检测失败和错误。关节级和帧级 mask都以一定的概率应用。

  • 我们使用上述运动编码器来获得运动表示 E 并重建三维运动 Xˆ。

  • 然后,我们计算了Xˆ 和GT3D运动X 之间的关节损失L_3D。我们还加入了速度损失L_O。

  • 因此,三维重建损失函数为:
    在这里插入图片描述

  • 对于第二个挑战,我们注意到2D骨架可以作为一种通用媒介,因为它们可以从各种运动数据源中提取。

  • 我们进一步将野外RGB视频合并到2D到3D提升框架中,以进行统一的预训练。

  • 对于RGB视频,2D骨架 x 可以通过手动标注或 2D姿态估计器给出,提取的2D骨架的深度通道(第三维信息)本质上是“masked”的。

  • 类似地,我们添加额外的 masks 和 noises来降低 x (如果x已经包含检测噪声,则只应用掩码)。

  • 由于3D运动GT X 无法用于这些数据,我们应用加权的2D重投影损失,其计算公式为:
    在这里插入图片描述
    其中,x^ 为估计的3D运动X^ 的二维正交投影,δ∈RT×J由可见性标注或二维检测置信度给出。

  • 总预训练损失由:
    在这里插入图片描述
    其中λO是平衡训练损失的常数系数。

3.4 特定于任务的整合(Task-specific Finetuning)

  • 学习到的特征嵌入 E 作为3D感知和时间感知的人体运动表示。
  • 对于下游任务,我们采用极简设计原则,即:实施浅层下游网络和无花里胡哨的训练
  • 在实践中,我们使用一个额外的线性层或带有一个隐藏层的MLP。然后我们对整个网络进行端到端的微调。

3D姿态估计

  • 当我们使用2D到3D的提升作为前端任务时,我们只需重用整个预训练的网络
  • 在微调过程中,输入的2D骨架没有额外mask或noise的视频中估计出来。

基于骨骼的动作识别

  • 我们直接在不同的人和时间步骤上应用全局平均池化。然后将结果输入到具有一个隐藏层的MLP中。
  • 该网络使用交叉熵分类损失进行训练。对于one-shot学习,我们在混合特征后应用线性层来提取clip-level动作表示。

人体网格恢复

  • 我们使用SMPL模型来表示人体网格,并对其参数进行回归。
  • SMPL模型由位姿参数 θ∈R72形状参数 β∈R10组成,计算三维网格为 M(θ,β)∈R6890×3
  • 为了回归每一帧的姿态参数,我们将运动嵌入 E提供给具有一个隐藏层的 MLP,得到 θ^ ∈RT×72
  • 为了估计形状参数,考虑到视频序列上的人体形状应该是一致的,我们首先在时间维度上对 E 进行平均池化,然后将其输入到另一个 MLP 中以回归单个β^ ,然后将其扩展到整个序列作为 β^ ∈RT×10
  • 形状MLP与姿态回归的结构相同,分别用平均形状和姿态初始化。
  • 总损失计算为:
    在这里插入图片描述

4. 实验

4.1 预训练

  • 我们从Human3.6MAMASS两个数据集中收集了多种逼真的3D人体运动。
  • Human3.6M是一个常用的室内3D人体姿势估计数据集,包含360万视频帧的专业演员表演日常动作。
  • 我们进一步整合了两个野外RGB视频数据集PoseTrack(已注释)InstVariety(未注释) 用于更高的动作多样性。
  • 我们将人体关键点定义与Human3.6M对齐,并将相机坐标校准为像素坐标。
  • 我们随机将15%的关节归零,并从高斯分布和均匀分布的混合中采样噪声。

4.2 3D姿态估计

  • 我们在Human3.6M上评估了3D姿态估计性能,并报告了以毫米为单位的平均每关节位置误差(MPJPE),该误差测量了根关节对齐后预测关节位置与GT之间的平均距离。
  • 我们还计算了平均每关节速度误差(MPJVE)来评估时间平滑性。
  • 我们使用 Stacked Hourglass (SH) network 来从视频中提取2D骨架,并在Human3.6M训练集上对整个网络进行微调。

4.3 基于骨骼的动作识别

  • 我们使用人类动作数据集 NTU-RGB+D,其中包含60个动作类的57K视频,我们遵循交叉主题(X-Sub)和交叉视图(X-View)的数据分割。
  • 该数据集有一个扩展版本,NTU-RGB+D-120,包含120个动作类的114K视频。
  • 对于这两个数据集,我们使用HRNet提取2D骨架

4.4 人体网格恢复

  • 我们对Human3.6M3DPW数据集进行了实验,并在后续的训练中额外添加COCO数据集。

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

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

相关文章

MybatisPlus整合p6spy组件SQL分析

目录 p6spy java为什么需要 如何使用 其他配置 p6spy p6spy是一个开源项目,通常使用它来跟踪数据库操作,查看程序运行过程中执行的sql语句。 p6spy将应用的数据源给劫持了,应用操作数据库其实在调用p6spy的数据源,p6spy劫持到…

Python项目中怎么实现异步任务和定时任务

这里写目录标题 一、异步任务:二、定时任务:三、Celery介绍特点:Celery由三部分构成:工作原理:安装Celery选择一个Broker:RabbitMQKafka和RabbitMQ的区别:定义一个任务定义第二个任务定义一个生产者(producer) 来 调用异步任务启动celery服务定义一个获取结果的类定时任…

Activiti6

一、Activiti介绍与搭建开发环境 二、运行官方例子 三、编写第一个Activiti程序 3.1 流程部署 代码 /*** 部署流程* 涉及到的表有: * 1.act_ge_bytearray 两条记录,一条xml数据,一条png图片信息 * 2.act_re_deployment 一条记录 * 3.a…

BBS项目day02、注册、登录(登录之随机验证码)、退出登录、密码加密加盐、首页(导航条、模态框,修改密码)

一、注册 1.注册之前端页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>注册页面</title><!--动态引入文件-->{% load static %}<script src"{% static js/jquery.min.js %…

深度开发者故事 | 华为云API Explorer 自动化运维的得力助手

华为云API Explorer为开发者提供一站式API解决方案统一平台&#xff0c;集成华为云服务所有开放API&#xff0c;支持全量快速检索、可视化调试、帮助文档、代码示例等能力&#xff0c;帮助开发者快速学习API&#xff0c;使用API开发代码实现自动化运维。 体验通道&#xff1a;…

企业数字化时代,数据要素是什么?有什么作用价值?

信息化、数字化社会加速到来&#xff0c;企业纷纷开始布局数字化转型&#xff0c;数字经济将成为未来世界中最为火热的新型经济。 数据报表作为企业数字化转型的代表节点之一&#xff0c;未来会成为数字化企业的基本配置。 要想企业全身心投入数据报表体系建设中&#xff0c;…

个性化定制界面与极简版原装界面:我们为什么选择个性化?

个性化定制界面和极简版原装界面&#xff0c;哪一个你用起来更加顺手呢&#xff0c;相比之下你更喜欢哪一个&#xff1f;来聊一聊原因吧&#xff01; 随着科技的不断发展&#xff0c;人们对于界面设计也有了越来越高的要求。而在界面设计领域&#xff0c;个性化定制界面和极简版…

rust入门系列之Rust介绍及开发环境搭建

Rust教程 Rust基本介绍 网站: https://www.rust-lang.org/ rust是什么 开发rust语言的初衷是&#xff1a; 在软件发展速度跟不上硬件发展速度&#xff0c;无法在语言层面充分的利用硬件多核cpu不断提升的性能和 在系统界别软件开发上&#xff0c;C出生比较早&#xff0c;内…

Qt表格数据处理

概述 在Qt表格数据处理中&#xff0c;涉及到如下几个具体的类&#xff1a; QAbstractItemModel&#xff1a;这是一个抽象基类&#xff0c;定义了模型&#xff08;Model&#xff09;的接口规范。所有的模型类都应该派生自QAbstractItemModel&#xff0c;并实现它的纯虚函数&…

学习电工有哪些好处?在哪学习电工?

学习电工有哪些好处&#xff1f;在哪学习电工&#xff1f;学习电工可以做什么&#xff1f;优势有哪些&#xff1f; 学习电工可以做什么&#xff1f;学习电工有哪些好处&#xff1f; 就业去向&#xff1a;可在企业单位从事电气设备的安装、调试、操作、维护等工作&#xff0c;…

GDP药品供应管理规范确保冷链运输合规性

药品运输面临许多挑战&#xff0c;包括产品可能因暴露在不利条件下导致降解。药品供应管理规范 (GDP) 运输指南在确保整个运输链的冷链合规性方面发挥着关键作用。 药品的分销与生产和制造生产线一样精细和敏感。自全球物流公司成立以来&#xff0c;配送过程中对受控环境的需求…

运维自动化与Cobbler服务部署

运维自动化与Cobbler服务部署 一.Cobbler简介1.1.简介1.2.Cobbler的下属服务1.3.工作流程 二.Cobbler安装2.1.安装epel源2.2.安装Cobbler及其相关的服务和组件 三.Cobbler配置3.1.Cobbler配置文件及各目录情况3.2.配置及启动cobblerd服务 四.Cobbler使用4.1用法4.2配置linux发行…

IIC总线原理

1. IIC总线概述 IIC总线 IIC总线是Philips公司在八十年代初推出的一种串行、半双工总线 主要用于近距离、低速的芯片之间的通信&#xff1b;IIC总线有两根双向的信号线一根数据线SDA用于收发数据&#xff0c;一根时钟线SCL用于通信双方时钟的同步&#xff1b;IIC总线硬件结构简…

elementPlus——图标引入+批量注册全局组件——基础积累

因为我们要根据路由配置对应的图标&#xff0c;也要为了后续方便更改。因此我们将所有的图标注册为全局组件。&#xff08;使用之前将分页器以及矢量图注册全局组件的自定义插件&#xff09;&#xff08;所有图标全局注册的方法element-plus文档中已给出&#xff09; 全局注册…

vue中 .env .env.development .env.production 详细说明

1.配置文件有&#xff1a; .env 全局默认配置文件&#xff0c;不论什么环境都会加载合并 .env.development 开发环境下的配置文件 .env.production 生产环境下的配置文件 2.命名规则&#xff1a; 属性名必须以VUE_APP_开头&#xff0c;比如VUE_APP_XXX 3.关于文件的加载&#x…

kubernetes基于helm部署minecraft

kubernetes基于helm部署minecraft kubernetes容器集群中部署minecraft server服务器。 项目地址&#xff1a;https://github.com/itzg/minecraft-server-charts 官方文档&#xff1a;https://itzg.github.io/minecraft-server-charts/ 前置要求&#xff1a; 已准备kubern…

国标GB28181视频平台EasyGBS国标平台的应用场景以及方案实现

EasyGBS国标视频融合云平台基于端-边-云一体化架构&#xff0c;部署轻量简单、功能灵活多样&#xff0c;平台可支持多协议&#xff08;GB28181/RTSP/Onvif/海康SDK/Ehome/大华SDK/RTMP推流等&#xff09;、多类型设备接入(IPC/NVR/监控平台)&#xff0c;在视频能力上&#xff0…

华为认证含金量如何

华为认证是指通过华为技术有限公司官方认证考试所获得的认证资格。华为认证主要分为三个级别&#xff1a;华为认证工程师&#xff08;HCIE&#xff09;、华为认证专家&#xff08;HCNP&#xff09;和华为认证技术专家&#xff08;HCNA&#xff09;&#xff0c;每个级别都有不同…

lvs集群与nat模式

一&#xff0c;什么是集群&#xff1a; 集群&#xff0c;群集&#xff0c;Cluster&#xff0c;由多台主机构成&#xff0c;但是对外只表现为一个整体&#xff0c;只提供一个访问入口&#xff08;域名与ip地址&#xff09;&#xff0c;相当于一台大型计算机。 二&#xff0c;集…

什么是Liquid UI?

热门议题&#xff1a; 1、企业如何快速解决人员移动办公的需求&#xff0c;比如在苹果安卓手机&#xff0c;平板电脑&#xff0c;MAC登录SAP。2、企业如何解决用户经常抱怨的流程复杂&#xff0c;操作繁琐&#xff0c;难以使用等问题 公司介绍&#xff1a; Synactive,Inc. 是…