陳煒哲,高金金,李潞洋
(1.山西省信息產(chǎn)業(yè)技術(shù)研究院有限公司,山西 太原 030012;2.山西財(cái)經(jīng)大學(xué) 實(shí)驗(yàn)中心,山西 太原 030006)
點(diǎn)云是一種簡單且有效的三維描述數(shù)據(jù)結(jié)構(gòu),已被廣泛應(yīng)用在機(jī)器人、自動(dòng)駕駛、數(shù)字孿生等方面.為了有效地挖掘點(diǎn)云數(shù)據(jù)表示的空間和形狀特征,近期的研究在點(diǎn)云分析中引入深度學(xué)習(xí)技術(shù).然而,由于點(diǎn)云是一種無序的非歐幾里得數(shù)據(jù)結(jié)構(gòu),故很難在點(diǎn)云上直接定義規(guī)整的卷積算子.
早期的方法主要分為體素化和多視角兩類.點(diǎn)云的體素化方法將原始點(diǎn)云數(shù)據(jù)轉(zhuǎn)換成為低分辨率的體素模型,并將二維卷積算子擴(kuò)展為三維卷積算子,然后對(duì)點(diǎn)云進(jìn)行特征編碼.多視角特征融合方法從多個(gè)不同的觀測(cè)點(diǎn)構(gòu)建點(diǎn)云的二維圖像,并進(jìn)行特征融合,然后利用二維卷積算子進(jìn)行特征提取.這兩類方法的本質(zhì)都是將非規(guī)整的點(diǎn)云數(shù)據(jù)轉(zhuǎn)換為規(guī)整的歐幾里得數(shù)據(jù)結(jié)構(gòu),但是數(shù)據(jù)轉(zhuǎn)換的過程中造成了信息損失,這不利于提升模型的效率和有效性.
近期提出的一些方法直接使用點(diǎn)云RAW數(shù)據(jù)作為模型的輸入.PointNet[1]是一種基于點(diǎn)的特征編碼結(jié)構(gòu),使用1×1卷積對(duì)特征進(jìn)行編碼,隨后通過對(duì)稱函數(shù)將獨(dú)立的特征聚合成為全局特征.PointNet開創(chuàng)了深度學(xué)習(xí)模型直接處理點(diǎn)云輸入的先河,但是存在兩個(gè)問題:1)由于僅有一次全局特征聚合,PointNet丟棄了大量的局部特征;2)沒有分層降低特征圖的尺寸,導(dǎo)致在深層網(wǎng)絡(luò)中輸入的點(diǎn)數(shù)較多,降低了模型的效率.針對(duì)這些問題,PointNet++[2]被提出,該方法對(duì)點(diǎn)云進(jìn)行分層下采樣,并將點(diǎn)云劃分為不同的局部區(qū)域,然后在局部區(qū)域使用PointNet進(jìn)行特征編碼與聚合.PointNet++的架構(gòu)保留了點(diǎn)云局部特征的同時(shí),降低了深層網(wǎng)絡(luò)的計(jì)算量,提升了點(diǎn)云深度學(xué)習(xí)模型在各類任務(wù)上的有效性,成為點(diǎn)云深度學(xué)習(xí)的新范式.在此之后的大量工作[3-10]對(duì)編碼器部分的局部特征提取方法進(jìn)行改進(jìn),但大多保留了PointNet++的基本架構(gòu).
點(diǎn)云模型的零件分割、法向量估計(jì)和點(diǎn)云場景語義分割是一類點(diǎn)云深度學(xué)習(xí)的細(xì)粒度任務(wù).基于PointNet++架構(gòu)的細(xì)粒度任務(wù)模型,在編碼器階段對(duì)點(diǎn)云采樣并聚合特征,逐層降低點(diǎn)云模型的分辨率,然而,細(xì)粒度任務(wù)的輸出與點(diǎn)云模型中每一個(gè)點(diǎn)都相關(guān),因此需要構(gòu)建一個(gè)與分層編碼器結(jié)構(gòu)相對(duì)稱的上采樣解碼器以逐層恢復(fù)特征的分辨率,如圖1 所示.
圖1 點(diǎn)云細(xì)粒度任務(wù)模型的編碼器-解碼器結(jié)構(gòu)Fig.1 Encoder-decoder architecture for point cloud fine-grained task model
傳統(tǒng)二維圖像的上采樣方法主要包括線性插值、轉(zhuǎn)置卷積(Transposed convolution)與反池化(Unpooling).由于點(diǎn)云是非規(guī)整的,對(duì)其定義轉(zhuǎn)置卷積較困難;點(diǎn)云編碼器的采樣與分組方法,會(huì)使得不同的布局區(qū)域之間存在交叉,這使得反池化的特征廣播范圍難以控制.基于PointNet++ 架構(gòu)的深度學(xué)習(xí)模型采用線性插值作為恢復(fù)分辨率的上采樣方法,即通過上采樣目標(biāo)點(diǎn)與3個(gè)下采樣點(diǎn)之間的距離關(guān)系進(jìn)行特征插值,從而得到目標(biāo)點(diǎn)的上采樣特征.然而,僅通過歐幾里得距離來評(píng)估上采樣目標(biāo)點(diǎn)與下采樣點(diǎn)之間的空間關(guān)系是不充分的,這種策略忽略了上采樣目標(biāo)點(diǎn)與下采樣點(diǎn)之間的顯式低維度相對(duì)位置關(guān)系,同時(shí)也忽略了它們之間隱式的空間結(jié)構(gòu)關(guān)系,這使得上采樣特征的有效性變差.
本文針對(duì)用于細(xì)粒度問題的點(diǎn)云深度學(xué)習(xí)模型的解碼器中線性插值上采樣方法存在的問題,提出一種基于自注意力機(jī)制的解碼方法.具體來說,在上采樣目標(biāo)點(diǎn)與下采樣點(diǎn)之間構(gòu)建點(diǎn)積注意力模塊,通過該模塊學(xué)習(xí)并自適應(yīng)評(píng)估兩者之間的相關(guān)性,并計(jì)算上采樣目標(biāo)點(diǎn)的特征.本文提出的解碼器模塊可以即插即用的方式嵌入到大多數(shù)基于分層特征聚合的點(diǎn)云深度學(xué)習(xí)模型中,并提升了這類模型的有效性.在多個(gè)不同模型與多種細(xì)粒度任務(wù)上進(jìn)行實(shí)驗(yàn),對(duì)本文提出的方法進(jìn)行評(píng)估,并與原始方法進(jìn)行對(duì)比.實(shí)驗(yàn)結(jié)果表明,相比于線性插值上采樣方法,基于自注意力機(jī)制的解碼器更加有效.
為了在點(diǎn)云深度學(xué)習(xí)中克服無序性的問題,PointNet利用1×1卷積逐點(diǎn)進(jìn)行特征編碼,并在全局上對(duì)特征進(jìn)行最大池化,以確保模型對(duì)點(diǎn)云具有置換不變性.PointNet++參考傳統(tǒng)二維卷積神經(jīng)網(wǎng)絡(luò)的逐層縮小特征圖的經(jīng)典架構(gòu),在點(diǎn)云上使用最遠(yuǎn)點(diǎn)采樣與球查詢分別進(jìn)行下采樣與局部區(qū)域劃分,以逐層將點(diǎn)云的輸入分辨率降低到采樣點(diǎn)個(gè)數(shù),在局部區(qū)域中使用PointNet進(jìn)行特征編碼.因此,PointNet++在大幅度降低深層網(wǎng)絡(luò)特征輸入量的同時(shí),還保留了不同層次的局部特征.
考慮到點(diǎn)云細(xì)粒度任務(wù)的輸出與輸入的點(diǎn)一一對(duì)應(yīng),故模型需要的輸出應(yīng)為一個(gè)與輸入點(diǎn)數(shù)相同的特征集合.由于PointNet++在編碼階段逐層降低輸入的點(diǎn)數(shù),特征的解碼階段需要逐層特征上采樣,來恢復(fù)編碼器中每一層對(duì)應(yīng)的分辨率,最終輸出的特征集合與原始點(diǎn)云的點(diǎn)數(shù)相同.
點(diǎn)云的數(shù)據(jù)結(jié)構(gòu)是非規(guī)整的,通過最遠(yuǎn)點(diǎn)采樣與球查詢對(duì)點(diǎn)云進(jìn)行局部區(qū)域劃分,會(huì)使得不同的局部區(qū)域不可避免地出現(xiàn)交叉,尤其是為了擴(kuò)大局部感受野,將球查詢半徑設(shè)置較大時(shí),這種交叉更為嚴(yán)重.這使得轉(zhuǎn)置卷積與反池化難以被應(yīng)用在點(diǎn)云上采樣中,如圖2 中的灰色點(diǎn).PointNet++提出一種線性插值方法,以解決解碼器中分辨率恢復(fù)的問題.
圖2 點(diǎn)云局部區(qū)域之間的不規(guī)則交叉Fig.2 Irregular crossover between local areas of point cloud
定義上采樣目標(biāo)點(diǎn)(即被特征插值的點(diǎn))為xi,距離xi最近的k個(gè)下采樣點(diǎn)集合為pdown={xj|j=0,1,…,k},其對(duì)應(yīng)的特征集合為fdown={fj∈Rdf|j=0,1,…,k},df為特征的維度.下采樣點(diǎn)xj與上采樣目標(biāo)點(diǎn)xi之間的距離為dij,如圖3 所示.則上采樣目標(biāo)點(diǎn)的特征fi的計(jì)算為
圖3 基于距離的線性插值Fig.3 Linear interpolation based on distance
(1)
式(1)可以理解為點(diǎn)xi的插值特征為k個(gè)臨近的下采樣點(diǎn)xj的特征fj的加權(quán)和,fj對(duì)應(yīng)的權(quán)重與兩點(diǎn)之間的距離dij成反比.也就是說,xj與xi距離越遠(yuǎn),xj對(duì)xi的影響力越低,權(quán)重1/dij的值越小,fj對(duì)fi的貢獻(xiàn)也越小.反之,xj與xi距離越近,fj對(duì)fi的貢獻(xiàn)越大,當(dāng)兩點(diǎn)完全重合時(shí),直接使用fj作為fi.
線性插值上采樣方法僅用距離作為插值特征貢獻(xiàn)的重要指標(biāo),在直觀上具有一定的合理性.但是考慮到空間復(fù)雜的形狀關(guān)系,僅依靠距離作為唯一的特征貢獻(xiàn)評(píng)價(jià)指標(biāo)是不足的,該策略忽略了點(diǎn)xj與xi之間的空間位置關(guān)系可能帶來的非線性特征變化,使得解碼器對(duì)復(fù)雜空間特征的魯棒性降低,從而降低了模型整體的有效性.
針對(duì)線性插值上采樣存在的問題,本文提出一種基于注意力的上采樣方法,適用于在點(diǎn)云深度學(xué)習(xí)解碼器中逐層恢復(fù)特征圖的分辨率.
注意力機(jī)制[11]能夠用來衡量不同特征之間的相關(guān)性.在點(diǎn)云上采樣中,注意力機(jī)制評(píng)估了下采樣點(diǎn)與上采樣目標(biāo)點(diǎn)之間的相關(guān)性,進(jìn)一步用來確定下采樣點(diǎn)的特征對(duì)插值特征的貢獻(xiàn)程度.
空間注意力與特征注意力的具體計(jì)算方法參考了Transformer[12-13]的點(diǎn)積注意力.
具體來說,將k個(gè)下采樣點(diǎn)集合pdown轉(zhuǎn)換為維度為k×3的矩陣Pdown,特征集合fdown轉(zhuǎn)換成維度為k×df的矩陣Fdown,定義特征變換權(quán)重參數(shù)矩陣Wq1∈R3×d1與Wk1∈R3×d1(d1為空間注意力計(jì)算內(nèi)部維度),它們分別用以將xi與Pdown轉(zhuǎn)換成為高維度的查詢(query)Q1、關(guān)鍵(key)K1,如式(2)所示.
Q1=xi×Wq1,
K1=Pdown×Wk1,
(2)
式中:Q1∈R1×d1表示點(diǎn)xi的空間注意力查詢向量;矩陣K1∈Rk×d1由被Q1查詢的空間注意力關(guān)鍵(key)向量組成.式(3)定義了點(diǎn)積注意力插值的計(jì)算方法.
(3)
該計(jì)算過程如圖4 所示,圖中3,d1,df,k表示張量維度.
圖4 空間注意力插值的張量流圖Fig.4 Tensor flow of spatial attention interpolation
K2=Fdown×Wk2,
(4)
式中:Q2∈R1×d2;K1∈Rk×d2.式(5)定為特征的點(diǎn)積注意力插值的計(jì)算方式.
(5)
特征注意力的計(jì)算過程如圖5 所示,圖中df,d2,k表示張量維度.
圖5 特征注意力插值的張量流圖Fig.5 Tensor flow of feature attention interpolation
點(diǎn)云分層深度學(xué)習(xí)的編碼器與解碼器是對(duì)稱的,這意味著除了解碼器中的插值特征之外,編碼器中對(duì)稱的位置存在相應(yīng)的編碼特征.多數(shù)細(xì)粒度任務(wù)模型會(huì)將編解碼器中相對(duì)應(yīng)的特征結(jié)合考慮.這種方式稱為編解碼器特征之間的跳躍連接.
定義點(diǎn)xi在編碼器中對(duì)應(yīng)的特征為fei∈Rdfe,其中dfe為編碼器中特征的維度.則跳躍連接如式(6)所示.
fedi=fi‖fei,
(6)
式中:fedi∈Rdf+def為xi的跳躍連接特征,由編碼特征與解碼器中插值特征連接得到,這使得xi連接特征fedi包含有編碼與解碼兩方面特征.
點(diǎn)xi的特征fedi雖然包含編碼特征與解碼特征,但是,兩方面特征依然處于分離狀態(tài),為了能夠挖掘編碼特征與解碼特征之間可能存在的潛在關(guān)聯(lián),本文使用一個(gè)特征混合函數(shù)對(duì)fedi進(jìn)行特征混合.
定義特征混合函數(shù)mix:Rdf+def→Rout,則式(7) 定義了解碼器的特征混合輸出.
fouti=mix(fedi),
(7)
式中:fouti為點(diǎn)xi在解碼器中輸出的最終特征.
空間注意力插值與特征注意力插值中,臨近點(diǎn)個(gè)數(shù)k的取值為4,查詢(query)變換矩陣Wq1與Wq2,以及關(guān)鍵(key)變換矩陣Wk1與Wk2,均為模型網(wǎng)絡(luò)中可學(xué)習(xí)的權(quán)重參數(shù)(parameter),權(quán)重在每一層內(nèi)的不同點(diǎn)之間共享,在不同層之間權(quán)重獨(dú)立,以保證每層之間的獨(dú)立性.在每一層解碼器中,空間注意力插值僅進(jìn)行1次,特征注意力插值堆疊2次.特征混合函數(shù)mix由1×1卷積實(shí)現(xiàn),卷積參數(shù)在每一層內(nèi)不同的點(diǎn)之間共享,以確保不同點(diǎn)的特征混合策略相同.
超參數(shù)(hyperparameter)方面,d1的取值為64,d2的取值與df相同,考慮到本文方法可以嵌入到各種點(diǎn)云細(xì)粒度任務(wù)網(wǎng)絡(luò)中,解碼器的其余各項(xiàng)超參數(shù)(如df、dfe與out)嚴(yán)格遵循被嵌入網(wǎng)絡(luò)模型的原始設(shè)置.
本節(jié)通過實(shí)驗(yàn)對(duì)提出方法的有效性進(jìn)行評(píng)估.評(píng)估實(shí)驗(yàn)選取零件分割與法向量估計(jì)兩項(xiàng)點(diǎn)云常見的細(xì)粒度任務(wù).提出方法被嵌入多種先前提出的網(wǎng)絡(luò)模型中,并針對(duì)兩項(xiàng)任務(wù)進(jìn)行實(shí)驗(yàn),根據(jù)實(shí)驗(yàn)結(jié)果評(píng)估模型性能.同時(shí),本節(jié)還進(jìn)行了一系列消融實(shí)驗(yàn)以評(píng)估提出方法各部分的有效性.
本節(jié)實(shí)驗(yàn)的主要硬件環(huán)境為NVIDIA GEFORCE RTX3090,深度學(xué)習(xí)框架為PyTorch 1.11[14].
零件分割是最常見的點(diǎn)云細(xì)粒度任務(wù),目標(biāo)是將一個(gè)完整的點(diǎn)云形狀按照不同的部件進(jìn)行分割,點(diǎn)云中每一個(gè)點(diǎn)都具有一個(gè)標(biāo)簽,表示該點(diǎn)屬于哪一個(gè)零件.ShapeNet Part[15]數(shù)據(jù)集包含16個(gè)類別共16 846個(gè)點(diǎn)云形狀樣本,樣本被分為50種不同的零部件.
在本節(jié)實(shí)驗(yàn)中,本文提出的解碼器被嵌入到4種不同的點(diǎn)云深度學(xué)習(xí)網(wǎng)絡(luò),與原始模型進(jìn)行對(duì)比.為保證公平對(duì)比,網(wǎng)絡(luò)的超參數(shù)設(shè)置嚴(yán)格遵循原始網(wǎng)絡(luò)的各項(xiàng)參數(shù)設(shè)置.各個(gè)模型均使用Adam優(yōu)化器進(jìn)行訓(xùn)練.
評(píng)估模型性能的指標(biāo)包含兩種:基于類別的平均交并比(Class mean Intersection over Union,c-mIoU)與基于實(shí)例的平均交并比(Instance mean Intersection over Union,i-mIoU).實(shí)驗(yàn)結(jié)果如表1 所示.
表1 ShapeNet上的零件分割性能對(duì)比Tab.1 Part segmentation on ShapeNet
實(shí)驗(yàn)結(jié)果表明,在多種點(diǎn)云深度學(xué)習(xí)模型上應(yīng)用本文提出的解碼器,能夠顯著提升模型在零件分割任務(wù)上的有效性.這說明本文提出的解碼器在點(diǎn)云零件分割任務(wù)上是有效的,同時(shí)對(duì)于不同的特征編碼模型有著良好的適應(yīng)性.
此外,本節(jié)從ShapeNet Part數(shù)據(jù)集中隨機(jī)選取一些形狀,并將嵌入本文解碼器的PointNet++模型的分割結(jié)果進(jìn)行可視化.可視化結(jié)果如圖6 所示.可視化結(jié)果表明,本文提出的解碼器能夠準(zhǔn)確地完成零件分割任務(wù).
圖6 零件分割的可視化Fig.6 Visualization of part segmentation
法向量估計(jì)模型能夠在不計(jì)算點(diǎn)云局部曲面的情況下逐點(diǎn)估計(jì)法向量,是一種常見的細(xì)粒度任務(wù).本節(jié)實(shí)驗(yàn)的數(shù)據(jù)集為ModelNet40[16],包含40類共12 311個(gè)三維形狀,形狀中每個(gè)點(diǎn)均包含法向量特征.
本節(jié)實(shí)驗(yàn)對(duì)2種基于深度學(xué)習(xí)的法向量估計(jì)模型進(jìn)行改造,并對(duì)比改造前后的法向量估計(jì)性能.實(shí)驗(yàn)評(píng)估指標(biāo)為法向量的平均余弦距離誤差(Average cosine-distance error),實(shí)驗(yàn)結(jié)果如表2 所示.
表2 ModelNet40上的法向量估計(jì)誤差對(duì)比Tab.2 Normal estimation error on ModelNet40
實(shí)驗(yàn)結(jié)果表明,對(duì)比基線方法PointNet++的原始模型,改進(jìn)方法將平均余弦距離誤差降低13%.在嵌入本文提出的解碼器后,2種深度學(xué)習(xí)模型在法向量估計(jì)任務(wù)上的有效性均得到顯著提升.
2.3節(jié)中提到特征注意力層可以對(duì)多個(gè)特征注意力計(jì)算模塊進(jìn)行堆疊,以增強(qiáng)特征注意力計(jì)算的準(zhǔn)確度.本節(jié)實(shí)驗(yàn)研究了特征注意力層的構(gòu)造對(duì)模型有效性的影響.
實(shí)驗(yàn)基于ShapeNet Part數(shù)據(jù)集上的零件分割任務(wù),實(shí)驗(yàn)?zāi)P瓦x取了PointNet++.本節(jié)構(gòu)建不同堆疊次數(shù)的特征注意力進(jìn)行對(duì)比,實(shí)驗(yàn)結(jié)果如表3 所示.
表3 特征注意力堆疊數(shù)的影響Tab.3 The impact of the stacks of feature attention
實(shí)驗(yàn)結(jié)果表明,即使僅進(jìn)行一次特征注意力計(jì)算,依然提升了模型的有效性,這說明提出方法是有效的.與單次特征注意力計(jì)算相比,堆疊2次注意力計(jì)算將c-mIoU提升了0.2%.繼續(xù)堆疊特征注意力計(jì)算模塊,模型的有效性并未出現(xiàn)顯著提升.因此本文選擇堆疊2次特征注意力計(jì)算模塊.
本節(jié)進(jìn)行了消融實(shí)驗(yàn)以驗(yàn)證基于注意力解碼器各部分的有效性.消融實(shí)驗(yàn)基于PointNet++模型的零件分割任務(wù),有效性評(píng)估指標(biāo)為類別的平均交并比(c-mIoU).
(1) 空間注意力插值
空間注意力部分無法被直接去除,這是由于特征注意力需要空間注意力輸出的空間插值特征.因此,本節(jié)的對(duì)比實(shí)驗(yàn)將空間注意力部分修改為一般三點(diǎn)線性插值函數(shù),實(shí)驗(yàn)結(jié)果如表4 所示.
表4 消融研究實(shí)驗(yàn)結(jié)果Tab.4 Experimental results of ablation studies
實(shí)驗(yàn)結(jié)果表明,空間注意力模塊被替換后,平均交并比降低了0.2%,表明分割模型的有效性變差.這驗(yàn)證了空間注意力模塊的有效性.
(2) 特征注意力插值
本節(jié)實(shí)驗(yàn)將特征注意力部分從解碼器中去除,并進(jìn)行實(shí)驗(yàn),結(jié)果如表4 所示.移除特征注意力后,平均交并比降低0.4%,這表明特征注意力插值模塊是有效的.
本文提出一種基于雙重注意力插值的點(diǎn)云深度學(xué)習(xí)解碼器.該方法通過空間注意力插值模塊與特征注意力插值模塊,能夠有效地對(duì)點(diǎn)云模型進(jìn)行特征上采樣.本文將改進(jìn)的解碼器嵌入到多個(gè)點(diǎn)云深度學(xué)習(xí)模型中,并在兩項(xiàng)細(xì)粒度任務(wù)上進(jìn)行有效性驗(yàn)證.試驗(yàn)結(jié)果表明,本文提出的解碼器能夠有效提升點(diǎn)云深度學(xué)習(xí)模型在細(xì)粒度任務(wù)上的有效性.后續(xù)研究將致力于將基于注意力插值的解碼器應(yīng)用于更多的任務(wù)中,例如場景的語義分割和三維目標(biāo)監(jiān)測(cè)等.