曾偉平,陳俊洪,Muhammad ASIM,劉文印,楊振國
(廣東工業(yè)大學(xué)計算機學(xué)院,廣東 廣州 510006)
隨著視覺硬件的高速發(fā)展,激光雷達、RGB-D 相機等深度傳感器廣泛應(yīng)用于無人駕駛、機器人等領(lǐng)域[1]。通過深度傳感器可有效地獲取物體的三維點云數(shù)據(jù),進而完成復(fù)雜的三維視覺任務(wù),如物體識別[2]、語義分割[3]、三維重建[4]等。然而受限于設(shè)備精度等原因,現(xiàn)實場景下獲取的三維點云通常存在稀疏和不完整的現(xiàn)象,導(dǎo)致了物體判斷不夠準(zhǔn)確;與此同時,設(shè)備在采集外界信息時往往是基于單一視角,獲取的點云可能存在遮擋等情況。綜上所述,對缺失的點云進行補全處理是三維視覺領(lǐng)域中一項重要的研究任務(wù)。
點云補全任務(wù)是將不完整的點云進行補全,從而獲得更高質(zhì)量的點云數(shù)據(jù)。常見的補全方法可分為基于幾何、基于對齊和基于學(xué)習(xí)3 類。其中基于幾何的方法[5]通過先驗幾何假設(shè)直接從觀察到的形狀部分中預(yù)測不可見的形狀部分,需要人為制定幾何規(guī)則,然而此類方法只適用于具有少量不完整的模型。基于對齊的方法[6]是在形狀數(shù)據(jù)庫中檢索與目標(biāo)對象相似的相同模型,并將輸入與模型對齊完成缺失區(qū)域,然而該方法在推理優(yōu)化和數(shù)據(jù)庫構(gòu)建過程中需要昂貴的成本,并且對噪聲影響敏感?;趯W(xué)習(xí)的方法通過構(gòu)造一個參數(shù)化模型來學(xué)習(xí)不完整點云和完整點云的2 個特征空間之間的映射,具有較好的魯棒性,其中代表方法為PCN[7]網(wǎng)絡(luò)。近年來隨著深度學(xué)習(xí)的發(fā)展,基于學(xué)習(xí)的方法已經(jīng)成為主流,例如PFNet[8]、PoinTr[9]等方法在點云補全上已經(jīng)取得不錯的效果。然而現(xiàn)有的方法生成完整點云或生成缺失區(qū)域僅針對局部缺失,并未同時考慮幾何形狀缺失和稀疏性缺失等問題,在點云稀疏的情況下補全效果不佳。
本文將點云的缺失分為幾何形狀缺失和稀疏性缺失,其中造成前者的主要因素為物體遮擋;造成后者的主要因素為設(shè)備性能和外界環(huán)境干擾等。為同時解決幾何形狀缺失和稀疏性缺失問題,本文提出一種多階段分形組合的點云補全算法,實現(xiàn)過程如圖1所示。相比于其它直接預(yù)測點云的算法,本文所提出的算法基于局部到整體分階段進行補全,可對不同階段的損失函數(shù)權(quán)重進行調(diào)整,從而優(yōu)化了補全效果。通過在點云的數(shù)據(jù)集ShapeNet[10]上進行實驗表明,驗證了本文所提出方法的有效性。
圖1 多階段實現(xiàn)的點云補全
本文所做的主要工作如下:
1)提出基于多階段的分形組合算法對殘缺點云進行補全,有效地解決了點云同時存在幾何缺失和稀疏等問題。
2)設(shè)計分形幾何特征提取結(jié)合特征金字塔生成,能消除稀疏性影響,完成幾何形狀缺失補全;設(shè)計k近鄰局部特征提取網(wǎng)絡(luò)點云局部細節(jié)特征,并通過折疊網(wǎng)絡(luò)生成精細化平滑的完整點云。
3)通過在ShapeNet數(shù)據(jù)集上進行實驗,有效地驗證本文所提出方法的有效性。
三維計算機視覺是近年來一個活躍的研究領(lǐng)域[11-17],由于點云的內(nèi)存消耗小、細粒度細節(jié)表示能力強,因此廣泛使用點云來表征三維對象。然而點云的處理通常被認為比二維圖像更具挑戰(zhàn)性,其原因是因為點云以無序的三維點進行存儲,不存在規(guī)則的空間結(jié)構(gòu),因此傳統(tǒng)的卷積無法直接應(yīng)用于點云。對此,有研究提出通過基于多視圖的方法和基于體素的方法間接使用卷積網(wǎng)絡(luò)。其中基于多視圖的方法[18]將點云投影到不同的2D 平面,基于體素的方法[19]將點云柵格化,使其可利用卷積進行處理。上述方法在一定程度上提高了點云的處理精度,然而由于需要處理多幅圖像或者體素,內(nèi)存占用高和計算量大導(dǎo)致處理速度變慢。與此同時,在將點云進行轉(zhuǎn)變的過程中易丟失信息。Charles 等人[20]提出PointNet 網(wǎng)絡(luò)使用對稱函數(shù)來聚合來自各個點的信息,以解決點云無序的問題,使神經(jīng)網(wǎng)絡(luò)可直接處理點云數(shù)據(jù)。目前有大量的研究工作以此為基礎(chǔ),深度學(xué)習(xí)在點云的處理上基本使用基于點的方法,如PointNet++[21]及DGCNN等,其不斷改進對點云特征的提取。
點云補全的目標(biāo)是基于部分點云觀測恢復(fù)完整的三維形狀。PCN[7]是首個直接對三維點云進行操作實現(xiàn)點云補全的網(wǎng)絡(luò)框架,其提出通過編碼器-解碼器結(jié)構(gòu)對點云進行補全,并采用FoldingNet[22]通過模擬二維平面的變形將二維的點映射到三維曲面上。然而該方法僅通過全連接和簡單的卷積進行特征提取,這導(dǎo)致了補全效果不佳;為增強網(wǎng)絡(luò)學(xué)習(xí)點云特征和生成的能力,ShapeInversion[23]網(wǎng)絡(luò)結(jié)合GAN[24]來實現(xiàn),并且通過無監(jiān)督的方式進行學(xué)習(xí),ViPC[25]結(jié)合與點云對應(yīng)的二維圖像信息,通過多模態(tài)來指導(dǎo)推斷點云的完整信息。上述方法推進了三維點云補全的發(fā)展,然而其做法為將殘缺輸入直接補全為完整點云,僅對真實三維點云進行計算損失,未完好保留三維點云的原始數(shù)據(jù)。為保持點云原始部分的空間排列,已有的研究如PF-Net[8]提出僅輸出缺失部分的點云,而不輸出整個物體的點云數(shù)據(jù),完整點云通過與輸入直接拼接得到。PoinTr[9]網(wǎng)絡(luò)則采用該方式,且將Transformers[26]引入到點云補全任務(wù)中,對點云的幾何特征更具備敏感性,是目前對缺失部分生成最有效的方法。然而上述方法存在一定缺陷,其研究和改進為網(wǎng)絡(luò)層面,且應(yīng)對點云缺失的情況單一,對稀疏的點云補全效果欠佳。進行分階段性的實現(xiàn)點云補全,應(yīng)對多種缺失的情況的研究有待提升和探討。
本文提出的點云補全網(wǎng)絡(luò)為一種分階段實現(xiàn)的點云補全模型,首先學(xué)習(xí)補全出幾何形狀缺失的部分,其次將輸入點云與生成的幾何形狀缺失部分點云進行合并提取出融合特征,最后生成高質(zhì)量的精細化點云,本文方法框架如圖2 所示,包含點云幾何形狀補全模塊和精細化點云補全模塊。
圖2 階段性點云補全網(wǎng)絡(luò)結(jié)構(gòu)
為補全幾何形狀缺失,需要給網(wǎng)絡(luò)提供充足的幾何結(jié)構(gòu)數(shù)據(jù)。該模塊首先進行分形處理,即對輸入進行2 次FPS(最遠點采樣)獲得點數(shù)為1024、512 和256的3組點云數(shù)據(jù)。該處理既能夠保持初始輸入的形狀結(jié)構(gòu),又能通過不同的密度作為新的輸入避免預(yù)處理中點云稀疏處理帶來的影響,讓網(wǎng)絡(luò)充分和專注學(xué)習(xí)到模型數(shù)據(jù)的幾何形狀特征。
將分形得到的3 組點云,分為3 路單獨輸入編碼器進行特征編碼。如圖3 所示,編碼采用的為多層卷積網(wǎng)絡(luò),其通道數(shù)分別為3、64、128、256、512、1024,并將多層卷積獲取的特征進行最大池化。最后將分形的3 組點云分別獲取的特征進行合并,得到維度為1024×3 的特征向量,將該特征向量進行卷積并進行最大池化,最終獲得維度為1024×1 的特征向量。該特征用于指導(dǎo)幾何形狀缺失點云的生成。
圖3 分形幾何特征提取網(wǎng)絡(luò)
由于不同尺度的點云可提供不同細粒度的特征,因此本文利用特征金字塔解碼器對分形網(wǎng)絡(luò)特征進行解碼。編碼器結(jié)構(gòu)如圖4 所示,將獲取到的幾何特征作為特征金字塔生成網(wǎng)絡(luò)的輸入,并通過不同全連接層獲取大小為512、256、128 個神經(jīng)元的特征層,每一特征層分別連接不同的連接層與卷積層,因此可分別預(yù)測出不同分辨率的點云。最后將不同分辨率的點云進行拼接重塑,輸出維度為512×3的幾何丟失部分點云。特征層的神經(jīng)元從大到小,生成的點云與之對稱密度從高到低,且生成的低密度點云將依次保留到高密度點云的生成過程。該方法有利于避免點云的稀疏性影響,專注于學(xué)習(xí)和生成點云的幾何形狀。
圖4 特征金字塔解碼器
點云數(shù)據(jù)采集過程因設(shè)備精度等問題易導(dǎo)致捕獲的點云稀疏,因此需要從已有的點云學(xué)習(xí)提取出點云的細節(jié)特征,從而生成一個精細的完整點云。具體實現(xiàn)過程為:
將輸入的殘缺點云與第一階段生成的幾何形狀缺失部分的點云進行合并。為構(gòu)建局部空間信息,利用k 近鄰算法,以每個點作為中心點尋找其最近的k個點作為集合,對所有集合使用圖卷積網(wǎng)絡(luò)[27]進行卷積,將卷積后的特征進行最大池化,合并后得到維度為512 的特征向量。該特征向量通過全連接得到尺寸大小為12的空間特征,從而獲得該點的新表征。
最后,將該特征輸入到由PointNet 網(wǎng)絡(luò)變形的編碼器。該編碼器由2 個PointNet 層組成:第一層利用shared MLP(共享多層感知機),將所有空間特征轉(zhuǎn)換為點特征向量,從而得到大小為n×256的特征矩陣f,將該特征矩陣進行最大池化,得到大小為256 的特征g。第二層將特征g進行擴展后與特征矩陣f進行拼接,得到點特征增強矩陣后再次使用共享多層感知機和最大池化,最終得到尺寸大小為1536 的特征向量v,其實現(xiàn)如圖5所示。
圖5 k近鄰局部特征提取器
最后為生成精細的點云,借鑒PCN 方法中的解碼器結(jié)構(gòu)。不同之處在于PCN 中通過全連接生成的粗略預(yù)測,而本文為保持三維點云原始部分的空間排列,利用第一階段已經(jīng)生成的幾何形狀缺失點云與原輸入進行合并,再進行FPS 采樣得到512 個點作為粗略預(yù)測的點云。最后將其與第二階段提取到的局部細節(jié)特征v,通過善于逼近平滑表面的折疊網(wǎng)絡(luò)進行偏移坐標(biāo)重建。折疊網(wǎng)絡(luò)通過折疊操作以每個點為中心生成一個2×2個點的局部區(qū)域,結(jié)合所有的局部區(qū)域輸出含有2048 個點的點云,至此整個網(wǎng)絡(luò)生成精細化平滑的完整點云。
基于多階段分形組合網(wǎng)絡(luò)的損失函數(shù)由2 個部分組成:幾何形狀缺失點云生成損失和精細化點云生成損失。其計算采用Fan 等人[28]提出的CD(Chamfer Distance)距離,計算公式如下:
其中,S1、S2分別表示2 組3D 點云,x為S1中的任意一點,y為S2中的任意一點。該公式的第一項代表S1中任意一點到S2的最小距離平方之和的平均值,第二項則表示S2中任意一點到S1的最小距離平方之和的平均值。其值越小,表明點云生成效果越好。
幾何形狀缺失點云的生成損失為第一階段生成的點云與實際幾何形狀缺失部分的點云之間的差異,其目的是學(xué)習(xí)三維點云模型缺失的幾何結(jié)構(gòu)。由于特征金字塔解碼器生成3 個不同分辨率的預(yù)測點云,因此第一階段的局部缺失點云生成損失Lfirst公式如下:
其中,α11、α12為超參數(shù),用于調(diào)節(jié)不同密度的點云的預(yù)測權(quán)重;Y′11、Y′12、Y′13分別對應(yīng)生成的512、256、128個點云;Y11、Y12、Y13為真實三維點云通過FPS 采樣獲得,與生成的3個不同分辨率的預(yù)測點云一一對應(yīng)。對網(wǎng)絡(luò)進行訓(xùn)練的過程中,α11、α12超參數(shù)在第一階段的前期值偏大,但隨著訓(xùn)練的不斷迭代,其值逐漸減小。
第二階段損失函數(shù)是為了指導(dǎo)網(wǎng)絡(luò)結(jié)構(gòu)學(xué)習(xí)到點云的局部細節(jié)特征,讓網(wǎng)絡(luò)生成一個精細化完整的點云,完成點云補全的最終目的。該損失為計算生成的點云與真實三維點云之間的差異,其生成損失Lsecond公式如下:
其中,α21、α22為超參數(shù),作用為調(diào)節(jié)不同細粒度的三維點云生成效果;第一項為粗略輸出Y21和完整點云Ygt之間的距離;第二項為最終輸出Y22和完整點云Ygt之間的距離。對網(wǎng)絡(luò)進行訓(xùn)練的過程中,α21超參數(shù)在第二階段的前期設(shè)置的值偏大,隨著訓(xùn)練的不斷迭代,其值逐漸減小。α22超參數(shù)則與之相反。
最終多階段點云補全的損失函數(shù)如下:
其中,αfirst為第一階段的權(quán)重,αsecond為第二階段的權(quán)重。由于幾何形狀缺失部分的點云生成損失主要位于訓(xùn)練的初期階段,而精細化點云補全損失位于第二階段,故αfirst和αsecond在整個數(shù)據(jù)迭代的第0次與第60次分別為0.9 和0.1;第61 次與第120 次分別為0.5 與0.5;第121次與第200次分別為0.1與0.9。
本文的實驗在點云的數(shù)據(jù)集ShapeNet上進行,該數(shù)據(jù)集中有13 種不同的類別共14473 個對象,其中11705 個作為訓(xùn)練集,2768 個用于測試。由于點云缺失存在以下2 種情況:幾何形狀缺失和稀疏性缺失,因此需要將完整點云進行幾何形狀缺失處理和稀疏處理,以模擬出殘缺點云作為輸入。
本文輸入預(yù)處理的具體做法為:將完整的點云數(shù)據(jù)從多個視點中隨機選取一個視點作為中心,將點云中所有的點與其排序,選擇前512 個點作為局部缺失進行取出并保存,再將剩余的1536 個點的點云通過FPS 采樣取出512 個點作為稀疏缺失,得到剩下的1024個點的殘缺點云作為輸入。
本文采用倒角距離作為補全的評價指標(biāo),且將其分為2部分進行展示:Pred→GT(預(yù)測到真實標(biāo)簽)和GT→Pred(真實標(biāo)簽到預(yù)測)。Pred→GT 值代表預(yù)測點云中的每個點到真實三維點云中最近點的平均平方距離,其衡量預(yù)測生成的點云與實際情況的差異;GT→Pred 值代表從真實三維點云的每個點到預(yù)測生成的點云中最近點的平均平方距離,其為預(yù)測生成的三維點云覆蓋真實三維點云的程度。兩者越小代表點云的補全效果越好,且將數(shù)值擴大1000 倍,并保留3位有效數(shù)字。
為通過實驗評估所提出的方法,將點云進行統(tǒng)一的預(yù)處理,得到缺失點云作為輸入,通過各個網(wǎng)絡(luò)生成完整點云。對于所有的點云補全方法,其網(wǎng)絡(luò)結(jié)構(gòu)不做任何改變,只將輸入與最終的輸出調(diào)整一致。實驗結(jié)果如表1 所示,表中的結(jié)果為對應(yīng)的Pred→GT值/GT→Pred值。
實驗結(jié)果表明,本文所提出的方法補全結(jié)果優(yōu)于其它方法,Pred→GT 和GT→Pred 的平均值分別達到0.750 和0.768。對比從殘缺輸入直接生成完整點云的網(wǎng)絡(luò)(FoldingNet、PCN、TopNet 和GRNet 等)未能利用幾何缺失部分,其只關(guān)注于完整點云的重建效果,故生成的點云幾何形狀完整度無法達到本文提出的方法,且GRNet網(wǎng)絡(luò)針對的為稠密點云,將3D網(wǎng)格作為無序點云的中間表達方法再進行處理,對稀疏的點云補全效果不佳。而其它網(wǎng)絡(luò)如PF-Net 和PoinTr,適用于幾何缺失部分點云的生成,對于稀疏的缺失點云,其生成完整點云會出現(xiàn)不夠平滑和不夠精細的情況。而本文提出的方法可以有效解決上述情況,其原因如下:本文利用多階段方式針對性地解決了幾何形狀缺失和稀疏性缺失問題,網(wǎng)絡(luò)結(jié)構(gòu)比其它單一結(jié)構(gòu)的網(wǎng)絡(luò)更豐富;通過增加分形網(wǎng)絡(luò),k 近鄰局部特征提取和通過FPS采樣獲取粗略預(yù)測的策略,有效提高了點云補全的效果。
為驗證本文提出方法的有效性,進行消融實驗,實驗結(jié)果如表2所示。
表2 消融實驗
表2 中方法A 將本文方法D 中分形處理去除,改為直接對輸入進行提取特征,結(jié)果驗證分形對網(wǎng)絡(luò)學(xué)習(xí)缺失的幾何形狀具有一定的提升。方法B 將第二階段編碼部分的k 近鄰局部特征提取改為PCN 原網(wǎng)絡(luò)的編碼器,結(jié)果驗證方法D 利用結(jié)合k 近鄰的卷積網(wǎng)絡(luò)提取出代表局部細節(jié)的新表征對精細化點云的生成有提升。方法C 將PFS 采樣獲取的粗略預(yù)測改為PCN 原方法中的MLP 進行生成粗略預(yù)測,其結(jié)果表明本文方法D 中通過FPS 采樣獲取的粗略預(yù)測,比通過其它預(yù)測的方法得到的幾何結(jié)構(gòu)更加準(zhǔn)確和完整,對點云補全有顯著的提升。
如圖6 所示,本文對點云補全的效果進行可視化展示。結(jié)果表明,在輸入同時存在幾何形狀缺失和稀疏性缺失的情況下,本文方法補全效果優(yōu)于其它的方法。對于各類物體,可以很好地還原點云的三維形狀和局部細節(jié),點云補全效果與真實完整點云接近。值得注意的是,對于椅子靠背的補全,其它方法補全出的椅子靠背都是一個整體,而本文提出的方法很好地保留了其鏤空的細節(jié);除此之外,對于杯子把手的補全,本文提出的方法有效地補全了方形把手,而其它方法都將其生成為更多樣本的圓形把手。
圖6 可視化效果圖
盡管本文方法在一定程度上取得不錯的效果,通過觀察發(fā)現(xiàn)仍然存在一些在點云補全任務(wù)中不能很好解決的難點,如圖7 所示。其一,對于部分物體的部件,如汽車和摩托車的輪胎生成效果不佳。其原因為在點云補全的過程中因為進行均勻平滑化,導(dǎo)致了物體內(nèi)各部分的邊緣不夠銳化,各部件之間生成的點云分布不夠準(zhǔn)確,僅有物體的整體形狀,沒有明顯的各部分間的區(qū)別。其二,面對細長的部分,因其點的個數(shù)本身偏少,生成的三維點云會存在不連續(xù)的現(xiàn)象。
圖7 難點案例分析
本文設(shè)計了一種多階段分形組合的點云補全方法,該方法分別針對幾何形狀缺失和稀疏性缺失問題進行分階段補全。其中第一階段利用分形特征和金字塔模型生成多尺度幾何形狀缺失點云,并與輸入點云進行合并。第二階段利用KNN graph算法和Point-Net 堆疊網(wǎng)絡(luò)獲得局部特征,并通過折疊網(wǎng)絡(luò)輸出精細化平滑的點云。該方法分階段實現(xiàn)點云補全,能應(yīng)對更復(fù)雜的點云缺失情況和優(yōu)化點云補全的過程。通過在ShapeNet數(shù)據(jù)集上進行實驗,有效地驗證了本文提出方法的有效性。