本文经AI新媒体量子比特(公众号ID:QbitAI)授权转载,转载请联系出处。只需99行代码,你也可以像《冰雪奇缘》中的艾莎公主一样拥有冰雪魔法。虽然你不能在现实世界中施展魔法,但你可以在电脑的虚拟世界中使用特效。也许你不知道,电影和动画中的特效有时只是短短的一秒钟,但它们可能需要一台高性能计算机进行一周的计算,其成本高得惊人。《冰雪奇缘》没有真人主演,预算却高达1.5亿美元,每一秒的镜头都在烧钱。用电脑制作CG特效对于一般人来说是不可想象的。不过最近一位来自中国的麻省理工博士开发了一种新的CG特效编程语言太极(TaiChi),大大降低了门槛。△白色:雪;红色:果冻;蓝色:水。一个简单的物理场景可以用普通PC在几分钟内渲染出来,比TensorFlow快188倍,比PyTorch快13.4倍。代码长度只有其他底层方法的十分之一安装起来和TensorFlow一样简单,使用起来也差不多:importtaichiasti就连太极拳的发明者胡元明都为它写了完整的教程。关于太极,胡老师发表多篇文章,分别被SIGGRAGH2018、ICRA2019、NeurIPS2019、ICLR2020等顶级会议收录。计算机图形学知名学者、北京大学教授陈宝全,给了很高的评价:给胡元明点个赞!一手研发出物理模拟编程语言Taichi!源明能投入如此大的精力写出有影响力的开源代码,实属难得。像SIGGRAPH,可能需要1~2年才能出结果,论文接受率低。即使能发表,引用率也不高。网友们看完后也纷纷表示:元明太强了。图形+系统+编译真是创造的乐趣。88行代码模拟真实的物理环境。正如胡总自己所说,99行代码很短,但背后的技术故事却很长。故事的开头要从质点法说起。MPM是一种在影视特效领域广受青睐的模拟连续谱方法。迪士尼的《冰雪奇缘》就使用了这项技术。但是早期MPM的运行速度很慢。比如《冰雪奇缘》Liana穿越雪原的场景,据说要在集群上跑整整一周。为了提高MPM的运行速度和性能,胡元明在大四暑假期间全身心投入到移动最小二乘法MPM(MLS-MPM)的研究中。胡元明的灵感是用移动最小二乘法统一了APIC(TheAffineParticle-In-CellMethod)中的仿射梯度场(affinevelocityfield)和MPM中的变形梯度更新(deformationgradientupdate)的两种离散化.在宾夕法尼亚大学江陈凡夫教授的指导下,胡元明等人完成了移动最小二乘材料点法(MLS-MPM)的研究,不仅实现了应力散布的新离散化,而且使操作MPM的速度更快。它还成功地模拟了MPM以前不支持的各种新现象。比如材料切割:Two-waycouplingofrigidbodys:这个结果最终发表在SIGGRAPH2018上。为了进一步证明MLS-MPM的简单性,胡元明用88行C++代码实现了MLS-MPM的demo.(代码详情请点击文末taichi_mpm项目链接)。这个88行的版本后来成为MPM入门必备的参考实现。2017年夏天ChainQueen的微分物理引擎结束后,胡远明正式进入麻省理工学院攻读博士学位。这时,胡元明有了新的灵感:寻找MLS-MPM的导数。使用导数,神经网络控制器可以仅使用梯度下降来优化。在这个想法的指导下,ChainQueen诞生了。胡元明解释说,Chain是为了纪念他在推导过程中被链式法则折磨的经历,而ChainQueen与乾坤谐音。乾坤基于MLS-MPM,它是一种实时可微分混合拉格朗日-欧拉物理模拟器,适用于可变形物体。该模拟器在正向模拟和反向梯度计算中均实现了高精度。该研究发表在ICRA2019上,胡远明也完成了硕士论文。DiffTaichi随后,胡先生更进一步,提出了可微分编程DiffTaichi,并被收录在ICLR2020中。在这篇文章的代码中,胡先生创建了10个不同的物理模拟器,并与现有基准进行性能对比。Taichi中的可微分编程可通过强力梯度下降有效优化神经网络控制器,而无需使用强化学习。10个可微分模拟器中的大多数可以在2-3小时内实现,并且大多数不需要GPU。在这些示例中,弹性体、刚体、流体、光折射、弹性碰撞和常见的物理环境都可用。第一个可微分弹性物体模拟器的例子,经过我们的实测,也可以在2017版13寸MacBookPro上运行,不到十分钟就完成了优化:不仅是2D,而且更复杂3D弹性体也可以模拟:还有一个可微分的3D流体模拟器,经过450步梯度下降迭代后非常逼真:DiffTaichi模拟水光折射的渲染器,一张图甚至可以骗过它之后的图像被渲染分类器。经过测试,VGG16将带有水波纹的松鼠图片看成是金鱼,概率为99.91%。在强化学习的模拟环境中,刚体机器人很常见,DiffTaichi也可以模拟:DiffTaichi还可以模拟多个物体的复杂场景,比如台球:Taichi语言编写的模拟器大大简化了代码,可微分的弹性物体模拟器仅使用了110行代码,而直接在CUDA中编写了490行代码。同时,Taichi还是非常快的,与CUDA版本相比几乎没有损失,比TensorFlow快188倍,比PyTorch快13.4倍。而且,神经网络控制器一般只需要几十次迭代就可以完成优化。为什么要做太极在谈到为什么要做太极时,计算机图形学一直缺少像TensorFlow这样的通用工具。凡是想搞开发的,都必须了解基本原理,才能进行编程。这与深度学习领域形成鲜明对比。这几年甚至有中学生用TensorFlow或者PyTorch写一点代码,优化几个模型,就可以在一些顶级会议上发表论文了。很多人认为这是一件坏事,因为深度学习论文的含金量大大降低了。.但胡远明看到了另一面。他认为,深度学习之所以近几年发展迅速,门槛低,是因为有好用的好工具。由于缺乏类似的工具,计算机绘图令人望而生畏,因此他开发了太极。本来是要把Taichi做成一个单独的编程语言,但是为了方便大家,胡元明用了一句importtaichiasti,把Taichi语言伪装成了Python。改为基于Python,这样做的好处不仅是降低了学习门槛,还可以使用很多现成的PythonIDE,与numpy、matplotlib等工具库无缝对接。经过几个月的努力,胡远明终于将Taichi改成了pypi安装包,让不同配置、不同操作系统的机器都能流畅运行图形程序。高一保送清华,考研第一年有6篇论文提到胡元明。这是又一位从少年时代就开始发光的“大神”球员。高一时,他被推荐到清华大学。在他的比赛生涯中,他在APIO2012、NOI2012、ACM-ICPC2013长沙赛区、ACM-ICPC上海赛区获得四枚金牌。APIO2012在比赛中获得第一名。2013年进入清华姚班,胡远鸣与陈立杰、范浩强等人成为同学。这群年轻人的才智在这里汇聚碰撞,用“姚班”二字相互成就。本科期间,胡元明先后访问东京大学和斯坦福大学,并在微软亚洲研究院实习,从事深度学习和计算机图形学研究。本科期间有多篇论文入选CVPR、SIGGRAPH等国际顶级会议。2017年,胡元明进入麻省理工学院攻读博士学位。入学13个月后,他完成了硕士论文ChainQueen,获得了麻省理工学院的硕士学位。第一博士期间共发表TopConference论文6篇。最后,如果你想更深入地了解这99行代码背后的研究过程,不妨看看胡元明的知乎专栏。大师不仅代码写得好,码字蒸蛋也很会~传送门胡渊明知乎原文:https://zhuanlan.zhihu.com/p/97700605论文地址:https://arxiv.org/abs/1910.00935太极项目地址:https://github.com/yuanming-hu/taichitaichi_mpm项目地址:https://github.com/yuanming-hu/taichi_mpm
