這幾天最大最熱門的一件事之一就是FB改名成Meta,首先改名這件事說明了Mark Zuckerberg對元宇宙投入的決心和野心,相信不少朋友都知道FB花了不少心力投入在旗下的FB Reality Lab (AR/VR實驗室)上,曾經紅極一時的HTC Vive和Sony PSVR感覺還歷歷在目,而且許多大老更是常在演講裡提到AR/VR相關應用,但似乎這麼多巨頭相繼投入AR/VR這個產業,卻不見其有所起色,前兩篇文章介紹了VR的一些成像原理,這篇就延續前兩篇,從阿財的觀點出發,帶大家了解目前VR的狀況。(這篇主要講VR以後會有AR系列大家別緊張哈)
我相信許多人可能對VR不太看好,認為是炒作大於實際應用,大家有這個既定的印象其實也不意外,因為VR目前除了娛樂方面和少量的工業和醫療等應用外,幾乎日常生活中不是很必要,有些人會歸咎於VR沒有殺手級的應用 ,簡單來說VR目前對大多數人來說就是非必要 且可替代 的一種娛樂裝置。
但其實VR在色情行業的發展其實不算太差,VRAV的發展非常迅速,可以讓大家投身其中當一回男主角 ,但為何這個產業有吸引力? 主要是因為可以戴上VR眼鏡之後,可以有一個飛躍性的體驗 ,這是手機、平板或電腦沒有辦法達到的體驗,想像一下2D的模特經過VR變成3D在大家面前彷彿身歷其境…
儘管VR目前有影像品質和頭暈等問題,但對許多人來說可以將自己心儀的模特從平面變成立體,犧牲一些品質也是沒問題的,那為什麼其他領域沒辦法複製?我們撇除工業或是醫療等應用,就單純講遊戲產業,為什麼VR沒辦法普及像PS5、XBOX360甚至是電腦遊戲?
我這邊從軟體和硬體兩個方面來講講VR目前發展到哪,並且遇到什麼問題~ 我區分成軟體問題 和硬體問題 ,當然VR還有我前面文章所提到的會頭暈的問題,但這篇文章我們就從軟體(算法)的角度來解析一下怎麼樣能夠製造一個真實的虛擬場景 ,這邊講的軟體是以算法為主,硬體上是需要搭配GPU、NPU或TPU等。
首先我相信大家都知道近年來機器學習(深度學習)非常熱門,大家三不五時都可以在報章雜誌上看到AI打敗人類或是AI又有怎樣的突破,那AI能夠創造出一個極真實的虛擬場景嗎?
阿財的答案是:快了!
今年4月Nvidia GTC的Keynote上CEO黃仁勳介紹了一系列的產品,但其中有半分鐘左右的片段是虛擬的黃仁勳(對!不是整段都是虛擬的!),而這場發布會在YouTube上有幾百萬人觀看,卻鮮少有人發現這個假的老黃,下面這個影片大家可以看看老黃團隊是怎麼樣造出 一個假的老黃。
VIDEO
我們都知道Nvidia近年來一直在深度學習領域不斷努力,尤其在3D建模渲染領域可謂是下足了功夫,此次的虛擬老黃就是有搭載Nvidia推出的omniverse搭配許多動畫師將場景的各種物件做3D建模,最後才有如此驚豔的效果。
這裡就想先讓大家思考一下,怎麼樣的場景才夠真實?
大家常常聽到的電影CG特效,為何CG特效會如此逼真? CG是Computer Graphics的縮寫,大家看過的<復仇者聯盟>、<環太平洋> 等好萊塢爽片都有用到CG特效,CG特效包含建模、動畫和渲染等等,CG特效是由特效師一幀一幀的精雕細琢出來的結果,沒錯是一幀一幀不是一秒一秒,通常電影一秒有24幀,也就是一秒包含24張照片,所以我們可能有聽說過電影特效一秒要渲染一天甚至數天的情況,而其逼真的原因之一來自於光線追蹤 (Ray-Tracing)。
前面我有讓大家思考,怎麼樣的場景夠真實,我們現實世界中,光是不可或缺的,沒有光我們就無法看見物體,所以光線的軌跡是決定我們怎麼看世界的方程式 ,今天光被物體遮擋會有影子、光打到各種物體都會產生不同程度的反射、光經過狹縫(微小顆粒)會有繞射現象,這些複雜的光線組成了我們萬千的世界,所以虛擬的場景要夠逼真,就必須模擬或製造 光線的運動。大家如果對光線追蹤技術有興趣,可以在下方留言阿財日後再為大家解析喔~
所以電影場景裡的鋼鐵人或滅霸甚至是哥吉拉,我們的認知告訴我們這些是假的,但在觀影的時候無法從細節挑出假的點,這就是CG特效厲害的地方(也是貴的地方),藉由特效師的巧手,把虛擬與實際場景結合在一起,但這種特效曠日廢時且耗資巨大,應用在遊戲中是不可能的,這就是即時渲染 和離線渲染 的差別,電影可以慢工出細活,但玩遊戲每分每秒都關乎生死,所以遊戲一般的光線只考慮局部的範圍(遊戲片段中的高畫質影片通常是預先錄好的,不是即時運算的),而電影則是把整個場景的光線都考慮進去。
但Epic Games發布虛幻引擎5中展現了令人震撼的光線追蹤效果,其中Lumen系統也就是在解決優化光線 的問題,而PS5和Xbox Series X都有支援這個引擎,所以PS5和Xbox才賣的這麼好吧?而虛幻引擎裡運用了Nvidia發表的Deep Learning Super Sampling(DLSS)方法,利用神經網絡的算法優化了物體邊緣的品質(反鋸齒運算),讓遊戲運行的更加順暢,但目前的渲染還是需要靠GPU搭配算法進行高速的運算,並非完全使用深度學習的方式進行,所以要玩3A大作電腦配置需要非常好(錢包哭哭)不然就是買PS5或Xbox囉。
如果要讓VR的虛擬場景更真實,VR的解析度就要越來越高,但解析度越高,就需要越好的電腦配置才跑得動,我們不可能玩VR每個人還要配一張RTX3090的顯卡(訂價1499美金),VR要普及很重要的關鍵是不能太貴(VR頭盔2萬配一台電腦8萬誰要玩啊!),所以回到一開始的問題,AI能夠創造出一個極真實的虛擬場景嗎?
這邊介紹兩個方法,非常經典且驚嚇,一個是大名鼎鼎的神經輻射法(Neural Radiance Field (NeRF))[1] 和利用對抗網絡(Generative Adversarial Networks (GANs))優化的神經渲染法[2] ,當然這兩個方法細節牽扯到許多深度學習的算法,有興趣的可以直接去看原文(放參考資料)。
NeRF這個方法想做的事情是,假如我現在左視角的圖片,我要如何生成出右視角的圖片?具體來說,我有一張平面的照片,我能不能透過AI的方法,生成其他視角的圖片並合成3D圖片,如此一來就可以大量減少建模時所需要的運算的資源。
下面的圖片就是他們的研究成果,只需要輸入少量的2D角度的圖片,就可以造出連續不同視角的圖片,效果可以說是非常驚人,尤其是生成出來的圖片擁有金屬光澤感、陰影甚至是葉片的細節都表現得栩栩如生,大家有興趣可以去看官網上完整版的展示,放在參考資料中。
那他們是如何做得如此逼真的效果?這邊引用文獻中的圖片簡單為大家解釋,首先他們蒐集了非常多不同角度拍攝到的2D圖片當作訓練集(包含已知的相機參數),如下圖(a)所示,假如有一台怪手,我們拍攝的照片中會含有(x,y,z)三種不同的參數座標,而(theta,phi)則代表了視角的方向(我們從哪個角度對照片進行拍攝),擁有(x,y,z,theta,phi) 的5D資訊之後,我們就可以丟到神經網絡中進行訓練,那他們這邊使用了多層感知器MLP(multilayer perceptron),MLP的知識我就不在這邊詳細展開,有興趣的朋友google一下,滿多人提到的,這邊大家就想像成一個神經網絡裡的方法,但輸出是什麼?
我們希望藉由不同角度資訊的照片能夠將這類型的2D空間資訊轉換成(R,G,B,sigma) 如上圖(b)所示,這裡的RGB指的就是三原色紅綠藍 ,我們知道三原色其實可以合成世界上各種五彩斑斕的色彩,而在渲染圖片的時候,不管是圖像的紋理或是細節其實都是由顏色組成,而這些顏色的差異也都是因為光所造成的,即便是陰影我們也能用不同的RGB把陰影調色出來,所以我們希望神經網絡能夠直接給我們這些圖案在不同視角情況下物體應該(推測) 是什麼顏色,那最後這個文獻中叫體密度,個人的理解有點像是透明度 的概念,也就是光子打到一個物體之後會在哪一層所停下來,光子假設能直接穿過這個物體,就表示這個物體是透明的,而光子完全穿不過就表示這個物體是光滑像鏡子一樣(幾乎反射了),如此精妙的設計加上AI的訓練,就可以達到前面所展示的效果了!
那上述所提到的這個方法,在訓練的時候需要大量拍攝許多不同角度的圖片,所以2021年Nvidia和幾所知名高校一起發表了另一篇文獻,使用對抗網絡GAN搭配神經渲染的方法,效果更加驚人,而這個GAN大家有興趣的話可以去看一下台大李宏毅教授的開放式課程,一樣會放在參考資料[4],順帶一提,GAN這個技術就是之前生成一堆看似真人的圖片,但其實那些圖片都是GAN生成出來的假人[5]。
上圖是文獻提出算法的一個流程圖,這裡的styleGAN就是幫忙生成各種不同汽車的不同角度之圖片,有了這些生成的資料之後,再丟到神經網絡的訓練之中,而此方法還將圖片分成三個部分進行優化-Mesh(網格), Light(光線)和Texture(紋理) ,這樣的好處就是甚麼呢?, 下圖我們可以看到他們的研究成果,Input有一台紅色的五門車和一台銀色的轎車,紅框的部分我們可以生成不同角度的車子圖片,綠色框則是可以改變我們生成車子的形狀,甚至藍框還可以改變車子的紋理(顏色),最扯的是連背景都能替換掉(黑框)!
當然這兩種算法與傳統電影的CG特效或是在遊戲中即時運算的效果還有一段落差,但隨著深度學習算法的進化,目前差距已經慢慢縮小,短期來說,這些AI算法會先用在遊戲場景或是元宇宙的場景之中,這樣可以大幅縮小運算時間並且對硬體的要求也不會那麼嚴苛,遠期來說,深度學習的算法可能有機會接近電影CG特效,大家就跟著阿財拭目以待吧!
這篇文章從軟體的角度出發,和大家分享目前元宇宙在軟體上發展到什麼程度,並且阿財下一期會從硬體上出發,告訴大家目前VR還存在哪些硬傷,沒辦法讓各位在玩的時候有身歷其境如同真實般場景的感受!
延伸閱讀
參考資料