清華姚班畢業生開發新特效程式語言,99行代碼實現《冰雪奇緣》

2020-12-15 量子位

邊策 魚羊 發自 凹非寺量子位 報導 | 公眾號 QbitAI

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

雖然你不能在現實世界中肆意變出魔法,但卻能在計算機的虛擬世界揮灑特效。

或許你不知道,電影和動畫中特效有時僅僅短短的一秒,卻可能需要高性能計算機演算一周,花費驚人。

《冰雪奇緣》沒有真人出演,預算卻高達1.5億美元,每一秒的鏡頭都是經費在燃燒。一般人想用電腦做出CG特效簡直不可想像。

然而,最近一位來自中國的MIT博士,開發了一種新的CG特效程式語言Taichi(太極),大大降低了門檻。

△白色:雪;紅色:果凍;藍色:水

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

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

importtaichiasti

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

關於Taichi,胡同學已經發表了多篇文章,分別被SIGGRAGH 2018、ICRA 2019、NeurIPS2019、ICLR 2020等頂會收錄。

計算機圖形學知名學者、北大教授陳寶權給出很高的評價:

給胡淵鳴同學點讚!一己之力開發了物理模擬程式語言 Taichi!像淵鳴這樣如此投入寫有影響力的開原始碼實在是難能可貴。像SIGGRAPH這樣的,可能要投入1~2年才會有成果,論文接受率低,即使能發表出來,引用率也不高。

網友們在圍觀之後也紛紛表示:淵鳴大神太強了。

圖形+系統+編譯,真是創世的快樂。

88行代碼模擬真實物理環境

正如胡同學本人所說,99行代碼很短,背後的技術故事卻很長。

故事的開頭,要從Material Point Method(物質點法)說起。

MPM是一種在影視特效領域廣受青睞的模擬連續介質方法,迪士尼的《冰雪奇緣》就用到了這項技術。

但在早期,MPM的運行速度非常慢,比如《冰雪奇緣》裡安娜過雪地的鏡頭,據說要在集群上跑整整一個星期。

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

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

在賓夕法尼亞大學蔣陳凡夫教授的指導下,胡淵鳴等人完成了移動最小二乘物質點法(MLS-MPM)方法的研究,不僅實現了新的應力散度離散化,使MPM的運行速度快了兩倍,還成功模擬了MPM此前並不支持的各種新現象。

比如材料切割:

剛性體的雙向耦合:

這項成果最終發表在了SIGGRAPH 2018上。

為了進一步證明MLS-MPM的簡易性,胡淵鳴用88行C++代碼實現了MLS-MPM的demo。(代碼詳情請戳文末 taichi_mpm 項目連結)。

這個88行版本後來也成為了入門MPM的必備參考實現。

乾坤(ChainQueen)可微物理引擎

2017年的夏天結束之後,胡淵鳴正式進入MIT讀博。

這時候,胡淵鳴又迸發了新的靈感:求出MLS-MPM的導數。有了導數,就能只用梯度下降來優化神經網絡控制器。

在這一思想的指導下,ChainQueen誕生了。

胡淵鳴解釋說,chain是為了紀念他在求導過程中被鏈式法則折磨的經歷,而ChainQueen則與乾坤諧音。

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

這項研究發表在了ICRA 2019上,胡淵鳴也以此完成了碩士論文。

DiffTaichi

隨後,胡同學將工作又推進一步,提出了可微分編程DiffTaichi,被ICLR 2020收錄。

在這篇文章的代碼中,胡同學創建了10個不同的物理模擬器,並根據現有基準對其性能進行基準測試。

Taichi中的可微分編程,可以通過蠻力的梯度下降有效地優化神經網絡控制器,而不必使用強化學習。

10種可微分模擬器中的大多數模型可以在2-3小時內實現,而且大部分不需要GPU。這些示例中,彈性體、剛體、流體、光線的折射、彈性碰撞,常見物理環境應有盡有。

第一個示例可微分彈性對象模擬器,經過我們的實測,在2017版13寸的MacBook Pro上也能運行,而且完成優化只需不到十分鐘的時間:

不僅是2D,更複雜的3D彈性體也能模擬:

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

DiffTaichi模擬水對光線折射的渲染器,一張圖片經過它的渲染,甚至能騙過圖像分類器。經過測試,VGG16將帶有水波紋的松鼠圖片當做金魚,而且認為概率為99.91%。

在強化學習的模擬環境中,剛體機器人很常見,DiffTaichi也能模擬:

DiffTaichi還能模擬多個物體的複雜場景,比如撞球:

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

同時,Taichi的速度還很快,相比CUDA版本幾乎沒有什麼損失,比TensorFlow快了188倍,比PyTorch快13.4倍。

而且神經網絡控制器一般只需要幾十次迭代,即可完成優化。

為何做Taichi

談到為何要做Taichi,計算機圖形學一直缺乏像TensorFlow那樣的通用工具,每個要從事開發的人都必須了解基本原理,才能去做編程。

這和深度學習領域形成了鮮明的對比。

近年來,甚至有中學生,利用TensorFlow或者PyTorch,寫一點代碼,優化幾個模型,就可以在一些頂會上發表論文,許多人看來,這是件壞事,因為讓深度學習論文的含金量大大降低。

但胡淵鳴看到了另一面。他認為,深度學習這些年之所以能發展快、門檻低,就是因為有簡單易用的好工具,計算機圖形學讓人望而卻步,就是因為缺乏類似的工具,因此他開發了Taichi。

本來Taichi要做成一種單獨的程式語言,但是為了方便大家使用,胡淵鳴用了一句import taichi as ti把Taichi語言假裝成Python。

改成基於Python,這樣做的好處不僅是降低學習門檻,還能使用很多現成的Python IDE,與numpy、matplotlib等工具庫無縫銜接。

經過幾個月的努力,胡淵鳴終於把Taichi改成了pypi安裝包,讓不同配置不同作業系統的機器都能順利運行圖形學的程序。

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

說起胡淵鳴,這又是一位從少年時代起就熠熠閃光的「大神級」選手。

高一保送清華,競賽生涯中,拿下APIO 2012、NOI 2012、ACM-ICPC 2013長沙區域賽、ACM-ICPC上海區域賽四塊金牌,其中APIO 2012成績是全場第一名。

2013年進入清華姚班,胡淵鳴與陳立傑、範浩強等人成為同班同學,這群年輕人的才華在這裡匯聚、碰撞,與「姚班」二字相互成就。

本科期間,胡淵鳴先後前往東京大學、史丹福大學訪學,並曾於微軟亞洲研究院實習,從事深度學習和計算機圖形學研究。本科便有多篇論文中選CVPR、SIGGRAPH等國際頂會。

2017年,胡淵鳴進入MIT讀博。入學13個月後,完成碩士論文ChainQueen,拿到MIT碩士學位。博一期間,共發表6篇頂會論文。

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

傳送門

胡淵鳴知乎原文:

https://zhuanlan.zhihu.com/p/97700605

論文地址:

https://arxiv.org/abs/1910.00935

太極項目地址:

https://github.com/yuanming-hu/taichi

taichi_mpm項目地址:

https://github.com/yuanming-hu/taichi_mpm

相關焦點

  • 清華畢業生開發新特效程式語言,99行代碼實現《冰雪奇緣》
    關注前沿科技 量子位邊策 魚羊 發自 凹非寺量子位 報導 | 公眾號 QbitAI只用99行代碼,你也可以像《冰雪奇緣》裡的艾莎公主一樣擁有冰雪魔法。88行代碼模擬真實物理環境正如胡同學本人所說,99行代碼很短,背後的技術故事卻很長。故事的開頭,要從Material Point Method(物質點法)說起。MPM是一種在影視特效領域廣受青睞的模擬連續介質方法,迪士尼的《冰雪奇緣》就用到了這項技術。
  • 清華畢業生開發新特效程式語言:99 行代碼背後 20 多年的故事……
    不知道大家看沒看《冰雪奇緣2》,反正我看完之後的感覺,就是看兩個公主玩了一百分鐘的塞爾達...沒有任何別的想法...但有一位清華姚班畢業的大佬 —— 胡淵鳴,在看完之後,試著用 99 行代碼實現了冰雪奇緣裡的特效場景:是不是很炫酷?
  • 清華畢業生開發嵌入Python的程式語言,99行代碼實現《冰雪奇緣》
    因為他用99行代碼,實現了《冰雪奇緣》的特效。據悉,當時艾莎施展魔法的特效鏡頭,儘管僅僅呈現短暫的一秒鐘,但卻需要高性能計算機,運算一周的時間。《冰雪奇緣》雖然沒有真人出演,預算卻高達1.5億美元,每一秒的鏡頭都是經費在燃燒。一般人想用電腦做出CG特效簡直不可想像。
  • 清華姚班、麻省理工博士胡淵鳴:99 行代碼實現《冰雪奇緣》
    因為他用99行代碼實現了介質模擬器,從而實現了《冰雪奇緣》的特效。據悉,當時艾莎施展魔法的特效鏡頭,儘管只呈現一秒鐘,但卻需要高性能計算機運算一周的時間,花費也相當驚人。而胡淵鳴僅憑一己之力開發了物理模擬程式語言Taichi,用99行代碼便實現了介質模擬,完成了多個特效的展示,也難怪他受到這麼多人的關注。胡淵鳴今天的成就,並不是一時運氣好,而是厚積薄發的成果。
  • 他高一被保送清華,因開發物理程式語言,獲北大教授陳寶權怒贊
    原因是他開發了物理模擬程式語言Taichi,用99行代碼實現了介質模擬器,從而實現了《冰雪奇緣》的特效。要知道,當初《冰雪奇緣》電影中的特效每一秒都需要耗費大量時間和金錢。據悉,當時艾莎施展魔法的特效鏡頭,儘管只呈現一秒鐘,但卻需要高性能計算機運算一周的時間,花費也相當驚人。雖然沒有真人出演,但是這部動畫電影仍花費了約10億人民幣。
  • 清華頂尖班「姚班」:神一樣的畢業生去了哪裡,工資多少?
    清華大學,已然是象牙塔中的高高矗立者了,但是「人外有人,天外有天,一山更比一山高」,清華姚班就是這樣的存在,它的存在足以讓清華大學的其他學子黯然失色。清華姚班,是清華的又一神壇。裡面的學子那都是精英中的鳳中凰,人才中的天之驕子。清華大學有句話說,「半國英才聚清華,清華半英在姚班。」
  • 半國英才聚清華,清華精英在姚班,姚班有多厲害?
    雖然中小學中的「尖子班」已經被教育部明令禁止,但在大學中,「尖子班」卻是受到支持和推行的,清華的「姚班」和「智班」就是最好的例子。那麼,清華計算機姚班怎麼進?網傳「清華姚班年薪千萬」是否屬實?姚班在清華什麼地位?本期,小編將為大家一一解答。
  • 清華「姚班」究竟是什麼神秘組織?
    張洗月一鼓作氣成功挑戰S圈層 趙金昊成為首位守擂成功S圈選手 他們倆都來自清華姚班 到目前為止 清華姚班已佔據S圈半壁江山 不得不好奇了?
  • 只有清華姚班,學霸中的學霸才能進入
    我們實現願望的那一刻,回首的路,最艱難的歲月,讓我們變得更好。感謝過去,展望未來,因為努力,所以與眾不同。清華大學有一個班叫清華姚班。清華大學是學霸的最終目的地,然而清華姚班是清華中的惡魔類,只有學霸中的學霸才有資格進入。你想要什麼如果人們想依靠考試徹底改變自己的命運,毫無疑問,我們只能參加高考。在這個沒有硝煙的戰爭中,每個人全力以赴。
  • 清華姚班畢業、NOI 金牌、放棄 Google 工作,回老家二本當老師……
    引發關注的點不外乎就在於「清華姚班」、「放棄Google」還有「二本當教師」放在一起時給人的衝擊...... 姚班成立於2005年,當時叫「軟體科學實驗班」,後2009年更名為「計算機科學實驗班」,由世界著名計算機科學家姚期智院士創立,所以稱為「姚班」。
  • 中國最牛班級:看清華大學姚班上演神仙「打架」!
    第一條就是你是高考的前十名;第二條是通過清華大學的二次招生,清華每年新生開學以後會在全校範圍內進行一次二次招生,這是新生角逐進入六個特殊班級的機會。相比很多高考生進入大學之後基本上停止學習,開始享受大學生活的美妙和愜意,參加各種社團和聯誼活動,談一場校園戀愛,清華,新一輪的競爭才剛剛開始!
  • 清華「姚班」到底有多厲害?為何百萬年薪都不一定能招到畢業生?
    清華「姚班」到底有多厲害?為何百萬年薪都不一定能招到畢業生?清華大學作為國內頂尖的名校之一,院校實力是毋庸置疑的,培養出的學生也都是社會的佼佼者,在清華大學裡還有這麼一個特殊的班級,人稱「姚班」,進清華的學生都想搶著進,更讓人意料不到的是,這個班級的學生,在畢業時企業給出百萬年薪都不一定能招到,為什麼會如此呢?清華姚班到底有多厲害呢?
  • 清華的頂尖「姚班」,「神一樣」的學生去了哪裡?月薪有多少?
    ,而清華中一半的英才都集中在清華姚班。 那麼清華姚班究竟是怎樣一個存在呢?他又是何時成立的呢? 一、清華「姚班」的成立 說起清華 「姚班」 ,有一個無論如何都繞不開的名字就是姚期智,因為清華「姚班」當年正是在他的提議之下創立的。
  • 他是清華姚班高材生,谷歌核心技術,棄高薪,回家當教師
    就像網上流行一句話「半國英才聚清華,清華一半英才在姚班。」可見,姚班的學生是尖子中的尖子,這樣的學生,畢業之後,大部分都在Google、MSRA、IBM、Facebook、網易等著名計算機企業工作。下面這張2018年清華大學量子信息中心的一篇報導,就能看出一些內容,能被邀請的都是各個領域精英,恰巧,姚班的學生佔了大多數!
  • 清華姚班/智班2020級新生來了!中國奧數新晉「一姐」在列
    乾明 金磊 發自 凹非寺 量子位 報導 | 公眾號 QbitAI 清華姚班/智班,又雙叒叕納一批英才。
  • Libra 的 Move 語言初探,10 行代碼實現你第一個智能合約
    作者 | 馬超  責編 | 夕顏  出品 | CSDN(ID:CSDNnews)  Libra是Facebook新推出的虛擬加密貨幣,而Move是為Libra設計的全新程式語言,據稱可以在Libra區塊鏈中實現自定義交易邏輯和『智能合約」。
  • 最強大腦的趙金昊,千萬年薪的清華姚班,到底是怎樣的一種存在
    隨著新一季最強大腦的開播,屢屢刷屏的清華姚班再次出現在了公眾的視野中,那麼,這個傳說中的天才集訓營究竟有多牛呢?在清華有這樣一句話:半國英才聚清華,清華精英在姚班。由此可見,姚班的學生乃是精英中的精英了。
  • 成績中下遊,靠競賽保送到清華姚班,該班曾有外企200萬年薪聘請
    第30屆國際信息學奧林匹克競賽落下帷幕,這個叫做「陳江倫」的高中生取得了第一名,並被保送到了清華大學姚班。獲獎者眾多,為什麼陳江倫被如此關注說起陳江倫,老師和同學們的印象都只有一個詞——逆襲。不過他的努力也沒白費,保送清華大學姚班。這個班級也很厲害,傳說曾有外企200萬年薪來這裡招聘。