
導語:本文提出一種用于深度三維形變模型中特征聚合的可學習子產品。目前深度三維形變模型中特征聚合依賴于網格抽取等方法,存在聚合方式無法學習,與模型優化目标不一緻等問題,進而限制了模型的表達能力。我們提出了使用基于注意力機制的子產品實作對特征聚合方式的學習。在人臉,人體和人手資料集上的實驗結果表明,基于注意力機制的特征聚合能有效提升模型的表達能力。
作者 | 陳志祥
編輯 | 劉冰一
在計算機視覺和計算機圖形學中的很多關于一類物體的表征使用到三維形變模型(3DMM)。在這裡三維變形模型模組化的物體通常為人臉,人體和人手,同時也包括像馬和貓這樣的動物。
三維變形模型廣泛服務用包括形狀動畫,姿态估計,三維重建,身份識别,虛拟現實和增強現實等人機互動中。由于三維資料與二維圖像資料存在拓撲形态上的不同,傳統的卷積神經網絡難以在三維資料上發揮作用。目前廣泛應用的模型主要是基于主成分分析的模型,并考慮到物體的關節活動進行變形,仍然存在形狀細節難以刻畫的問題。
本文提出了一種用于深度三維形變模型的特征聚合方法,通過注意力機制進行對不同層特征之間的關系進行模組化,旨在提高深度三維形變模型的能力,以實作對物體形狀細節的更好描述。
論文題目:Learning Feature Aggregation for Deep 3D Morphable Models
論文位址:https://arxiv.org/abs/2105.02173
代碼:https://github.com/zxchen110/Deep3DMM
在以下視訊中,論文一作陳志祥對研究進行了分享,分享提綱如下:
1、三維形變模型簡介
2、深度三維形變模型中的特征聚合問題
3、基于注意力機制的特征聚合
4、實驗驗證
1
三維形變模型
三維形變模型将原始的三維形狀編碼成隐向量,并能從該隐向量中恢複出物體的形狀資訊。在本文中,我們所關注的三維形狀是指經過配準,與該類物體模闆形狀對齊的三維網格資料。
傳統的三維形變模型中人臉主要使用基于主成分分析的線性模型,人體和人手分别有SMPL和MANO這類線性模型。與這類線性模型相比,非線性模型,特别是基于深度學習的模型,具備進行對例如皺紋在内的細節變形進行刻畫的能力,在通用性和緊湊性上會優于線性模型。
使用傳統的線性模型時,我們需要對每類物體的三維變形模型進行設計,而使用深度三維變形模型時,可以将設計好的網絡結構模型在不同類的物體資料上進行訓練即可得到對應物體的三維形變模型。
在将深度學習應用到三維網格資料的嘗試中,現有方法分别提出了各向同性和各向異性的卷積操作以适配網格資料的拓撲結構。這些卷積操作與特征聚合操作一通構成了三維變形模型的自編碼器。這些特征聚合操作用于完成編碼器中的特征下采樣和解碼器中的特征上采樣。雖然現有的模型在三維網格資料上已經取得了不俗的表現,但是這些特征聚合操作仍然是由單獨的預處理階段決定的,并且這個預處理階段是針對表面誤差近似優化進行的網格抽取,而非對三維形變模型的重建目标進行優化的。這一過程限制了形變網絡對形狀細節的表達能力。
在本文中,我們提出一種基于注意力機制的特征聚合政策,用于在處理具有固定拓撲結構的三維網格資料時建構階層化表征。不同于預先計算的映射矩陣,我們提出使用可學習的注意力子產品從查詢(query)和鍵(key)計算得到映射矩陣。Key和query可以看做是對應層次的特征的緊湊表示。通過該子產品,我們可以實作對聚合權重和感受野的同時學習。并且通過靈活配置key和query,該子產品可以适配于上采樣和下采樣。
由于三維形變模型隻需要使用映射矩陣,在推理階段無需使用該注意力子產品,隻需保留學習到的映射矩陣,是以幾乎不會增加模型的參數量。我們在重構任務上測試了本文中的方法,在人臉,人體和人手資料集上的定性和定量實驗表明我們的方法能夠大幅度提升現有模型的表達能力,無論使用的卷積操作是各向同性的還是各向異性的。
2
深度三維形變模型
深度三維形變模型包含兩部分:編碼器和解碼器。這兩者的網絡結構通常互為鏡像。編碼器将輸入的三維網格轉化成一個緊緻的表征。通過一個從細到粗的階層化網絡結構,該表征能夠捕獲全局和局部的形狀資訊。當給定緊緻表征時,解碼器通過從粗到細的方式生成三維網格模型以恢複形狀資訊。在這個階層化結構的每一層中,解碼器使用了串聯的卷積和上采樣操作,類似的在編碼器中使用了卷積和下采樣操作。如前所屬,卷積操作可以是各向同性或者各向異性的卷積操作,包括上采樣和下采樣在内的特征聚合則通常是将映射矩陣和特征進行相乘來完成。
在形式定義上,三維網格可以表示成一個頂點和邊的集合,
,其中
表示那個頂點,
表示頂點之間的稀疏連接配接。設該三維形變模型的編碼器和解碼器的層數為L。在以下的分析中,我們使用解碼器為例對我們的方法進行闡述。對于編碼器我們可以使用類似的分析。使用
表示解碼器在
層的輸出特征,其中和分别代表頂點的數量和特征的次元。
則可以用于表示第層的輸入特征。
在現有方法中,特征聚合操作可以形式化為
(1)
其中
表示用于上采樣和下采樣的不同聚合權重。雖然基于上述公式的現有的模型表現出了極富潛力的性能,其中的映射矩陣
是在網格模闆上機型網格抽取得到的,并且在模型的學習過程中保持不變。與此相反,我們希望能夠在訓練中将該映射矩陣和網絡模型中的卷積操作一同進行學習。一個直接的方法是将該映射矩陣進行參數化,對每個矩陣元素進行學習。然而,這種方法會遇到過參數問題,特别是針對高分辨率的網格資料,進而使得網絡模型的性能下降,甚至出現無法從訓練資料中進行有效學習的情形。針對此,我們提出了使用注意力機制的特征聚合操作。
3
基于注意力機制的特征聚合學習方法
特别地,我們考慮從特征
到
的特征聚合過程以闡述我們提出的注意力子產品。注意力機制可以看做是給定鍵值對後對于每個輸入的查詢值給出對應的輸出。在特征聚合中,
就是輸出,
就是給定的值。那麼聚合權重
就可以通過作用于查詢向量
與和值
對應的鍵
上的函數得到,具體可以表示成
通過這種方法,我們将映射矩陣的構造拆分成了查詢向量query和鍵key的構造,以及相應函數的設計。
3.1 查詢向量和鍵向量
由于查詢向量和鍵向量是和頂點特征一一對應的,我們也就期望它們的值和頂點的序号或者特征相關聯。考慮到現有方法中的映射矩陣是和頂點特征無關,且已經能夠得到不錯的效果。在此,我們将查詢向量和鍵向量模組化成頂點序号而非頂點特征的函數。換言之,我們旨在學習類感覺的映射矩陣而非執行個體感覺的映射矩陣。另一方面,在我們所考慮的三維網格資料中,所有的資料都是經過配準的,也就是說每個頂點是有固定的對應語義含義的。是以,這些查詢向量和鍵向量就可以模組化成無需任何輸入的獨立變量。使用這樣的參數化方式帶來的一個好處是在推理階段,我們可以直接使用學習到的映射矩陣,而無需借助注意力子產品。此外,這種參數化方式也規避了将查詢向量與頂點特征相關聯帶來的查詢向量和輸出之間的雞和蛋的問題。對于查詢向量和鍵向量的次元大小而言,向量數量的多少取決于對應的頂點的數量,每個向量的特征次元則是當做需要探索的超參。
3.2 注意力函數
在給定查詢向量和鍵向量後,注意力函數則用于計算相鄰兩層的每兩個頂點之間的比對程度。一般而言,我們可以使用任意的距離度量函數來進行上述計算。在本文中,我們使用餘弦距離函數來計算
和
之間的相似性,
直接将上式計算得到的相似性分數用做聚合權重會得到一個稠密的映射矩陣。換言之,一層中的任意一個頂點的特征都會受到前一層中的所有頂點的特征的影響。然而,這樣的聚合方式并非是階層化學習中所希望的方式。
為了能夠同時捕獲全局和局部資訊,不同頂點特征
的感受野應該具有區分性。我們希望後一層中的每個頂點特征
對應的上一層中的關聯的頂點集合各不相同。我們将這個先驗知識通過一個可選的掩膜操作來實作。該掩膜操作通過使用top-k選擇将上述頂點集合的大小限制為一個固定的值k。該集合中的每個元素的值從訓練形狀中自動學習。具體而言,我們針對權重分數
定義了一個二值的掩膜
掩膜後得到的權重分數可以看作是原始的權重分數與該二值掩膜相乘的結果
然後将權重分數歸一化可以得到
3.3 映射矩陣
使用上述公式替代現有的預先計算的權重是個可行的方案。與此同時,我們注意到現有方法中采用預先計算的映射矩陣也取得了不俗的性能。為此,我們提出進一步将上式中的映射矩陣和現有方法中預先計算的映射矩陣進行融合以獲得雙方的優勢。這個融合可以看做是帶有一個固定頭和一個可學習頭的多頭注意力模型。具體而言,我們在融合中使用權重組合
其中是個可學習的權重,
是現有方法中預先計算的上采樣或者下采樣系數。特别地,當的值固定為0時,上式就和現有方法中使用預先計算的上(下)采樣系數相同。本文中最終使用的權重系數按照上式計算得到。
4
實驗
我們在三個人臉,人體和人手的資料集上進行重構任務的實驗以驗證本文方法的有效性。
4.1 資料集
COMA資料集由Ranjan等人在2018年提出,包含了12個人的12個不同表情序列,總共包括20K+已經配準過的人臉形狀,每個三維網格形狀包含5023個頂點。
DFAUST資料集是一個包含40K+人體形狀的資料集,其中每個人體的三維網格包含6890個頂點。整個資料集有超過100段運動序列,覆寫了10個不同身份。
SYNHAND資料集由Malik等人于2018年提出,總共包含了五百萬個合成的人手形狀,我們随機選了了100K用于實驗,其中90K用于訓練,剩下的用于測試。
4.2 基線方法
本文分别在各向同性卷積和各向異性卷積方法上對所提方法進行驗證,其對應的基線方法分别為CoMA和Neural3DMM。所使用的的網絡結構和訓練配置參照CoMA方法。
4.3 定量結果
我們使用每頂點歐式距離誤差來度量重構誤差。下圖給出了在3個資料集上的結果。從圖中可以看出本文所提的特征聚合方法能夠在所有測試的情形下取得性能的提升,不論采用各向同性還是各向異性的卷積操作,不論測試的隐向量的長度為8/16/32/64,不論測試的人臉,人體還是人手。在人臉和人體資料集上,對于越短的隐向量,性能提升效果越好。普遍而言,在各向異性卷積上的提升效果不如在各向同性卷積上的提升效果明顯,這可能是由于本文所提方法和各向同性卷積結合後在本質上相當于進行了各向異性卷積。
4.4 定性結果
上圖給出了使用各向同性卷積下的重建結果和誤差的可視化,其中測試的隐向量長度為8.從圖中可以看出,本文提出的特征聚合方法可以在很大程度上減小重建誤差,實作對細節的更好刻畫。
4.5 映射矩陣的可視化
上圖給出了将下采樣(上采樣)映射矩陣的列向量(行向量)使用t-SNE投影到一維流型上後值大小。從圖中比較可以看出本文所提方法得到的映射矩陣和現有方法的結果存在很大不同。本文所提方法學習到的映射矩陣在相鄰位置的值更接近。
上圖給出了在COMA資料集上幾個示意點的感受野對比情況。從圖中可以看出,本文所提方法的感受野相比于現有方法更大,随着網絡的不斷訓練,學習到的感受野也在發生變化。并且我們注意到本文方法出現了一些非鄰域的感受野,說明本文方法可能捕獲了非局部的頂點之間的關系。
4.6 和其他聚合方法的比較
從表中我們可以看出,直接将映射矩陣參數化的方法的誤差最大。采用Diffpool的方法,由于仍然是對整個映射矩陣進行直接模組化,相比于直接将映射矩陣參數化的方法而言,其映射矩陣是通過網絡生成的,其性能依然不理想。基于鄰域的三種特征聚合方法表現出了相似的性能,其中權重可學習的方法(variant weight)的性能略有優勢。本文所提的方法相比于這些方法有大幅度的性能提升,這得益于對全局頂點關系的模組化和權重的可學習。
4.7 不同卷積核設定下的結果
我們還在實驗中探索了不同卷積核配置下的性能結果變化。表中的simple表示使用的濾波器數量較少,具體對于編碼器為(3,16,16,16,32),對于解碼器為(32,32,16,16,16,3)。Wider表示使用的濾波器數量較多,具體對于編碼器為(3,16,32,64,128),對于解碼器為(128,64,32,32,16,3)。從表中資料可以看出,在COMA資料集上,當隐向量的長度為8時,在使用較多濾波器的配置下,本文所提的特征聚合方法依然可以實作性能的有效提升。
4.8 特征聚合的消融實驗
為了驗證本文所提的特征聚合方法在編碼器和解碼器中對模型性能的影響,我們進行了消融實驗。實驗結果表明,在解碼器中引入可學習的特征聚合子產品對模型的性能遠大于在編碼器中引入可學習的特征聚合子產品。這可能是由于本文所關注的任務是重構任務,決定了解碼器對實驗結果的影響更大更直接。
4.9 隐空間運算
内插。給定兩個形狀的隐空間表示和,對其進行線性内插可得到一個新的隐空間表示
其中
。對内插得到的隐空間表示進行解碼即可得到内插的形狀。上圖中給出了一些示例,從中可以看出,本文方法的效果更佳。
外插。與内插類似,外插也是使用公式
來計算外插得到的隐空間表示,不過的值域為
。上圖中給出了為與具備同樣身份資訊的中性形狀,可以看出本文方法生成的形狀更加自然。
變形轉移。我們還可以使用三維形變模型通過在隐空間進行算數操作,實作不同身份之間的形變轉移。上圖中給出了人臉和人體上的結果,可以看出使用可學習的特征聚合有利于形變的捕獲。
5
總結
在本文中,我們提出了用于深度三維形變模型的特征聚合方法。具體而言,我們引入了作為可訓練參數的查詢向量和鍵向量,并采用了注意力機制來計算用于上采樣和下采樣的映射矩陣。本文方法可以實作對感受野和權重的同時學習。在三種物體的實驗表明本文提出的特征聚合方法能夠提升深度三維形變模型的表達能力。