清华姚班毕业生开发新特效编程语言,99行代码实现《冰雪奇缘》
邊策魚羊發(fā)自凹非寺
量子位報(bào)道公眾號 QbitAI
只用 99 行代碼,你也可以像《冰雪奇緣》里的艾莎公主一樣擁有冰雪魔法。
雖然你不能在現(xiàn)實(shí)世界中肆意變出魔法,但卻能在計(jì)算機(jī)的虛擬世界揮灑特效。
或許你不知道,電影和動(dòng)畫中特效有時(shí)僅僅短短的一秒,卻可能需要高性能計(jì)算機(jī)演算一周,花費(fèi)驚人。
《冰雪奇緣》沒有真人出演,預(yù)算卻高達(dá) 1.5 億美元,每一秒的鏡頭都是經(jīng)費(fèi)在燃燒。一般人想用電腦做出 CG 特效簡直不可想象。
然而,最近一位來自中國的 MIT 博士,開發(fā)了一種新的 CG 特效編程語言Taichi(太極),大大降低了門檻。
白色:雪;紅色:果凍;藍(lán)色:水
一個(gè)簡單的物理場景,普通 PC 僅需幾分鐘即可渲染完成,相比 TensorFlow 提速了 188 倍、比 PyTorch 快 13.4 倍,代碼長度只有其他底層方法的十分之一。
安裝它就像 TensorFlow 一樣容易,使用起來也是差不多:
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)給出很高的評價(jià):
給胡淵鳴同學(xué)點(diǎn)贊!一己之力開發(fā)了物理模擬編程語言 Taichi!
像淵鳴這樣如此投入寫有影響力的開源代碼實(shí)在是難能可貴。
像 SIGGRAPH 這樣的,可能要投入1~2 年才會(huì)有成果,論文接受率低,即使能發(fā)表出來,引用率也不高。
網(wǎng)友們在圍觀之后也紛紛表示:淵鳴大神太強(qiáng)了。
圖形+系統(tǒng)+編譯,真是創(chuàng)世的快樂。
88 行代碼模擬真實(shí)物理環(huán)境
正如胡同學(xué)本人所說,99 行代碼很短,背后的技術(shù)故事卻很長。
故事的開頭,要從 Material Point Method(物質(zhì)點(diǎn)法)說起。
MPM 是一種在影視特效領(lǐng)域廣受青睞的模擬連續(xù)介質(zhì)方法,迪士尼的《冰雪奇緣》就用到了這項(xiàng)技術(shù)。
但在早期,MPM 的運(yùn)行速度非常慢,比如《冰雪奇緣》里安娜過雪地的鏡頭,據(jù)說要在集群上跑整整一個(gè)星期。
為了提高 MPM 的運(yùn)行速度和性能,在大四畢業(yè)的那個(gè)暑假,胡淵鳴投入了 Moving Least Squares MPM(MLS-MPM)的研究。
胡淵鳴的靈感是,用移動(dòng)最小二乘法統(tǒng)一 AIPC(The Affine Particle-In-Cell Method)中的仿射梯度場(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)象。
比如材料切割:
剛性體的雙向耦合:
這項(xiàng)成果最終發(fā)表在了 SIGGRAPH 2018 上。
為了進(jìn)一步證明 MLS-MPM 的簡易性,胡淵鳴用88 行 C++ 代碼實(shí)現(xiàn)了 MLS-MPM 的 demo。(代碼詳情請戳文末 taichi_mpm 項(xiàng)目鏈接)。
這個(gè) 88 行版本后來也成為了入門 MPM 的必備參考實(shí)現(xiàn)。
乾坤(ChainQueen)可微物理引擎
2017 年的夏天結(jié)束之后,胡淵鳴正式進(jìn)入 MIT 讀博。
這時(shí)候,胡淵鳴又迸發(fā)了新的靈感:求出 MLS-MPM 的導(dǎo)數(shù)。有了導(dǎo)數(shù),就能只用梯度下降來優(yōu)化神經(jīng)網(wǎng)絡(luò)控制器。
在這一思想的指導(dǎo)下,ChainQueen 誕生了。
胡淵鳴解釋說,chain 是為了紀(jì)念他在求導(dǎo)過程中被鏈?zhǔn)椒▌t折磨的經(jīng)歷,而 ChainQueen 則與乾坤諧音。
乾坤基于 MLS-MPM,是一種針對可變形對象的、實(shí)時(shí)的可微混合拉格朗日-歐拉物理模擬器。該模擬器在前向仿真和反向梯度計(jì)算中均實(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)對其性能進(jìn)行基準(zhǔn)測試。
Taichi 中的可微分編程,可以通過蠻力的梯度下降有效地優(yōu)化神經(jīng)網(wǎng)絡(luò)控制器,而不必使用強(qiáng)化學(xué)習(xí)。
10 種可微分模擬器中的大多數(shù)模型可以在2-3 小時(shí)內(nèi)實(shí)現(xiàn),而且大部分不需要 GPU。這些示例中,彈性體、剛體、流體、光線的折射、彈性碰撞,常見物理環(huán)境應(yīng)有盡有。
第一個(gè)示例可微分彈性對象模擬器,經(jīng)過我們的實(shí)測,在 2017 版 13 寸的 MacBook Pro 上也能運(yùn)行,而且完成優(yōu)化只需不到十分鐘的時(shí)間:
不僅是 2D,更復(fù)雜的3D 彈性體也能模擬:
還有可微分的3D 流體模擬器,經(jīng)過 450 步的梯度下降迭代,已經(jīng)非常逼真:
DiffTaichi 模擬水對光線折射的渲染器,一張圖片經(jīng)過它的渲染,甚至能騙過圖像分類器。經(jīng)過測試,VGG16 將帶有水波紋的松鼠圖片當(dāng)做金魚,而且認(rèn)為概率為 99.91%。
在強(qiáng)化學(xué)習(xí)的模擬環(huán)境中,剛體機(jī)器人很常見,DiffTaichi 也能模擬:
DiffTaichi 還能模擬多個(gè)物體的復(fù)雜場景,比如臺(tái)球:
用 Taichi 語言編寫的模擬器大大簡化了代碼,可微分彈性對象模擬器只用了 110 行代碼,而直接用 CUDA 編寫則需要 490 行。
同時(shí),Taichi 的速度還很快,相比 CUDA 版本幾乎沒有什么損失,比 TensorFlow 快了 188 倍,比 PyTorch 快 13.4 倍。
而且神經(jīng)網(wǎng)絡(luò)控制器一般只需要幾十次迭代,即可完成優(yōu)化。
為何做 Taichi
談到為何要做 Taichi,計(jì)算機(jī)圖形學(xué)一直缺乏像 TensorFlow 那樣的通用工具,每個(gè)要從事開發(fā)的人都必須了解基本原理,才能去做編程。
這和深度學(xué)習(xí)領(lǐng)域形成了鮮明的對比。
近年來,甚至有中學(xué)生,利用 TensorFlow 或者 PyTorch,寫一點(diǎn)代碼,優(yōu)化幾個(gè)模型,就可以在一些頂會(huì)上發(fā)表論文,許多人看來,這是件壞事,因?yàn)樽屔疃葘W(xué)習(xí)論文的含金量大大降低。
但胡淵鳴看到了另一面。他認(rèn)為,深度學(xué)習(xí)這些年之所以能發(fā)展快、門檻低,就是因?yàn)橛泻唵我子玫暮霉ぞ?,?jì)算機(jī)圖形學(xué)讓人望而卻步,就是因?yàn)槿狈︻愃频墓ぞ?,因此他開發(fā)了 Taichi。
本來 Taichi 要做成一種單獨(dú)的編程語言,但是為了方便大家使用,胡淵鳴用了一句 import taichi as ti 把 Taichi 語言假裝成 Python。
改成基于 Python,這樣做的好處不僅是降低學(xué)習(xí)門檻,還能使用很多現(xiàn)成的 Python IDE,與 numpy、matplotlib 等工具庫無縫銜接。
經(jīng)過幾個(gè)月的努力,胡淵鳴終于把 Taichi 改成了 pypi 安裝包,讓不同配置不同操作系統(tǒng)的機(jī)器都能順利運(yùn)行圖形學(xué)的程序。
高一保送清華,博一 6 篇 paper
說起胡淵鳴,這又是一位從少年時(shí)代起就熠熠閃光的“大神級”選手。
高一保送清華,競賽生涯中,拿下 APIO 2012、NOI 2012、ACM-ICPC 2013 長沙區(qū)域賽、ACM-ICPC 上海區(qū)域賽四塊金牌,其中 APIO 2012 成績是全場第一名。
2013 年進(jìn)入清華姚班,胡淵鳴與陳立杰、范浩強(qiáng)等人成為同班同學(xué),這群年輕人的才華在這里匯聚、碰撞,與“姚班”二字相互成就。
本科期間,胡淵鳴先后前往東京大學(xué)、斯坦福大學(xué)訪學(xué),并曾于微軟亞洲研究院實(shí)習(xí),從事深度學(xué)習(xí)和計(jì)算機(jī)圖形學(xué)研究。本科便有多篇論文中選 CVPR、SIGGRAPH 等國際頂會(huì)。
2017 年,胡淵鳴進(jìn)入 MIT 讀博。入學(xué) 13 個(gè)月后,完成碩士論文 ChainQueen,拿到 MIT 碩士學(xué)位。博一期間,共發(fā)表 6 篇頂會(huì)論文。
最后,如果想了解這 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
作者系網(wǎng)易新聞·網(wǎng)易號“各有態(tài)度”簽約作者
總結(jié)
以上是生活随笔為你收集整理的清华姚班毕业生开发新特效编程语言,99行代码实现《冰雪奇缘》的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 地球上新发现的71个新物种:猫眼天竺鲷眼
- 下一篇: “没电下回聊”这个借口要废了!手机QQ上