鐘 誠(chéng),周浩杰,韋海亮
(數(shù)學(xué)工程與先進(jìn)計(jì)算國(guó)家重點(diǎn)實(shí)驗(yàn)室,江蘇 無(wú)錫 214000)
三維點(diǎn)云是指一個(gè)三維坐標(biāo)系統(tǒng)中一組向量的集合。這些向量通常以X,Y,Z三維坐標(biāo)的形式表示,一般用于描述物體的外貌形狀。深度學(xué)習(xí)方法已經(jīng)被廣泛應(yīng)用于圖像識(shí)別、文本處理等領(lǐng)域。但目前而言,使用深度學(xué)習(xí)方法提取三維點(diǎn)云數(shù)據(jù)的特征仍然存在諸多障礙。其中最主要的原因在于點(diǎn)云的排列不變性。用于表示同一物體的n個(gè)點(diǎn)云數(shù)據(jù)點(diǎn)有n!種排列方式,而點(diǎn)云的高層語(yǔ)義特征不能因?yàn)辄c(diǎn)云排列順序的變化而改變。這意味著過(guò)去應(yīng)用在網(wǎng)格狀數(shù)據(jù)(如圖像、文本)上的卷積方法難以應(yīng)用在三維點(diǎn)云數(shù)據(jù)上。Charles R. Qi等人提出的PointNet[1]為三維點(diǎn)云數(shù)據(jù)的處理打開(kāi)了一扇新的大門。PointNet將對(duì)稱函數(shù)應(yīng)用到三維點(diǎn)云的處理過(guò)程中,憑借最大池化的方法提取三維點(diǎn)云的高層特征,借此刷新了多項(xiàng)基準(zhǔn)數(shù)據(jù)集的記錄。最大池化的方法雖然在高層語(yǔ)義特征的提取上有很大優(yōu)勢(shì),但是采用這種方法會(huì)造成三維點(diǎn)云局部幾何特征的缺失,給局部信息的提取造成困難。自然語(yǔ)言處理問(wèn)題同樣需要妥善解決局部信息與全局信息的關(guān)系。自然語(yǔ)言處理中,解決這一問(wèn)題的常用方法有:卷積網(wǎng)絡(luò)、循環(huán)卷積網(wǎng)絡(luò)[2]以及注意力機(jī)制[3]。其中注意力機(jī)制可以不依賴卷積的堆疊,實(shí)現(xiàn)局部與全局信息的整合。這一特點(diǎn)滿足三維點(diǎn)云數(shù)據(jù)處理過(guò)程的需求,所以利用注意力機(jī)制提取點(diǎn)云信息是一種可行的技術(shù)路線。
文中的主要貢獻(xiàn)分為兩點(diǎn):在點(diǎn)云特征提取中引入注意力機(jī)制,為點(diǎn)云局部與全局信息的整合提供一種可行方法;使用稀疏卷積層替代最大池化層,減少池化過(guò)程的信息損失。
三維點(diǎn)云的特征提取技術(shù)在與點(diǎn)云相關(guān)的應(yīng)用中發(fā)揮著重要作用。與深度學(xué)習(xí)特征有關(guān)的主流的點(diǎn)云特征提取方法主要可以分為三類:體素化方法[4]、多視圖方法、最大池化方法。
體素化方法可以視作二維卷積在三維空間上的拓展與應(yīng)用。體素化方法結(jié)構(gòu)簡(jiǎn)單,但是在三維空間構(gòu)造網(wǎng)格對(duì)內(nèi)存資源消耗大,并且點(diǎn)云在空間中的分布往往是稀疏的,直接對(duì)空網(wǎng)格進(jìn)行卷積會(huì)造成不必要的計(jì)算資源浪費(fèi)。所以單純的體素化方法一般難以完成高分辨率點(diǎn)云解析任務(wù)以及大規(guī)模點(diǎn)云處理任務(wù)[5]。多視圖方法通過(guò)將三維點(diǎn)云投影到二維空間使用二維卷積方法完成三維數(shù)據(jù)的特征提取。多視圖方法在三維目標(biāo)檢測(cè)方面有著獨(dú)到的優(yōu)勢(shì),但是在如三維目標(biāo)分割等應(yīng)用場(chǎng)景中效果不佳[6]。因?yàn)橥队暗倪^(guò)程造成了深度信息的損失。近年來(lái),直接使用三維點(diǎn)云數(shù)據(jù)作為輸入利用最大池化方法處理三維點(diǎn)云逐漸成為了研究熱點(diǎn)。如PointNet[1]等可以利用最大池化方法完成三維點(diǎn)云特征的高層語(yǔ)義信息提取,然而使用最大池化操作的缺陷在于模型會(huì)喪失感知局部信息的能力。針對(duì)上述問(wèn)題,研究者設(shè)計(jì)出了能夠描述局部特征的三維點(diǎn)云特征提取網(wǎng)絡(luò)如PointNet++[7],基于Octree的方法[8]、PointCNN[9]等。這些方法大都按照:分層、局部特征的提取、全局特征的提取、特征聚合等步驟處理點(diǎn)云信息。其中,為了構(gòu)建全局關(guān)系往往需要對(duì)點(diǎn)云進(jìn)行分層,分層的過(guò)程又可能會(huì)引入新的信息損失。比如文獻(xiàn)[10]中的分層網(wǎng)絡(luò)會(huì)將三維點(diǎn)云切割的過(guò)細(xì),產(chǎn)生難以利用的點(diǎn)云碎片。在一些應(yīng)用中,直接結(jié)合三維點(diǎn)云的局部與全局信息可能起到更好的特征處理效果。
自然語(yǔ)言中處理上下文關(guān)系的一些方法可以為三維點(diǎn)云的處理提供參考。自然語(yǔ)言處理通常利用循環(huán)卷積網(wǎng)絡(luò)對(duì)上下文的信息進(jìn)行抽取,解決局部與全局信息的整合問(wèn)題。但是循環(huán)卷積網(wǎng)絡(luò)的基本結(jié)構(gòu)是一個(gè)遞歸模型。遞歸模型一般難以實(shí)現(xiàn)并行化并且循環(huán)卷積網(wǎng)絡(luò)對(duì)全局信息的感知相對(duì)較弱,要逐步遞歸才能獲得全局信息,一般要使用雙向循環(huán)卷積網(wǎng)絡(luò)。卷積網(wǎng)絡(luò)只能獲取局部信息,需要通過(guò)層疊來(lái)增大感受野。文獻(xiàn)[11]提出了僅依賴注意力機(jī)制即可提取文本的全局信息的方法。筆者認(rèn)為利用注意力機(jī)制同樣能夠在三維點(diǎn)云上獲取全局信息。不同于直接構(gòu)造特征提取層的方法,文中基本的思路是構(gòu)建如下編碼方案:
yt=f(xt,A,B)
其中,xt∈X表示原始點(diǎn)云數(shù)據(jù),yt表示編碼后的點(diǎn)云數(shù)據(jù),A,B表示兩個(gè)序列矩陣。若取A=B=X,則得到結(jié)果yt=f(xt,X,X)。yt為xt與全局X點(diǎn)云數(shù)據(jù)交互后的編碼結(jié)果,這個(gè)結(jié)果既包含本地信息又包含全局信息,提取特征的問(wèn)題轉(zhuǎn)化成為確定編碼函數(shù)f的問(wèn)題。
本節(jié)結(jié)合注意力機(jī)制的基本概念介紹在點(diǎn)云中應(yīng)用注意力機(jī)制的方法。針對(duì)最大池化層的缺陷,本節(jié)從理論上分析了池化層與卷積層的異同,給出了一種替換池化層的解決方案。
注意力機(jī)制的一般化定義如式(1)所示。
(1)
其中,Q∈Rn×dk,K∈Rm×dk,V∈Rm×dv。
不妨取qt∈Q,則對(duì)單個(gè)輸入向量qt求得的編碼結(jié)果可以表示為:
(2)
在Attention機(jī)制基礎(chǔ)之上,谷歌提出的Multi-Head Attention機(jī)制用于進(jìn)一步提升模型的編碼能力[11]。文中使用的注意力機(jī)制模型主要基于Multi-Head Attention。相比基礎(chǔ)的模型,Multi-Head Attention機(jī)制有兩點(diǎn)不同。一是將Q,K,V經(jīng)矩陣參數(shù)進(jìn)行映射,再送入Attention模型;二是將原始輸入進(jìn)行多次不共享參數(shù)的Attention操作,輸出結(jié)果拼接。這兩點(diǎn)改進(jìn)能提升模型的描述能力。具體的模型如下所示:
headi=Attention(QWiQ,KWiK,VWiV)
(3)
最終輸出的特征表示為:
MultiHead(Q,K,V)=Concat(head1,…,headh)
注意力機(jī)制在點(diǎn)云數(shù)據(jù)與文本數(shù)據(jù)方面的應(yīng)用密切相關(guān)又存在不同。應(yīng)用于自然語(yǔ)言領(lǐng)域的注意力機(jī)制模型通常由一組編碼器與解碼器構(gòu)成。編碼器負(fù)責(zé)構(gòu)建上下文關(guān)系,對(duì)詞句進(jìn)行映射,形成特征;解碼器負(fù)責(zé)解釋特征,對(duì)語(yǔ)義信息進(jìn)行還原。文中應(yīng)用注意力機(jī)制的主要目的是通過(guò)編碼功能實(shí)現(xiàn)局部信息與全局信息的聚合,避免使用卷積堆疊逐層增加感受野的方法,進(jìn)而繞過(guò)點(diǎn)云層次劃分問(wèn)題。所以文中主要利用注意力機(jī)制的編碼部分,通過(guò)編碼即可得到可用于點(diǎn)云分類的特征向量。
文中基于Multi-Head Attention機(jī)制對(duì)點(diǎn)云進(jìn)行編碼,需要在序列內(nèi)部應(yīng)用Attention,尋找序列內(nèi)部的聯(lián)系綜合局部與全局信息。為實(shí)現(xiàn)這一目的,文中利用自注意力機(jī)制(Self Attention)[3]實(shí)現(xiàn)模型。所謂的自注意力機(jī)制就是將式(1)中的輸入Q,K,V設(shè)為同一矩陣X。具體的模型如下所示:
Y=MultiHead(X,X,X)
(4)
其中,X為三維點(diǎn)云集合,Y為對(duì)點(diǎn)云的編碼結(jié)果。
對(duì)某一點(diǎn)云xt∈X而言,其編碼過(guò)程如式(5)所示:
(5)
容易觀察到每次對(duì)xt進(jìn)行編碼的過(guò)程中,其他的點(diǎn)云也作為變量,影響到xt的輸入結(jié)果,得到的編碼結(jié)果既蘊(yùn)含本地信息又包括全局信息。直接使用點(diǎn)云作為輸入提取到的信息僅包含點(diǎn)特征,而點(diǎn)特征的描述能力較弱,難以囊括鄰近的幾何信息。為了更好地獲取局部幾何信息,文中參照邊緣卷積[12]的概念對(duì)點(diǎn)云輸入重新進(jìn)行構(gòu)造。記原始的點(diǎn)云集合為X,xt∈X,記xt的最近鄰為xtn。xt的最近鄰向量為(xt,xtn)。輸入向量qt記為qt=(xt,xtn)。這樣做是為注意力機(jī)制提供了一個(gè)直觀的可解釋的作用機(jī)制。qt的編碼結(jié)果可以視作其余向量在輸入空間中的線性組合。按上述方法構(gòu)造出的最近鄰向量qt完全可以用于重新生成原始的點(diǎn)云數(shù)據(jù)xt。這意味著輸入向量構(gòu)造方案不會(huì)破壞原始三維點(diǎn)云的信息。
三維點(diǎn)云難以應(yīng)用卷積的一個(gè)主要原因在于點(diǎn)云的排列不變性。觀察注意力機(jī)制公式(3),在該式中如果將K,V按行打亂順序,那么經(jīng)過(guò)Attention模塊編碼得到的結(jié)果還是一樣的。這在自然語(yǔ)言處理中會(huì)造成詞序混亂的問(wèn)題,所以在用注意力機(jī)制處理自然語(yǔ)言時(shí)通常還需要增加一個(gè)標(biāo)注位置信息的模塊。然而這個(gè)問(wèn)題在三維點(diǎn)云的處理中反而成為一個(gè)優(yōu)點(diǎn),因?yàn)槿S點(diǎn)云的輸入本身是無(wú)序的,若K,V的順序?qū)幋a結(jié)果不造成影響,那么說(shuō)明這種編碼方案可以適應(yīng)三維點(diǎn)云的序列無(wú)關(guān)性,Attention模塊起到類似對(duì)稱函數(shù)的作用。
PointNet中最關(guān)鍵的點(diǎn)是最大池化方法能夠描述三維點(diǎn)云的分布,并且池化層大小與模型的性能密切相關(guān)。然而最大池化操作的缺點(diǎn)在于局部信息的損失較大。雖然增加池化層的寬度可以逼近三維點(diǎn)云的空間分布,但是真實(shí)的應(yīng)用場(chǎng)景中不可能無(wú)限制增加池化層寬度。局部信息的損失同樣會(huì)為感知三維點(diǎn)云的精細(xì)結(jié)構(gòu)造成困難。注意到最大池化操作是對(duì)點(diǎn)云空間的一種降采樣。使用其他的采樣方法有可能也能夠達(dá)成相同的效果。
文獻(xiàn)[13]指出池化層可以用卷積的形式進(jìn)行表示,這表明在處理點(diǎn)云數(shù)據(jù)時(shí)同樣可能用卷積方法對(duì)池化層進(jìn)行替換。
為了闡明兩者的區(qū)別與聯(lián)系,下面對(duì)二者進(jìn)行對(duì)比。設(shè)f是原始數(shù)據(jù)經(jīng)過(guò)一系列網(wǎng)絡(luò)處理后得到的特征表示(feature map)。f可以用一個(gè)三維矩陣W×H×N表示。其中W、H、N分別為feature map的寬度、高度以及特征的通道數(shù)。在這個(gè)三維結(jié)構(gòu)下,池化操作可以看成是一個(gè)用p-norm當(dāng)作激活函數(shù)的卷積操作。當(dāng)p趨向于正無(wú)窮時(shí),就是最大池化操作。卷積式的池化層的公式表示如下:
(6)
其中,k為池化層大小,r為步長(zhǎng),g(h,w,i,j,u) = (r·i+h,r·j+w,u)為f到池化層的映射函數(shù)。
卷積層的公式定義如下:
其中,θ為卷積權(quán)重,σ為激活函數(shù),o∈[1,M]為輸出通道。
通過(guò)觀察上式不難發(fā)現(xiàn),池化層可以視作一個(gè)特征級(jí)別的卷積。在式(7)中,當(dāng)卷積步長(zhǎng)取值非常大時(shí),局部信息對(duì)卷積結(jié)果的影響相對(duì)較小[13]。此時(shí)卷積層對(duì)全局特征的提取性能較好。在目標(biāo)分類的實(shí)驗(yàn)中同樣證明了這一點(diǎn):當(dāng)取較大卷積核的步長(zhǎng)時(shí)分類結(jié)果更好。
文中在ModelNet40數(shù)據(jù)集[14]上評(píng)估模型的三維形狀分類性能。所有的點(diǎn)云數(shù)據(jù)來(lái)自對(duì)40個(gè)類別,共計(jì)12 311個(gè)CAD模型的采樣。實(shí)驗(yàn)取其中9 843個(gè)模型用于訓(xùn)練,使用2 468個(gè)進(jìn)行測(cè)試。對(duì)每個(gè)訓(xùn)練/測(cè)試模型實(shí)例抽取2 048個(gè)采樣點(diǎn)。
圖1所示為AttentionPointNet的基本結(jié)構(gòu)。
圖1 AttentionPointNet模型
其中最基本的結(jié)構(gòu)為Attention Block。文中的Attention Block模塊(見(jiàn)圖2)可以分為三個(gè)部分。
第一部分主要完成輸入向量Q,K,V的線性映射。實(shí)際的模型采用自注意力機(jī)制,所以Q,K,V的取值均設(shè)置為三維點(diǎn)云的最近鄰向量矩陣X。實(shí)驗(yàn)中采用長(zhǎng)度為64的全連接層實(shí)現(xiàn)映射工作。為避免混淆,方便概念解釋,下文仍使用Q,K,V代指Attention Block中的三部分輸入(query,key,value)。模型中的第二部分為Multi-Head Attention模塊。這一模塊主要完成特征的融合工作。Q構(gòu)成原始輸入,K構(gòu)成特征向量空間,V作為欲表征的結(jié)果,訓(xùn)練head=Attention(QWQ,KWK,VWV)中的WQ、WK、WV等參數(shù)矩陣。第三部分為一個(gè)殘差模塊。該模塊將輸入與V的值連接可以提升模型的分類性能,提高模型的分類準(zhǔn)確率。
圖2 Attention Block結(jié)構(gòu)
AttentionPointNet采用Tensorflow[15]構(gòu)建。整體的結(jié)構(gòu)包括一層卷積層、五個(gè)Attention Block模塊、一層最大池化層和多個(gè)三層連接層。第一層的卷積層卷積核大小為(1,1,64)。五個(gè)Attention Block的通道維度大小分別為64、64、64、128、1 024。最大池化層寬度為1 024。使用Adam(adaptive moment estimation)算法作為優(yōu)化算法,初始學(xué)習(xí)率為0.001。每20輪學(xué)習(xí)率減半。學(xué)習(xí)輪數(shù)300輪。表1為不同模型在ModelNet40數(shù)據(jù)集上的分類結(jié)果。
表1 ModelNet40數(shù)據(jù)集分類結(jié)果
現(xiàn)有的大多數(shù)基于PointNet的模型依賴于最大池化層對(duì)空間分布的擬合。文中提出的Attention PointNet對(duì)每個(gè)三維點(diǎn)云進(jìn)行編碼,編碼的信息中包含了其他點(diǎn)的空間分布信息。對(duì)于三維點(diǎn)云的分類這一問(wèn)題,除了使用最大池化的方法,其他的降采樣方法理應(yīng)能取得類似的結(jié)果,比如經(jīng)過(guò)特殊設(shè)計(jì)的卷積方法。在ModelNet40數(shù)據(jù)集上,文中分別改變卷積的步長(zhǎng),測(cè)試實(shí)驗(yàn)性能用于尋找最大池化層的替換品。
實(shí)驗(yàn)中取采樣點(diǎn)個(gè)數(shù)為256,batchsize設(shè)為128,訓(xùn)練輪數(shù)設(shè)為300,對(duì)Attention Block5的輸出結(jié)果(N×1 024)進(jìn)行卷積。輸出的通道維度為128。表2為用不同步長(zhǎng)時(shí)替代最大池化層時(shí),在ModelNet40數(shù)據(jù)集上的結(jié)果。
表2 不同卷積核在ModelNet40數(shù)據(jù)集上的分類結(jié)果
實(shí)驗(yàn)的結(jié)果同樣證明在三維點(diǎn)云數(shù)據(jù)處理中,池化層可以由卷積層進(jìn)行代替,使用較大的步長(zhǎng)能更好地提取點(diǎn)云的全局特征,取得更優(yōu)的分類效果。并且當(dāng)步長(zhǎng)的取值超過(guò)一定閾值,泛化性能基本保持不變。
針對(duì)三維點(diǎn)云的全局與局部信息整合問(wèn)題,提出了利用注意力機(jī)制對(duì)三維信息進(jìn)行整合的方法。目前利用深度學(xué)習(xí)技術(shù)處理三維點(diǎn)云的主流方法大都依賴最大池化層的表征能力。結(jié)合注意力機(jī)制,使用大步長(zhǎng)的卷積方法對(duì)點(diǎn)云的高層次信息進(jìn)行抽取,取得了與使用最大池化方法類似的結(jié)果。這表明除了池化方法,卷積方法也具備三維點(diǎn)云的高層信息提取的潛力。使用注意力機(jī)制的好處是能夠一步到位捕捉到三維點(diǎn)云局部與全局的聯(lián)系。但是相比長(zhǎng)程的、全局性的依賴,在三維點(diǎn)云處理中有部分問(wèn)題比如點(diǎn)云的分割問(wèn)題,更加依賴于局部結(jié)構(gòu)。在這種情況下,文中使用的最近鄰向量構(gòu)造方法就不太合適。而使用K近鄰描述局部特征可能是更為合理的方案。