首頁>科學>

普通的神經網路不適用於比較大的網格(因為引數會過多),而傳統的卷積神經網路又沒法應用在擁有不規則結構的三維網格上。因此,我們把傳統的卷積神經網路加以改進,使其可以拓展到任意結構的網格上。和近年來出現的許多其他的網格(圖)卷積神經網路相比,我們的網路能更好地重建全域性和區域性資訊,擁有更強大的生成能力,並且支援所有諸如上下采樣的傳統卷積神經網路所擁有的操作。

周易:本科和碩士畢業於上海交通大學,導師是肖雙九,2020年博士畢業於南加州大學,導師是黎顥(Hao Li)。主要研究3D虛擬人類合成。現就職於Adobe Research。

一、三維網格重建的意義與現狀

透過計算機來創造虛擬、智慧且擁有自主行為的三維的或真實或卡通的人物涉及了Digital Human以及Autonomous 3D Characters等技術。實現這一目標,首先需要把真實事件中獲取的資訊在虛擬的三維世界中重新還原為人形。然後,當獲得了虛擬的人類或者卡通角色的外殼之後,讓他們自主的行動起來。

但不論是三維模型重建和渲染,亦或者是運動的合成都有著同一個問題,那就是哪一種Representation可以用來表示三維時空資訊,並且這些資料又應該採用怎樣的深度學習網路結構去處理呢?這就引出了本次的主題Deep Representation Learning。

本次分享文章的題目是Fully Convolutional Mesh Autoencoder using Spatially Varying Kernels。這篇論文的主要目的是如何在mesh資料上做一個fully convolutional autoencoder。

是什麼促成了這個研究的產生呢?在Digital human的研究過程中,會獲得大量的真實人體模型。之後透過一系列演算法把模型處理成registered 3D mesh,其特徵是擁有這相同的拓撲結構、相同節點數和連線關係,但是形狀具有差別的一系列3D網路模型。

以上圖所展現的人群為例,第一步:獲得其registered 3D mesh;第二步:從這些資料中獲得一個低維的latent code;第三步:透過獲得的latent code生成新的三維人體模型。在過去的方法中,主要採用PCA來實現以上過程,但是其缺陷也很明顯,會丟失很多細節。

隨著技術的發展,越來越多的人嘗試透過Deep Learning獲得latent code。但是類似於傳統的CNN這類普通的神經網路無法直接作用於三維網格模型,這需要新的解決方法。

一種常見的方法是透過剪下和變形將三維模型引數化的對映到2D圖片上。這種引數化3D模型的方法被稱為UV Mapping。基於以上的2D UV圖片,就能夠透過傳統的CNN來構建一個Autoencoder,之後透過CNN獲得的UV圖片可以透過相應的對映方式轉換成三維的Mesh。

但是這樣的方式並不是完美的,它有著兩個缺陷,第一個:沿著剪開的縫隙方向,會出現嚴重的Artifact;第二個:CNN網路對於區域性的資訊,例如褶皺以及高低突起有著較好的重建效果,但在全域性的結構方面,例如身體姿態,就無法實現重建。

二、模型理論設計

既然現有的方法無法滿足實際的需求,就需要設計一個新的CNN網路結構,使得其可以應用於Mesh資料。但是設計這樣的一個Mesh CNN不是一蹴而就的,CNN能夠用於擁有規則網路結構的資料上,但是卻很難擴充套件到不規則的網格上。

在右邊的Mesh CNN上,可以看到每個節點可能擁有不同數量的相鄰節點,這意味著對於所有的區域性區域是無法使用固定形狀的卷積核。即便是理想狀態下相鄰節點的個數保持相同,也無法保持每個區域性區域的取樣方式,例如相鄰節點的方向和位置也會有差異。因此相同卷積核的設計理念並不適合這樣的不規則網格結構。

對近些年的研究工作整理對比,能夠發現他們的工作大多關注於Mesh或者說是Graph CNN網路設計。當然也有人專注於Surface Mesh,但是他們的方法用於Mesh Autoencoder的效果並不能符合要求,這些方法的Reconstruction Accuracy不夠高,Generalizability不夠好,甚至有些計算方式使得運算緩慢。而且這些方法都不約而同的迴避了全域性特徵抽取,卷積核的設計對於抽取區域性特徵比較擅長,但這樣的結果使得一些方向和位置資訊丟失。因此這些方法可能很適合做分類或Segmentation方面的任務,但對於重建幾何資訊並不擅長。

作者提出的方法能實現更準確的還原,不論是區域性還是全域性,不管是幾何還是顏色等資訊。而且從對比圖中也能夠看出本次分享的方法在準確度方面是最高的。而且這個Autoencoder擁有更強大的生成能力,突破了其他方法對於CNN網路的功能的限制,使其更加接近於傳統的CNN所擁有的功能和性質,例如stride、kernel size、pooling、unpooling、receptive field等。

接下來看看這裡的Autoencoder是怎麼解決上述問題的。觀察上面的Mesh Model,可以瞭解到一個mesh其實是對一個連續空間的離散表示。那麼在一個連續的空間中,如果假設透過一個連續的kernel處理整個連續空間的資訊,那麼相應的就有可能透過對連續的kernel取樣出離散的網格上的區域性資訊。

這項工作的主要目的可以簡述為把傳統的卷積操作擴充套件到不規則的mesh上使用。最右邊的圖片展示了一個圓形的網格,稱之為weight basis,可以看作一個固定且結構規則的卷積核。當需要在不規則的mesh上做卷積操作的時候,就可以對上述的卷積核做線性取樣。那麼最終實際使用的每個節點的卷積權重是透過一組interpolation引數對權重偏差的線性取樣結果。並且這組interpolation引數在每個區域性區域都有著各自的值。因此在訓練網路的過程中,網路要同時學習全域性相同的權重偏差和區域性不同的取樣引數。

最終完成的卷積操作函式如上圖所示。引數B是每一個卷積網路層的權重偏差。引數A代表著每個區域性區域的每一條邊。因此每條邊的權重計算就是以A為引數的對B中的原數的線性相加。最終的輸出特徵函式就是輸入特徵x和對應邊的權重相乘的總和,並且加入偏差bias,其輸出的特徵與傳統的CNN是一樣的。在這個函式中,權重偏差B以及區域性係數A都是模型訓練的引數,而且對於整個資料集裡面的所有模型都是相同的。

解決了特徵提取的操作,接下來就是池化的問題。對比傳統CNN網路中,池化是統一的,即每個節點的權重相同。而在不規則Mesh上,因為每個點的取樣密度都不統一,所以uniform integration是不合適的。因此作者在池化的設計中使用了蒙特卡洛積分。每個節點的密度係數是有差異的,因此係數的獲取就可以透過模型訓練自動獲得,之後在函式中對學習得到的密度係數取絕對值,並且做歸一化,保證其值為正,且每個區域性的總和都為一。

處理完池化之後,又有一個新的問題擺在了Autoencoder網路面前,即網格的上取樣和下采樣,這在之前的對mesh處理的論文中是沒有解決的,尤其是上取樣處理。作者在這裡不僅給出了stride的卷積和池化方法,還提供了transpose convolution和unpooling的方法。

總的來說這一系列上取樣和下采樣的方法僅僅取決於mesh的topology,而不是mesh的任何特徵。這意味著可以在正式開始訓練之前,對圖進行上取樣和下采樣的預處理,並且這樣的方法使得最後每個節點的感受野能夠實現以傳統CNN那樣逐層均勻遞增的效果。

三、模型結構具體實現

上表總結了可以提供的一系列CNN網路中的operation和attributes,可以看到基本涵蓋了普通CNN的所有功能。

解決了以上問題之後,就可以利用定義的CNN layers 設計一個fully convolutional的mesh encoder。以一個人體模型為例作為詳細說明,在這個模型中透過四層具有下采樣的殘差塊將一個接近有7000個點的mesh壓縮到了7個點,其中每個點有著9個通道的latent code。之後再用另外四層具有上取樣的殘差塊將這些latent vertex還原成一個接近7000點的mesh。採用fully convolutional,而不是中間有全連線層的結構,是為了使得中間的7個latent vertex上的latent feature在空間上具有不同的含義。

為了更好的說明latent vertex的作用,上圖展示了一組對比。左圖顯示的是latent vertex會負責身體某個區域的feature,其receptive field即感受野是從定點開始逐漸向外延伸的。而右側圖片則是之前一些論文中採用的上下采樣方式,稱為Quadric Mesh Simplification的方法,這種方法很明顯不具備這種優勢。

網路的設計究竟有沒有效果還得在不同的資料集上進行測試。左上角的圖是在D-Faust人體資料集上的測試結果,期間還對比了the state-of-the-art in Nerual 3DMM,可以看到本文的模型在準確度上有著明顯的優勢。這個資料集中的人體模型屬於surface mesh,但實際應用中獲得的資料有可能並非surface mesh的結構,因此the state-of-the-art in Nerual 3DMM無法處理一些非surface mesh結構,即其具有一定的侷限性。

除了人體模型外,本文的模型還應用於其他形式的網格結構上,例如左邊由多個四面體構成的體網格三維模型結構的動態小龍,這個模型展現了模型對於運動過程重建的能力。右邊的樹則是展現了模型的多部件組成能力,甚至在非流形的結構情況也能夠有很好的表現。

基於現在運算過程都透過GPU實現並行運算,所以能夠快速的處理規模大,細節多的三維模型。例如左邊的示例是訓練在Facebook內部的高畫質人體資料集上的結果,可以看到一些身體的細節,比如說衣服上的褶皺,手臂上的紋路,比如說血管等結構。右邊則是訓練在手的資料上的測試結果,結果中的三維座標和顏色都是透過CNN網路重建獲得的。

本文中獨特的fully convolutional結構下,每個latent vertex都能夠掌握某一部分的形成,這給了模型新的可操作空間。這些latent feature可以用於區域性區域的插值和替換。上圖中有兩個mesh,一個Man A,一個Man B。傳統的autoencoder只能對兩個mesh做全域性漸變,但是本文的網路則能夠做到把A的左腿上的latent code替換為B的,然後獲得新的mesh就同時具有了A的形態和B的動作。

前面介紹了替換的例子,這裡還有一個插值的例子。在對手的autoencoder進行訓練時,把latent vertex部署在了5個手指端部以及手腕處。所以當給定一個source mesh和一個target mesh的時候,模型不僅能夠如同其他方法一樣實現全域性的插值,還能夠對不同手指做分別的插值,結果如右側圖所示。因此即便只有兩個手的模型,依然能夠模擬出足夠多的手部變化。

四、從現階段看未來的研究方向

最後,闡述一下研究方法的侷限和未來的工作。在上圖中顯示的是本文的方法和其他方法的優劣對比。橫軸是Reconstruction Accuracy,縱軸是方法的靈活性。

本文的方法有著很高的Reconstruction Accuracy,並且對於任意網格結構都有很好的適應性,但所有訓練和測試資料必須是預處理好的register mesh即connectivity具有一致性,這限制了其發揮。

而有的方法靈活性很高,例如GAT,FeaST,MoNet,它們可以用在任意不同的Graph上,但是其Reconstruction Accuracy很低。所以說如何能夠設計出座標在右上角的兼具靈活性和準確性的mesh CNN的方法會是未來的研究點。

相關資料

程式碼:

https://github.com/facebookresearch/VCMeshConv

論文連結:

https://zhouyisjtu.github.io/project_vcmeshcnn/vcmeshcnn.html

23
  • mRNA疫苗可誘導對SARS-CoV-2及其多種擔憂的變體的持久免疫記憶
  • 突破!p53抑癌基因重大進展,千萬癌症患者或將迎來抗癌良藥