論文主要介紹了一種在圖結(jié)構(gòu)上進行卷積操作的一種方法,簡稱為ECC??偨Y(jié)而言,ECC的卷積操作和常規(guī)的二維圖像卷積操作都是一種加權(quán)平均操作,不同之處在于ECC可以作用在任何圖結(jié)構(gòu)上,并且其權(quán)重由節(jié)點間的邊權(quán)所決定。
Edge-Conditioned Convolution(ECC)
ECC是一種對一個圖的局部信息進行卷積的方法。Edge-Conditioned的意思是其卷積核由圖上的邊來決定。
概念與符號定義
- 對于一個有向圖或者無向圖G=(V,E) ,|V|=n ,|E|=m ,設(shè)l \in \{0,...,l_{max} \} 為前饋神經(jīng)網(wǎng)絡(luò)的層數(shù)索引。
- 設(shè)圖G的頂點和邊上都有標(biāo)簽(label)。記第l層的每個頂點的標(biāo)簽(也稱信號或特征)維度為d_l, 則通過矩陣X^l \in \mathbb{R}^{n \times d_l }來表示這n個頂點上的標(biāo)簽。同理以L \in \mathbb{R}^{m \times s}表示邊上的標(biāo)簽(也稱屬性)。注意到這里,頂點上的標(biāo)簽維度會隨著層數(shù)的改變而改變,而邊上的標(biāo)簽維度s不隨著網(wǎng)絡(luò)層數(shù)而變化。記X^0為輸入信號。
- 頂點i的鄰居被定義為與i直接相連的頂點(在有向圖中則為i的先輩節(jié)點)以及i本身,即:
N(i) = \{j; (j,i) \in E\} \cup \{i\}
ECC具體方法
對于一個頂點,ECC的作用域為其所有鄰居。
第l層的第i個頂點的特征值X^l(i) \in \mathbb{R}^{d_l}為是由第l-1層i的所有鄰居的特征值X^{l-1}(j) \in \mathbb{R}^{d_{l-1}}加權(quán)求和得到的。
若要解決頂點無序性以及鄰居節(jié)點數(shù)目不確定的問題,顯然以常規(guī)的方法定義權(quán)重是行不通的(比如二維矩陣上的卷積核定義)。ECC的做法:定義一簇可學(xué)習(xí)的(learnable)函數(shù)F^l: \mathbb{R}^s \mapsto \mathbb{R}^{d_l \times d_{l-1}} ,其輸入是一條邊e_{ji}上的標(biāo)簽值L(j,i),輸出則是一個權(quán)重矩陣\Theta_{ji}^l \in \mathbb{R}^{d_l \times d_{l-1}}。那么ECC則可表示為:
X^l(i) = \frac{1}{N(i)} \sum_{j \in N(i)}F^{l}(L(j,i); \omega^l)X^{l-1}(j) + b^l
= \frac{1}{N(i)} \sum_{j \in N(i)}\Theta_{ji}^l X^{l-1}(j) + b^l
其中b^l \in \mathbb{R}^{d_l}是一個learnable的偏置,\omega^l是函數(shù)F^l的learnable的參數(shù)。文中使用多層感知機mlp來表示函數(shù)F^l。在訓(xùn)練階段,b^l ,\omega^l在每一次迭代時都會被更新。測試階段,b^l ,\omega^l都不會再變化,而\Theta_{ji}^l的具體值仍依賴于給定的邊e_{ji}上的標(biāo)簽值L(j,i)。因此ECC是一種使用了動態(tài)卷積核的方法。
點云上的應(yīng)用
點云(PointCloud)也可以被視為一種圖結(jié)構(gòu)。論文介紹了在原始點云數(shù)據(jù)結(jié)構(gòu)上進行構(gòu)圖以及對其進行下采樣的方法。
點云構(gòu)圖 Graph Construction on point cloud P
用點云中每個點p作為圖G中的每個頂點v
每個頂點v的初始取值為相應(yīng)的p的特征值(密度、RGB值等)
頂點v_i的空間鄰域內(nèi)的所有頂點v_j被認(rèn)為是v_i的鄰居??臻g領(lǐng)域可以有多種取法,可以用knn取,也可以在固定半徑的范圍內(nèi)取,實驗中固定半徑的方法更好
將v_i與其所有鄰居v_j以有向邊e(j,i)相連
每條邊的label以一個6維向量來表示:
L(j; i) = (δx, δy, δz, ||δ||, arccos( δz/||δ||) ,arctan(δy/δx) ).
其中\delta=p_j - p_i , 即p_j,p_i 兩點在歐氏空間下的向量偏移。上式中前三個分量為\delta 在笛卡爾坐標(biāo)系下的坐標(biāo)值,后三個分量為其在球坐標(biāo)系下的坐標(biāo)值
點云下采樣 Graph Coarsening on point cloud P
使用VoxelGrid方法對點云進行粗粒度化(也即pooling)。具體做法:
- 使用一個分辨率為r^h的3d網(wǎng)格框住整個點云P^{h-1}
- 對于網(wǎng)格中的每個voxel, 用該voxel中的中心點來表示該voxel內(nèi)的所有點
- 用上一節(jié)的方法對新的點云P^h進行圖的構(gòu)造,得到更粗粒度的圖G^{h}
按論文中的說法,對于每一個輸入圖G,都事先使用Graph Coarsening方法為其建立一個h^{max}層的圖金字塔,金字塔的層數(shù)越高,對應(yīng)的圖具有更粗的粒度。然后在網(wǎng)絡(luò)的pooling層,則根據(jù)金字塔中對應(yīng)的相鄰層的結(jié)點映射關(guān)系來執(zhí)行pooling操作。