论文笔记:KD-Net
生活随笔
收集整理的這篇文章主要介紹了
论文笔记:KD-Net
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Escape from Cells: Deep Kd-Networks for the Recognition of 3D Point Cloud Models
1、四個(gè)問(wèn)題
- 3D點(diǎn)云識(shí)別任務(wù)。
- 參考KD樹的結(jié)構(gòu),提出了一種新的樹形結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),用來(lái)處理不規(guī)則的點(diǎn)云數(shù)據(jù)。
- 在形狀分類任務(wù)、形狀檢索任務(wù)以及形狀部件分割任務(wù)中都取得了領(lǐng)先的效果。
- 如果點(diǎn)云存在旋轉(zhuǎn),那么KD樹在X/Y/Z軸方向進(jìn)行切分時(shí)會(huì)得到不同的結(jié)果,影響最終的效果。
- 每次網(wǎng)絡(luò)做前向操作時(shí),都需要先將輸入的點(diǎn)云轉(zhuǎn)為KD樹,預(yù)處理時(shí)必須要占用一定時(shí)間。
2、論文概述
2.1、簡(jiǎn)介
- 我們都知道,由于點(diǎn)云是非歐式結(jié)構(gòu)的數(shù)據(jù),無(wú)法對(duì)其直接應(yīng)用CNN。常用的思路是將其轉(zhuǎn)換為體素網(wǎng)格,但是這樣會(huì)帶來(lái)額外的內(nèi)存消耗和很大的計(jì)算量。
- 作者認(rèn)為:諸如KD樹、八叉樹等數(shù)據(jù)結(jié)構(gòu)常被用于表示不規(guī)則的數(shù)據(jù)。那么,是否能將這些數(shù)據(jù)結(jié)構(gòu)擴(kuò)展到深度神經(jīng)網(wǎng)絡(luò)中呢?這樣的網(wǎng)絡(luò)結(jié)構(gòu)也就能夠處理那些不規(guī)則結(jié)構(gòu)的數(shù)據(jù)。
- 由此,作者提出了KD網(wǎng)絡(luò),主要是模仿卷積神經(jīng)網(wǎng)絡(luò)的思想,但是又使用KD樹的結(jié)構(gòu)來(lái)構(gòu)建計(jì)算圖。
2.2、KD-Networks
- 圖1是KD-Netwoks的示意圖。圖中只考慮二維的情況。
- 在一個(gè)有8個(gè)點(diǎn)的點(diǎn)云上建立KD樹,在每一層都從X/Y軸選擇一個(gè)維度進(jìn)行劃分。
- 從根節(jié)點(diǎn)到葉節(jié)點(diǎn)對(duì)KD樹的每個(gè)節(jié)點(diǎn)進(jìn)行編號(hào),根節(jié)點(diǎn)編號(hào)為0,往后遞增。
- KD數(shù)最左邊的8到15號(hào)節(jié)點(diǎn)實(shí)際就是原始點(diǎn)云,右邊的0號(hào)節(jié)點(diǎn)可以看做輸出的類別預(yù)測(cè)v0v_0v0?。
- 從左到右,可以看做這個(gè)KD-Network的特征前向傳播的方向。
- 圖中的圓圈表示的是特征傳播并聚合的過(guò)程,對(duì)應(yīng)卷積核,其參數(shù)是可學(xué)習(xí)的。相同的顏色表示共享參數(shù),即如果是在相同維度對(duì)點(diǎn)集進(jìn)行劃分,認(rèn)為其卷積參數(shù)也應(yīng)該共享。
2.2.1、輸入
- 由于KD-Network每次都要從3D點(diǎn)云構(gòu)建KD樹,而KD樹的節(jié)點(diǎn)數(shù)是N=2DN=2^{D}N=2D,因此點(diǎn)云的點(diǎn)數(shù)也必須是2D2^{D}2D。如果點(diǎn)云的點(diǎn)數(shù)不同,還需要對(duì)其做上采樣或者下采樣。
- 構(gòu)建KD樹時(shí),我們以自頂向下的方式遞歸地生成每個(gè)樹節(jié)點(diǎn)。每次都選取能最好地分割整個(gè)點(diǎn)集的坐標(biāo)軸作為劃分標(biāo)準(zhǔn),將點(diǎn)集劃分為兩個(gè)一樣大的子集,然后遞歸生成。
- 一個(gè)深度為DDD的平衡KD樹包含有N?1=2D?1N-1=2^{D}-1N?1=2D?1個(gè)非葉節(jié)點(diǎn)。
- 每個(gè)非葉節(jié)點(diǎn)Vi∈TV_{i} \in \mathcal{T}Vi?∈T都與三個(gè)劃分方向did_idi?(X/Y/Z軸,di∈{X,Y,Z}d_i \in \{X, Y, Z\}di?∈{X,Y,Z})以及劃分位置ti\mathcal{t}_iti?有關(guān)。
- KD樹上的節(jié)點(diǎn)還與層數(shù)li∈{1,…,D?1}l_{i} \in\{1, \ldots, D-1\}li?∈{1,…,D?1}有關(guān),li=1l_{i}=1li?=1是根節(jié)點(diǎn),li=Dl_{i}=Dli?=D是葉節(jié)點(diǎn),也對(duì)應(yīng)著3D點(diǎn)云上的點(diǎn)。
- 假設(shè)KD樹是平衡樹,那么第iii號(hào)節(jié)點(diǎn)的子節(jié)點(diǎn)的編號(hào)分別是c1(i)=2ic_{1}(i)=2 ic1?(i)=2i和c2(i)=2i+1c_{2}(i)=2 i + 1c2?(i)=2i+1。
2.2.2、KD-Networks的數(shù)據(jù)處理
- 給定一個(gè)輸入的KD樹T\mathcal{T}T,KD-Network會(huì)計(jì)算KD樹的每個(gè)節(jié)點(diǎn)上的特征向量vi\mathbf{v}_ivi?。
- 葉節(jié)點(diǎn)即輸入是一個(gè)kkk維向量,由輸入點(diǎn)云的維度確定。
- 第l(i)l(i)l(i)層上的非葉節(jié)點(diǎn)iii,其子節(jié)點(diǎn)c1(i)c_1(i)c1?(i)和c2(i)c_2(i)c2?(i)在第l(i)+1l(i) + 1l(i)+1層,其特征向量vc1(i)\mathbf{v}_{c_{1}(i)}vc1?(i)?和vc1(i)\mathbf{v}_{c_{1}(i)}vc1?(i)?已經(jīng)計(jì)算好了。那么當(dāng)前節(jié)點(diǎn)iii的特征向量vi\mathbf{v}_ivi?的計(jì)算公式如下:
- vi={?(Wxli[vc1(i);vc2(i)]+bxli),ifdi=x?(Wyli[vc1(i);vc2(i)]+byli),ifdi=y?(Wzli[vc1(i);vc2(i)]+bzli),ifdi=z\mathbf{v}_{i}=\left\{\begin{array}{l}{\phi\left(W_{\mathrm{x}}^{l_{i}}\left[\mathbf{v}_{c_{1}(i)} ; \mathbf{v}_{c_{2}(i)}\right]+\mathbf{b}_{\mathrm{x}}^{l_{i}}\right)}, if \ d_i = x \\ {\phi\left(W_{\mathrm{y}}^{l_{i}}\left[\mathbf{v}_{c_{1}(i)} ; \mathbf{v}_{c_{2}(i)}\right]+\mathbf{b}_{\mathrm{y}}^{l_{i}}\right)}, if \ d_i = y \\ {\phi\left(W_{\mathrm{z}}^{l_{i}}\left[\mathbf{v}_{c_{1}(i)} ; \mathbf{v}_{c_{2}(i)}\right]+\mathbf{b}_{z}^{l_{i}}\right)}, if \ d_i = z \end{array}\right.vi?=?????(Wxli??[vc1?(i)?;vc2?(i)?]+bxli??),if?di?=x?(Wyli??[vc1?(i)?;vc2?(i)?]+byli??),if?di?=y?(Wzli??[vc1?(i)?;vc2?(i)?]+bzli??),if?di?=z?
- 或簡(jiǎn)寫為:vi=?(Wdili[vc1(i);vc2(i)]+bdili)\mathbf{v}_{i}=\phi\left(W_{d_{i}}^{l_{i}}\left[\mathbf{v}_{c_{1}(i)} ; \mathbf{v}_{c_{2}(i)}\right]+\mathbf{b}_{d_{i}}^{l_{i}}\right)vi?=?(Wdi?li??[vc1?(i)?;vc2?(i)?]+bdi?li??)
- ?(?)\phi(\cdot)?(?)是非線性單元(ReLU)。
- 第lil_ili?層的可學(xué)習(xí)的參數(shù)是{Wxli,Wyli,Wzli,bxli,byli,bzli}\left\{W_{\mathrm{x}}^{l_{i}}, W_{\mathrm{y}}^{l_{i}}, W_{\mathrm{z}}^{l_{i}}, \mathbf{b}_{\mathrm{x}}^{l_{i}}, \mathbf{b}_{\mathrm{y}}^{l_{i}}, \mathbf{b}_{\mathrm{z}}^{l_{i}}\right\}{Wxli??,Wyli??,Wzli??,bxli??,byli??,bzli??}。
- 根據(jù)KD樹的劃分方向did_idi?,選取上面三組參數(shù)中的一組進(jìn)行計(jì)算。
- 每層的矩陣WWW和bbb的維度為m1,m2,…,mDm^{1}, m^{2}, \ldots, m^{D}m1,m2,…,mD。
- 第lll層的WxlW_{\mathrm{x}}^{l}Wxl?、WylW_{\mathrm{y}}^{l}Wyl?、WzlW_{\mathrm{z}}^{l}Wzl?維度是ml×2ml+1m^{l} \times 2 m^{l+1}ml×2ml+1(因?yàn)槊總€(gè)非葉節(jié)點(diǎn)有兩個(gè)子節(jié)點(diǎn)),而bxl\mathbf{b}_{\mathrm{x}}^{l}bxl?、byl\mathbf{b}_{\mathrm{y}}^{l}byl?、bzl\mathbf{b}_{\mathrm{z}}^{l}bzl?的維度是mlm^lml。
2.2.3、分類網(wǎng)絡(luò)結(jié)構(gòu)
- 對(duì)于分類網(wǎng)絡(luò)來(lái)說(shuō),只要讓根節(jié)點(diǎn)輸出的特征向量的維度數(shù)為類別數(shù),即可得到分類結(jié)果。
- v0(T)=W0v1(T)+b0\mathbf{v}_{0}(\mathcal{T})=W^{0} \mathbf{v}_{1}(\mathcal{T})+\mathbf{b}^{0}v0?(T)=W0v1?(T)+b0
- W0W^0W0和b0\mathbf{b}^{0}b0是最后的分類層的參數(shù)。
2.2.4、形狀檢索網(wǎng)絡(luò)結(jié)構(gòu)
- 與分類網(wǎng)絡(luò)類似,但是最后的根節(jié)點(diǎn)輸出的不是分類預(yù)測(cè)結(jié)果而是一個(gè)描述子(特征向量)。訓(xùn)練時(shí)加上度量學(xué)習(xí)的損失函數(shù):histogram loss,siamese loss,triplet loss等,來(lái)約束輸出的特征向量,使得同類形狀的特征向量之間距離更小,不同類的特征向量之間距離更大。
2.2.5、分割網(wǎng)絡(luò)結(jié)構(gòu)
- 在部件分割任務(wù)上,KD-Network參考了卷積神經(jīng)網(wǎng)絡(luò)對(duì)結(jié)構(gòu)進(jìn)行了更改,也使用了編碼器-解碼器(encoder-decoder)的結(jié)構(gòu),并加入了跳躍連接(skip connections)。
- 上圖是分割網(wǎng)絡(luò)的示意圖。
- 這里的分割網(wǎng)絡(luò)可以看成是將兩個(gè)KD樹拼接在了一起,左半邊與分類網(wǎng)絡(luò)和檢索網(wǎng)絡(luò)結(jié)構(gòu)一樣,是encoder;右半邊是decoder,也就是倒過(guò)來(lái)的KD樹,將根節(jié)點(diǎn)的特征傳播到所有的葉節(jié)點(diǎn)上。
- 設(shè)右半部分的KD樹的根節(jié)點(diǎn)為v1\mathbf{v}_{1}v1?,而節(jié)點(diǎn)iii上的特征向量為vi\mathbf{v}_{i}vi?。
- 特征傳播時(shí)的更新公式如下:
- v~c1(i)=?([W~dc1(i)liv~i+b~dc1(i)li;Slivc1(i)+tli])v~c2(i)=?([W~dc2(i)liv~i+b~dc2(i)li;Slivc2(i)+tli])\begin{aligned} \tilde{\mathbf{v}}_{c_{1}(i)} &=\phi\left(\left[\tilde{W}_{d_{c_{1}(i)}}^{l_{i}} \tilde{\mathbf{v}}_{i}+\tilde{\mathbf{b}}_{d_{c_{1}(i)}}^{l_{i}} ; S^{l_{i}} \mathbf{v}_{c_{1}(i)}+\mathbf{t}^{l_{i}}\right]\right) \\ \tilde{\mathbf{v}}_{c_{2}(i)} &=\phi\left(\left[\tilde{W}_{d_{c_{2}(i)}}^{l_{i}} \tilde{\mathbf{v}}_{i}+\tilde{\mathbf{b}}_{d_{c_{2}(i)}}^{l_{i}} ; S^{l_{i}} \mathbf{v}_{c_{2}(i)}+\mathbf{t}^{l_{i}}\right]\right) \end{aligned}v~c1?(i)?v~c2?(i)??=?([W~dc1?(i)?li??v~i?+b~dc1?(i)?li??;Sli?vc1?(i)?+tli?])=?([W~dc2?(i)?li??v~i?+b~dc2?(i)?li??;Sli?vc2?(i)?+tli?])?
- W~dc?(i)li\tilde{W}_{d_{c *(i)}^{l_{i}}}W~dc?(i)li???和b~dc,(i)li\tilde{\mathbf{b}}_{d_{c,(i)}}^{l_{i}}b~dc,(i)?li??分別是網(wǎng)絡(luò)中的權(quán)重和偏置參數(shù)。
- SliS^{l_{i}}Sli?和tlit^{l_{i}}tli?分別是跳躍連接上的權(quán)重和偏置參數(shù)。
- 整個(gè)網(wǎng)絡(luò)的結(jié)構(gòu)類似U-Net,在encoder-decoder結(jié)構(gòu)的基礎(chǔ)之上加入了shortcut,避免一些信息的損失。
2.2.6、實(shí)現(xiàn)細(xì)節(jié)
- 預(yù)處理,所有點(diǎn)云都事先歸一化到[?1;1]3[-1 ; 1]^{3}[?1;1]3。
2.3、實(shí)驗(yàn)
3、參考資料
總結(jié)
以上是生活随笔為你收集整理的论文笔记:KD-Net的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 论文笔记:PRIN: Pointwise
- 下一篇: 论文笔记:GVCNN: Group-Vi