SIGGRAPH 2023|你的AI Tony老师上线了,英伟达提出毛发模拟新基线

2018年,网易《逆水寒》与AMD合作开发出来一款名为“海飞丝”的算法,该算法基于AMD的TressFX毛发模拟技术,可以在游戏中较为清晰的模拟人类头发的运动,大大增强了游戏场景的真实感。一个健康的成年人大概拥有10万根头发,如果想在游戏场景中模拟头发,就需要对这10万根头发自身以及周围环境进行交互建模,很明显,这是一项非常吃显卡算力的算法。

最近,在AI领域属实“赚麻了”的另外一家显卡巨头NVIDIA也公布了自己在毛发模拟领域的最新进展,他们提出了一种基于ADMM算法的离散弹性模拟求解器(Discrete Elastic Rods,DER),DER基于神经物理学来训练网络预测头发在现实世界中的运动方式,同时也可以充分利用GPU的大规模并行计算能力,大大减少了算法在高分辨率头发模拟场景中的迭代时间,目前DER已经被计算机图形学顶级会议SIGGRAPH 2023录用。

论文链接:
https://research.nvidia.com/publication/2023-08_interactive-hair-simulation-gpu-using-admm

从NVIDIA公布的演示视频来看,DER真正实现了逼真的头发模拟效果,与之前方法相比,DER带来了效果惊人的交互式效果,其不仅可以对每根头发进行单独的实时物理模拟,甚至还能保留头发的弹性、光泽等真实属性,让整体的效果看起来更加逼真,这种效果让人不禁联想,未来会不会出现AI发型师这种职业呢?作者在文中介绍到,这种逼真效果得益于DER内部的神经物理网络,并且基于离散的弹性连杆设计,DER可以将规模庞大的头发进行模拟目标分解,这使得整个任务非常契合GPU的并行运算结构,最终实现了实时的交互式物理头发模拟效果。此外,与目前最为先进的基于CPU的模拟求解器相比,DER甚至可以将先前的模拟时间从几天缩短到几个小时,同时还能提高头发模拟的质量,这可真算得上是降维打击。

一、本文方法

从论文题目中不难看出,本文提出的DER求解器是基于经典的ADMM算法进行设计的,在介绍本文方法之间,先带大家回顾一下ADMM算法:

ADMM(Alternating Direction Method of Multipliers)交替方向乘子法是一种优化算法,用于解决带有约束条件的凸优化问题。它的核心思想是通过将原始问题转化为等价的子问题来进行求解。ADMM算法的优点在于它能有效地处理带有约束条件的优化问题,并且在很多情况下能够获得较快的收敛速度。它在机器学习、信号处理、图像处理等领域得到了广泛的应用。

本文提出的离散弹性模拟求解器DER,内部设计了一种隐式的时间积分过程,可以将增量问题进行分解,由于ADMM算法本质上也属于一种分治算法,其采用分解-协调的方式来对问题进行求解,即通过协调小的局部子问题的解来找到大的全局问题的解。因此DER非常适合在具有大规模显存的并行GPU上运行。

1.1 头发运动建模

 

作者提到,解决这个问题的一种经典方法是执行全局牛顿迭代,将上式简化为一系列具有摩擦接触约束的线性系统,然后就可以从许多专用求解器中选取任何一个来对每个头发实例进行求解。然而,对于DER而言,同时分析多个头发多边形实例涉及到庞大的矩阵运算,这会导致GPU内存访问效率低下,并且可能需要双精度求解。因此,作者开始寻找在完全全局迭代(如牛顿迭代)和完全局部(例如XPBD[1])方法之间的折衷方案,即既可以在GPU上有效求解也可以在全局层面传播迭代结果的高效方案。

1.2 ADMM问题拆分

 

 

1.3 ADMM问题求解

 

二、实验效果

本文的所有实验均是在一个消费级工作站上进行的,工作站配备了一颗 Intel Core i9-10980XE CPU 和两颗 NVIDIA GeForce 3080 Ti GPU(每颗显存为12GB),视频渲染使用NVIDIA Omniverse套件完成。

2.1 数值验证实验

本文首先对DER求解器进行了数值验证实验,共设置了三个与弹性模拟性能相关的实验:悬臂、弯曲和粘滑,目的是为了测试DER数值模拟器,本文的分析推导与实际物理观测量之间预测的一致性。作者提到,为了充分利用本文所提DER求解器的大规模并行性能,对于上述三个实验,作者都一次性求解所有的实验配置项,实验结果如下图所示,从左到右分别是悬臂、弯曲和粘滑实验。

其中,悬臂实验(最左侧)主要计算了连杆在重力下处于平衡状态时,其两端的自然下垂程度,并且计算下垂偏移量带来的纵横比,并且与理论纵横比进行对比,可以从图中看到,DER基本上可以拟合理论纵横比的结果。对于弯曲实验,作者设置了多种具有不同长度和自然曲率的连杆,然后模拟计算他们在重力平衡状态下是否能够保持平面状态,通过实验,作者发现DER的预测结果可以与理论分析曲线保持良好的一致性。在粘滑实验中,作者将一个原本状态垂直的自然连杆逐渐从一个方向推向另外一个方向,并记录连杆的弯曲程度以及其克服摩擦力的实时大小。通过实验表明,DER对弯曲程度和摩擦力的预测结果基本上拟合理论值。

2.2 算法计算性能实验

上一节中进行的数值验证实验侧重于验证DER求解器的算法精度和收敛性,在本节中,作者对DER的计算性能也进行了评估。如下图所示,作者使用DER进行了毛发实验,分别对带有16000根和128000根毛发的实验体进行了模拟实验,模拟目标包括连续时间碰撞和非连续时间碰撞两种。

由于超出了单个GPU的显存限制,对于"Hairball 128k, CT"场景,作者在2个GPU上进行测试,并且使用了相同质量的分割技术来处理涉及在不同GPU上的顶点的接触。下表总结了模拟计算计时结果,其中16000根毛发的配置几乎可以以实时交互式的帧率运行,而毛发规模更大的128000根的配置则需要约40分钟才能完成。

2.3 本文方法的应用场景

本文提出的基于ADMM的DER离散模拟求解器已经达到了远超传统方法的模拟精确率和计算效率。本文作者随后为DER展望了一个非常有趣的应用方向,即在人类发型设计方面引入DER作为AI助理。例如,作者设想了一种基于物理模拟的原始编辑工具,用户可以用于对发型进行调整,调整过程中算法会遵循发型本身的弹性和自碰撞约束等条件,来确保发型的真实层次和体积,并为用户提供实时的发型预览。

此外,作者还尝试以程序化方式来调用这种AI助手,如上图所示,作者为模拟器提供了一系列的基本操作(例如外力摆动、生长或修剪头发等),基于这些操作,用户可以以多种不同的方式进行组合,快速生成大量候选的发型,真有AI Tony老师的感觉了。

三、总结

本文提出了一种基于ADMM算法的毛发离散模拟求解器DER,与循环迭代的牛顿法相比,ADMM的计算成本要低得多,本文在此基础上提出了一些启发式方法,来根据模拟场景来调整每根头发多边形实例的约束权重,实现了非常逼真的模拟效果。此外,基于英伟达的专业计算GPU,作者对DER也进行了并行计算优化,大大减轻了算法的运算量,实现了数千甚至上万根毛发的实时模拟。除了内部的算法设计,作者还考虑到了DER在用户体验端的一些设计,除了现有的一些程序化编辑方式,作者在未来还考虑为DER增加一些触觉反馈机制和智能选择工具,这可以使用户在任何角度上操纵、梳理和修剪头发,使整体的使用体验更接近真实的理发店场景,到那时,我们就可以在电脑上为自己设计发型了。

参考

[1] Miles Macklin, Matthias Müller, and Nuttapong Chentanez. 2016. XPBD: PositionBased Simulation of Compliant Constrained Dynamics. In Proceedings of the 9th International Conference on Motion in Games (Burlingame, California) (MIG ’16). Association for Computing Machinery, New York, NY, USA, 49–54

作者:seven_

Illustration by IconScout Store from IconScout

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

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

相关文章

thinkphp 反序列化漏洞

文章目录 配置xdebug反序列化漏洞利用链详细分析poc1(任意文件删除)poc2(任意命令执行) 补充代码 配置xdebug php.ini [Xdebug] zend_extensionD:/phpstudy_pro/Extensions/php/php7.3.4nts/ext/php_xdebug.dll xdebug.modedebu…

机器学习之K-means聚类算法

目录 K-means聚类算法 算法流程 优点 缺点 随机点聚类 人脸聚类 旋转物体聚类 K-means聚类算法 K-means聚类算法是一种无监督的学习方法,通过对样本数据进行分组来发现数据内在的结构。K-means的基本思想是将n个实例分成k个簇,使得同一簇内数据相…

井盖异动监测传感器:井盖的安全守护者

随着城市化进程的不断加速,城市道路、人行道上的井盖扮演着重要的角色。然而,由于各种因素,如车辆冲击、材料老化等,井盖常常会出现异动情况,井盖异动不仅对行车和行人的安全构成威胁,还给城市基础设施的维…

机器学习之PCA算法

目录 PCA算法 PCA目标 PCA原理推导 基于最大可分性推导 基于最近重构误差推导 PCA算法流程 PCA优点 PCA缺点 基于PCA的人脸识别 PCA算法 PCA,即主成分分析(Principal Component Analysis),是一种常用的降维技术&#x…

0-1BFS 双端队列 广度优先搜索

一. BFS及0-1BFS的简单介绍 深度优先搜索DFS和广度优先搜索BFS是经常使用的搜索算法,在各类题目中都有广泛的应用。 深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。其过程简要来说…

【DBA专属】mysql-------->>>MMM高可用集群架构

Mysql---MMM高可用集群架构 目录 MMM安装部署 环境配置:(所有主机配置) 1、主机信息 2、关闭防火墙 3、同步时区 4、配置主机解析文件 5、配置ssh免密登录 6、所有机器安装epel源 数据库配置: 【所有数据库均做的配置】…

【探索 Kubernetes|作业管理篇 系列 9】Pod 的服务对象

前言 大家好,我是秋意零。 在上一篇中,我们介绍了 Pod 的生命周期以及区分 Pod 字段的层次级别,相信你对此有了充分的认识。 今天,我们还会接着以 Pod 展开,说说它的 “服务对象”,一听就知道是对 Pod 提…

Vuforia专题:设置AR摄像头自动对焦

Vuforia专题:设置AR摄像头自动对焦 一,前言 在之前使用的时候,如果没有设置自动对焦可以发现,摄像头画面极其模糊。并导致识别的结果不是很理想 加上自动对焦后的效果如下: 二、具体步骤 1、ARCamera添加脚本Cam…

嵌入式中C++开发的基本操作方法

第一:面向对象 1、配置环境 虚拟机上网(ping www.baidu.com)sudo apt-get update //更新软件包sudo apt-get install -f //更新软件依赖sudo apt-get install g //安装c编译器 2、C发展 c98,第一版 c03,c11,c17 3、为什么学习C 4、面向对…

计算机网络——网络层

序言 计算机网络中的网络层在当今的社会起到了什么作用? 现在的互联网通信,远程办公和远程教育,电子商务和在线服务,信息共享和社交媒体,物联网和智能家居都是通过网络层才能使用的。它连接了人们、设备和信息&#xf…

MyBatis 执行流程详解及示例代码

导言: MyBatis 是一个优秀的持久层框架,它简化了数据库操作的开发过程。本文将详细介绍 MyBatis 的执行流程,并提供相应的示例代码,帮助读者更好地理解和应用 MyBatis。 1. 创建 SqlSessionFactoryBuilder 对象 在 MyBatis 中&…

【SpringCloud学习笔记】gateway网关

gateway网关 核心概念: 路由(route):路由信息由 D、目标 RI、一组断言和一组过滤器组成。如果断言路由为真,则说明请求的 URI 和配配断言(predicate): Java8 中的断言函数&#xf…