清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

邊策 魚羊 發(fā)自 凹非寺
量子位 報(bào)道 | 公眾號(hào) QbitAI

只用99行代碼,你也可以像《冰雪奇緣》里的艾莎公主一樣擁有冰雪魔法。

雖然你不能在現(xiàn)實(shí)世界中肆意變出魔法,但卻能在計(jì)算機(jī)的虛擬世界揮灑特效。

清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

或許你不知道,電影和動(dòng)畫中特效有時(shí)僅僅短短的一秒,卻可能需要高性能計(jì)算機(jī)演算一周,花費(fèi)驚人。

《冰雪奇緣》沒(méi)有真人出演,預(yù)算卻高達(dá)1.5億美元,每一秒的鏡頭都是經(jīng)費(fèi)在燃燒。一般人想用電腦做出CG特效簡(jiǎn)直不可想象。

然而,最近一位來(lái)自中國(guó)的MIT博士,開(kāi)發(fā)了一種新的CG特效編程語(yǔ)言Taichi太極),大大降低了門檻。

清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

△白色:雪;紅色:果凍;藍(lán)色:水

一個(gè)簡(jiǎn)單的物理場(chǎng)景,普通PC僅需幾分鐘即可渲染完成,相比TensorFlow提速了188倍、比PyTorch快13.4倍,代碼長(zhǎng)度只有其他底層方法的十分之一。

安裝它就像TensorFlow一樣容易,使用起來(lái)也是差不多:

import?taichi?as?ti

甚至,Taichi的發(fā)明者胡淵鳴同學(xué)還為此編寫了完整使用教程。

關(guān)于Taichi,胡同學(xué)已經(jīng)發(fā)表了多篇文章,分別被SIGGRAGH 2018、ICRA 2019、NeurIPS2019、ICLR 2020等頂會(huì)收錄。

計(jì)算機(jī)圖形學(xué)知名學(xué)者、北大教授陳寶權(quán)給出很高的評(píng)價(jià):

給胡淵鳴同學(xué)點(diǎn)贊!一己之力開(kāi)發(fā)了物理模擬編程語(yǔ)言 Taichi!

像淵鳴這樣如此投入寫有影響力的開(kāi)源代碼實(shí)在是難能可貴。

像SIGGRAPH這樣的,可能要投入1~2年才會(huì)有成果,論文接受率低,即使能發(fā)表出來(lái),引用率也不高。

清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

網(wǎng)友們?cè)趪^之后也紛紛表示:淵鳴大神太強(qiáng)了。

圖形 系統(tǒng) 編譯,真是創(chuàng)世的快樂(lè)。

清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

88行代碼模擬真實(shí)物理環(huán)境

正如胡同學(xué)本人所說(shuō),99行代碼很短,背后的技術(shù)故事卻很長(zhǎng)。

故事的開(kāi)頭,要從Material Point Method(物質(zhì)點(diǎn)法)說(shuō)起。

MPM是一種在影視特效領(lǐng)域廣受青睞的模擬連續(xù)介質(zhì)方法,迪士尼的《冰雪奇緣》就用到了這項(xiàng)技術(shù)。

清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

但在早期,MPM的運(yùn)行速度非常慢,比如《冰雪奇緣》里安娜過(guò)雪地的鏡頭,據(jù)說(shuō)要在集群上跑整整一個(gè)星期。

為了提高M(jìn)PM的運(yùn)行速度和性能,在大四畢業(yè)的那個(gè)暑假,胡淵鳴投入了Moving Least Squares MPM(MLS-MPM)的研究。

清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

胡淵鳴的靈感是,用移動(dòng)最小二乘法統(tǒng)一APIC(The Affine Particle-In-Cell Method)中的仿射梯度場(chǎng)(affine velocity field)和MPM中的變形梯度更新(deformation gradient update)兩種離散化。

在賓夕法尼亞大學(xué)蔣陳凡夫教授的指導(dǎo)下,胡淵鳴等人完成了移動(dòng)最小二乘物質(zhì)點(diǎn)法(MLS-MPM)方法的研究,不僅實(shí)現(xiàn)了新的應(yīng)力散度離散化,使MPM的運(yùn)行速度快了兩倍,還成功模擬了MPM此前并不支持的各種新現(xiàn)象。

比如材料切割:

清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

剛性體的雙向耦合:

清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

這項(xiàng)成果最終發(fā)表在了SIGGRAPH 2018上。

為了進(jìn)一步證明MLS-MPM的簡(jiǎn)易性,胡淵鳴用88行C 代碼實(shí)現(xiàn)了MLS-MPM的demo。(代碼詳情請(qǐng)戳文末 taichi_mpm 項(xiàng)目鏈接)。

這個(gè)88行版本后來(lái)也成為了入門MPM的必備參考實(shí)現(xiàn)。

清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

乾坤(ChainQueen)可微物理引擎

2017年的夏天結(jié)束之后,胡淵鳴正式進(jìn)入MIT讀博。

這時(shí)候,胡淵鳴又迸發(fā)了新的靈感:求出MLS-MPM的導(dǎo)數(shù)。有了導(dǎo)數(shù),就能只用梯度下降來(lái)優(yōu)化神經(jīng)網(wǎng)絡(luò)控制器。

在這一思想的指導(dǎo)下,ChainQueen誕生了。

胡淵鳴解釋說(shuō),chain是為了紀(jì)念他在求導(dǎo)過(guò)程中被鏈?zhǔn)椒▌t折磨的經(jīng)歷,而ChainQueen則與乾坤諧音。

乾坤基于MLS-MPM,是一種針對(duì)可變形對(duì)象的、實(shí)時(shí)的可微混合拉格朗日-歐拉物理模擬器。該模擬器在前向仿真和反向梯度計(jì)算中均實(shí)現(xiàn)了高精度。

清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

這項(xiàng)研究發(fā)表在了ICRA 2019上,胡淵鳴也以此完成了碩士論文。

DiffTaichi

隨后,胡同學(xué)將工作又推進(jìn)一步,提出了可微分編程DiffTaichi,被ICLR 2020收錄。

在這篇文章的代碼中,胡同學(xué)創(chuàng)建了10個(gè)不同的物理模擬器,并根據(jù)現(xiàn)有基準(zhǔn)對(duì)其性能進(jìn)行基準(zhǔn)測(cè)試。

Taichi中的可微分編程,可以通過(guò)蠻力的梯度下降有效地優(yōu)化神經(jīng)網(wǎng)絡(luò)控制器,而不必使用強(qiáng)化學(xué)習(xí)。

10種可微分模擬器中的大多數(shù)模型可以在2-3小時(shí)內(nèi)實(shí)現(xiàn),而且大部分不需要GPU。這些示例中,彈性體、剛體、流體、光線的折射、彈性碰撞,常見(jiàn)物理環(huán)境應(yīng)有盡有。

第一個(gè)示例可微分彈性對(duì)象模擬器,經(jīng)過(guò)我們的實(shí)測(cè),在2017版13寸的MacBook Pro上也能運(yùn)行,而且完成優(yōu)化只需不到十分鐘的時(shí)間:

清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

不僅是2D,更復(fù)雜的3D彈性體也能模擬:

清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

還有可微分的3D流體模擬器,經(jīng)過(guò)450步的梯度下降迭代,已經(jīng)非常逼真:

清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

DiffTaichi模擬水對(duì)光線折射的渲染器,一張圖片經(jīng)過(guò)它的渲染,甚至能騙過(guò)圖像分類器。經(jīng)過(guò)測(cè)試,VGG16將帶有水波紋的松鼠圖片當(dāng)做金魚,而且認(rèn)為概率為99.91%。

清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

在強(qiáng)化學(xué)習(xí)的模擬環(huán)境中,剛體機(jī)器人很常見(jiàn),DiffTaichi也能模擬:

清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

DiffTaichi還能模擬多個(gè)物體的復(fù)雜場(chǎng)景,比如臺(tái)球:

清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

用Taichi語(yǔ)言編寫的模擬器大大簡(jiǎn)化了代碼,可微分彈性對(duì)象模擬器只用了110行代碼,而直接用CUDA編寫則需要490行。

同時(shí),Taichi的速度還很快,相比CUDA版本幾乎沒(méi)有什么損失,比TensorFlow快了188倍,比PyTorch快13.4倍。

清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

而且神經(jīng)網(wǎng)絡(luò)控制器一般只需要幾十次迭代,即可完成優(yōu)化。

為何做Taichi

談到為何要做Taichi,計(jì)算機(jī)圖形學(xué)一直缺乏像TensorFlow那樣的通用工具,每個(gè)要從事開(kāi)發(fā)的人都必須了解基本原理,才能去做編程。

這和深度學(xué)習(xí)領(lǐng)域形成了鮮明的對(duì)比。

近年來(lái),甚至有中學(xué)生,利用TensorFlow或者PyTorch,寫一點(diǎn)代碼,優(yōu)化幾個(gè)模型,就可以在一些頂會(huì)上發(fā)表論文,許多人看來(lái),這是件壞事,因?yàn)樽屔疃葘W(xué)習(xí)論文的含金量大大降低。

但胡淵鳴看到了另一面。他認(rèn)為,深度學(xué)習(xí)這些年之所以能發(fā)展快、門檻低,就是因?yàn)橛泻?jiǎn)單易用的好工具,計(jì)算機(jī)圖形學(xué)讓人望而卻步,就是因?yàn)槿狈︻愃频墓ぞ撸虼怂_(kāi)發(fā)了Taichi。

本來(lái)Taichi要做成一種單獨(dú)的編程語(yǔ)言,但是為了方便大家使用,胡淵鳴用了一句import taichi as ti把Taichi語(yǔ)言假裝成Python。

改成基于Python,這樣做的好處不僅是降低學(xué)習(xí)門檻,還能使用很多現(xiàn)成的Python IDE,與numpy、matplotlib等工具庫(kù)無(wú)縫銜接。

經(jīng)過(guò)幾個(gè)月的努力,胡淵鳴終于把Taichi改成了pypi安裝包,讓不同配置不同操作系統(tǒng)的機(jī)器都能順利運(yùn)行圖形學(xué)的程序。

高一保送清華,博一6篇paper

說(shuō)起胡淵鳴,這又是一位從少年時(shí)代起就熠熠閃光的“大神級(jí)”選手。

清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

高一保送清華,競(jìng)賽生涯中,拿下APIO 2012、NOI 2012、ACM-ICPC 2013長(zhǎng)沙區(qū)域賽、ACM-ICPC上海區(qū)域賽四塊金牌,其中APIO 2012成績(jī)是全場(chǎng)第一名。

2013年進(jìn)入清華姚班,胡淵鳴與陳立杰、范浩強(qiáng)等人成為同班同學(xué),這群年輕人的才華在這里匯聚、碰撞,與“姚班”二字相互成就。

本科期間,胡淵鳴先后前往東京大學(xué)、斯坦福大學(xué)訪學(xué),并曾于微軟亞洲研究院實(shí)習(xí),從事深度學(xué)習(xí)和計(jì)算機(jī)圖形學(xué)研究。本科便有多篇論文中選CVPR、SIGGRAPH等國(guó)際頂會(huì)。

2017年,胡淵鳴進(jìn)入MIT讀博。入學(xué)13個(gè)月后,完成碩士論文ChainQueen,拿到MIT碩士學(xué)位。博一期間,共發(fā)表6篇頂會(huì)論文。

清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》清華姚班畢業(yè)生開(kāi)發(fā)新特效編程語(yǔ)言,99行代碼實(shí)現(xiàn)《冰雪奇緣》

最后,如果想了解這99行代碼背后更多的研究歷程,不妨讀一讀胡淵鳴本人的知乎專欄文章。大神不僅代碼寫得好,碼字和蒸雞蛋也是好手呢~

傳送門

胡淵鳴知乎原文:
https://zhuanlan.zhihu.com/p/97700605

論文地址:
https://arxiv.org/abs/1910.00935

太極項(xiàng)目地址:
https://github.com/yuanming-hu/taichi

taichi_mpm項(xiàng)目地址:
https://github.com/yuanming-hu/taichi_mpm

— 完 —

量子位 QbitAI · 頭條號(hào)簽約

關(guān)注我們,第一時(shí)間獲知前沿科技動(dòng)態(tài)

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號(hào)
公眾號(hào)
在線咨詢
分享本頁(yè)
返回頂部