要給公司做一個(gè)網(wǎng)站怎么做網(wǎng)站優(yōu)化的方式有哪些
激光點(diǎn)云配準(zhǔn)算法——Cofinet / GeoTransformer / MAC
GeoTransformer + MAC是當(dāng)前最SOTA的點(diǎn)云匹配算法,在之前我用總結(jié)過視覺特征匹配的相關(guān)算法
視覺SLAM總結(jié)——SuperPoint / SuperGlue
本篇博客對(duì)Cofinet、GeoTransformer、MAC三篇論文進(jìn)行簡單總結(jié)
1. Cofinet
Cofinet發(fā)表于2021年ICCV,原文為《CoFiNet: Reliable Coarse-to-fine Correspondences
for Robust Point Cloud Registration》,對(duì)這篇文章進(jìn)行總結(jié)是因?yàn)樗梢运阕鱃eoTransformer的前身,其首次提出Coarse-To-Fine的點(diǎn)云匹配框架
Cofinet算法框架如下圖所示:
算法主要又兩部分組成,Correspondence Proposal Block和Correspondence Refinement Block
1.1 Correspondence Proposal Block
Point Encoding:對(duì)于輸入的點(diǎn)云 P X ∈ R n × 3 , P Y ∈ R m × 3 P_X \in R^{n \times 3}, P_Y \in R^{m \times 3} PX?∈Rn×3,PY?∈Rm×3,使用KPConv進(jìn)行特征提取,KPConv的細(xì)節(jié)在下文介紹,輸出經(jīng)過下采樣的SuperPoint P X ′ ∈ R n ′ × 3 , P Y ′ ∈ R r n ′ × 3 P_X^{\prime} \in R^{n^{\prime} \times 3}, P_Y^{\prime} \in R^{r n^{\prime} \times 3} PX′?∈Rn′×3,PY′?∈Rrn′×3及其特征 F X ′ ∈ R n ′ × b , F Y ′ ∈ R m ′ × b F_X^{\prime} \in R^{n^{\prime} \times b}, F_Y^{\prime} \in R^{m^{\prime} \times b} FX′?∈Rn′×b,FY′?∈Rm′×b, 其中 b = 256 b=256 b=256: P X → P ′ X , F ′ X P Y → P ′ Y , F ′ Y \begin{aligned} & P_X \rightarrow P^{\prime}{ }_X, F^{\prime}{ }_X \\ & P_Y \rightarrow P^{\prime}{ }_Y, F^{\prime}{ }_Y \end{aligned} ?PX?→P′X?,F′X?PY?→P′Y?,F′Y??每個(gè)經(jīng)過下采樣得到SuperPoint表征了原輸入點(diǎn)云一個(gè)小Patch上的所有信息
Attentional Feature Aggregation:對(duì)于SuperPoint P X ′ ∈ R n ′ × 3 , P Y ′ ∈ R r n ′ × 3 P_X^{\prime} \in R^{n^{\prime} \times 3}, P_Y^{\prime} \in R^{r n^{\prime} \times 3} PX′?∈Rn′×3,PY′?∈Rrn′×3及其特征 F X ′ ∈ R n ′ × b , F Y ′ ∈ R m ′ × b F_X^{\prime} \in R^{n^{\prime} \times b}, F_Y^{\prime} \in R^{m^{\prime} \times b} FX′?∈Rn′×b,FY′?∈Rm′×b進(jìn)行Self-Attention和Cross-Attention操作,Self-Attention用于擴(kuò)大感受野,Cross-Attention用于信息交互: F ′ X → F ~ ′ X F ′ Y → F ~ ′ Y \begin{aligned} & F^{\prime}{ }_X \rightarrow \tilde{F}^{\prime}{ }_X \\ & F^{\prime}{ }_Y \rightarrow \tilde{F}^{\prime}{ }_Y \end{aligned} ?F′X?→F~′X?F′Y?→F~′Y??
Correspondence Proposal:將 F ~ X ′ , F ~ Y ′ \tilde{F}_X^{\prime}, \tilde{F}_Y^{\prime} F~X′?,F~Y′?使用Sinkhorn算法構(gòu)建Confidence Matrix,在訓(xùn)練階段選用128對(duì)真值匹配點(diǎn)構(gòu)建GT Confidence Matrix對(duì)Sinkhorn算法輸出的Confidence Matrix進(jìn)行監(jiān)督,數(shù)目是固定的。在測試階段Confidence大于0.2的匹配作為Coarse-Level的匹配結(jié)果,如果數(shù)目小于200則將閾值調(diào)整到0.01,輸出的數(shù)目是不固定的。最終輸出SuperPoint的Correspondence集合 C ′ = { ( P ′ X ( i ′ ) , P Y ′ ( j ′ ) ) } . C^{\prime}=\left\{\left(P^{\prime}{ }_X\left(i^{\prime}\right), P_Y^{\prime}\left(j^{\prime}\right)\right)\right\} . C′={(P′X?(i′),PY′?(j′))}.
其中Attention部分和Optimal Transport部分和SuperGlue中采用的算法基本一致,在此不再贅述,感興趣的同學(xué)可以參考視覺SLAM總結(jié)——SuperPoint / SuperGlue
1.2 Correspondence Refinement Block
Node Decoding:Decoder部分使用 F ~ X ′ , F ~ Y ′ \tilde{F}_X^{\prime}, \tilde{F}_Y^{\prime} F~X′?,F~Y′?作為輸入,同樣使用KPConv進(jìn)行維度恢復(fù),最終輸出Point Level的特征 F X ∈ R n × c , F Y ∈ R m × c F_X \in R^{n \times c}, F_Y \in R^{m \times c} FX?∈Rn×c,FY?∈Rm×c,其中 c = 32 c=32 c=32
Point-To-Node Grouping:這部分的目的是將SuperPoint的Correspondence擴(kuò)展為Point Level Correspondence,基于Point Level Correspondence再進(jìn)一步求解位姿。這里使用的KNN建立SuperPoint和Point的關(guān)聯(lián),經(jīng)過這個(gè)步驟后,每個(gè)SuperPoint P X ′ ( i ′ ) P_X^{\prime}\left(i^{\prime}\right) PX′?(i′)會(huì)被分配一定數(shù)量的Point,這些Point構(gòu)成了一個(gè)Patch G i ′ G_{i^{\prime}} Gi′?,每個(gè)Patch的點(diǎn)的數(shù)量如果超過64個(gè)就會(huì)進(jìn)行截?cái)唷?span id="vxwlu0yf4" class="katex--display"> G i ′ P = { p ∈ P X ∣ ∥ p ? P ′ X ( i ′ ) ∥ ≤ ∥ p ? P ′ X ( j ′ ) ∥ , ? j ′ ≠ i ′ } G_{i^{\prime}}^P=\left\{p \in P_X \mid\left\|p-P^{\prime}{ }_X\left(i^{\prime}\right)\right\| \leq\left\|p-P^{\prime}{ }_X\left(j^{\prime}\right)\right\|, \forall j^{\prime} \neq i^{\prime}\right\} Gi′P?={p∈PX?∣∥p?P′X?(i′)∥≤∥p?P′X?(j′)∥,?j′=i′} G i ′ F = { f ∈ F X ∣ f ? pwithp? ∈ G i ′ P } G_{i^{\prime}}^F=\left\{f \in F_X \mid f \leftrightarrow \text { pwithp } \in G_{i^{\prime}}^P\right\} Gi′F?={f∈FX?∣f??pwithp?∈Gi′P?}通過上述操作之后Patch和Patch之間在歐式空間和特征空間會(huì)分別構(gòu)成集合: C P = { ( G i ′ P , G j ′ P ) } C_P=\left\{\left(G_{i^{\prime}}^P, G_{j^{\prime}}^P\right)\right\} CP?={(Gi′P?,Gj′P?)} C F = { ( G i ′ F , G j ′ F ) } C_F=\left\{\left(G_{i^{\prime}}^F, G_{j^{\prime}}^F\right)\right\} CF?={(Gi′F?,Gj′F?)}
Density-Adaptive Matching:接著對(duì)每一個(gè)Patch進(jìn)行Point Level的Correspondence提取,Point Level級(jí)別無法直接使用Sinkhorn算法,原因是每個(gè)Patch中的存在的點(diǎn)的數(shù)量是不一致的,當(dāng)兩個(gè)點(diǎn)數(shù)不一致的Patch構(gòu)建Similarity Matrix時(shí)點(diǎn)數(shù)不足的位置使用 ? ∞ -\infty ?∞進(jìn)行填充,然后再使用Sinkhorn算法就可以消除點(diǎn)數(shù)不一致給模型帶來的影響。
在獲得Point Level的Correspondence后,仍然使用RANSAC方法進(jìn)行旋轉(zhuǎn)平移求解。
1.3 Loss
Coarse Scale損失函數(shù)如下: L c = ? ∑ i ′ , j ′ W ′ ( i ′ , j ′ ) log ? ( S ′ ( i ′ , j ′ ) ) ∑ i ′ , j ′ W ′ ( i ′ , j ′ ) . \mathcal{L}_c=\frac{-\sum_{i^{\prime}, j^{\prime}} \mathbf{W}^{\prime}\left(i^{\prime}, j^{\prime}\right) \log \left(\mathbf{S}^{\prime}\left(i^{\prime}, j^{\prime}\right)\right)}{\sum_{i^{\prime}, j^{\prime}} \mathbf{W}^{\prime}\left(i^{\prime}, j^{\prime}\right)} . Lc?=∑i′,j′?W′(i′,j′)?∑i′,j′?W′(i′,j′)log(S′(i′,j′))?.其中 log ? ( S ′ ( i ′ , j ′ ) ) \log \left(\mathbf{S}^{\prime}\left(i^{\prime}, j^{\prime}\right)\right) log(S′(i′,j′))為Sinkhorn生成的Confidence Matrix和Ground Truth的Confidence Matrix的交叉熵?fù)p失, W ′ ( i ′ , j ′ ) \mathbf{W}^{\prime}\left(i^{\prime}, j^{\prime}\right) W′(i′,j′)為加權(quán)系數(shù),定義如下: W ′ ( i ′ , j ′ ) = { min ? ( r ( i ′ , j ′ ) , r ( j ′ , i ′ ) ) , i ′ ≤ n ′ ∧ j ′ ≤ m ′ , 1 ? r ( i ′ ) , i ′ ≤ n ′ ∧ j ′ = m ′ + 1 , 1 ? r ( j ′ ) , i ′ = n ′ + 1 ∧ j ′ ≤ m ′ , 0 , otherwise.? \mathbf{W}^{\prime}\left(i^{\prime}, j^{\prime}\right)= \begin{cases}\min \left(r\left(i^{\prime}, j^{\prime}\right), r\left(j^{\prime}, i^{\prime}\right)\right), & i^{\prime} \leq n^{\prime} \wedge j^{\prime} \leq m^{\prime}, \\ 1-r\left(i^{\prime}\right), & i^{\prime} \leq n^{\prime} \wedge j^{\prime}=m^{\prime}+1, \\ 1-r\left(j^{\prime}\right), & i^{\prime}=n^{\prime}+1 \wedge j^{\prime} \leq m^{\prime}, \\ 0, & \text { otherwise. }\end{cases} W′(i′,j′)=? ? ??min(r(i′,j′),r(j′,i′)),1?r(i′),1?r(j′),0,?i′≤n′∧j′≤m′,i′≤n′∧j′=m′+1,i′=n′+1∧j′≤m′,?otherwise.??其中 r ( i ′ ) r\left(i^{\prime}\right) r(i′)為單個(gè)Patch中Overlap點(diǎn)所占比例,定義如下: r ( i ′ ) = ∣ { p ∈ G i ′ P ∣ ? q ∈ P Y s.t.? ∥ T  ̄ Y X ( p ) ? q ∥ < τ p } ∣ ∣ G i ′ P ∣ , r\left(i^{\prime}\right)=\frac{\mid\left\{\mathbf{p} \in \mathbf{G}_{i^{\prime}}^{\mathbf{P}} \mid \exists \mathbf{q} \in \mathbf{P}_{\mathbf{Y}} \text { s.t. }\left\|\overline{\mathbf{T}}_{\mathbf{Y}}^{\mathbf{X}}(\mathbf{p})-\mathbf{q}\right\|<\tau_p\right\} \mid}{\left|\mathbf{G}_{i^{\prime}}^{\mathbf{P}}\right|}, r(i′)= ?Gi′P? ?∣{p∈Gi′P?∣?q∈PY??s.t.? ?TYX?(p)?q ?<τp?}∣?, r ( i ′ , j ′ ) r\left(i^{\prime}, j^{\prime}\right) r(i′,j′)為兩個(gè)Patch相互Overlap點(diǎn)所占比例,定義如下: r ( i ′ , j ′ ) = ∣ { p ∈ G i ′ P ∣ ? q ∈ G j ′ P s.t.? ∥ T  ̄ Y X ( p ) ? q ∥ < τ p } ∣ ∣ G i ′ P ∣ r\left(i^{\prime}, j^{\prime}\right)=\frac{\mid\left\{\mathbf{p} \in \mathbf{G}_{i^{\prime}}^{\mathbf{P}} \mid \exists \mathbf{q} \in \mathbf{G}_{j^{\prime}}^{\mathbf{P}} \text { s.t. }\left\|\overline{\mathbf{T}}_{\mathbf{Y}}^{\mathbf{X}}(\mathbf{p})-\mathbf{q}\right\|<\tau_p\right\} \mid}{\left|\mathbf{G}_{i^{\prime}}^{\mathbf{P}}\right|} r(i′,j′)= ?Gi′P? ?∣{p∈Gi′P?∣?q∈Gj′P??s.t.? ?TYX?(p)?q ?<τp?}∣?這里其實(shí)很好理解,當(dāng)Patch中被覆蓋的點(diǎn)的占比越高,說明這個(gè)Patch被匹配的可能性越大,權(quán)重也就應(yīng)該越高。
Finer Scale的損失函數(shù)如下: L f = ? ∑ l , i , j B ~ ( l ) ( i , j ) log ? ( S ~ ( l ) ( i , j ) ) ∑ l , i , j B ~ ( l ) ( i , j ) \mathcal{L}_f=\frac{-\sum_{l, i, j} \widetilde{\mathbf{B}}^{(l)}(i, j) \log \left(\widetilde{\mathbf{S}}^{(l)}(i, j)\right)}{\sum_{l, i, j} \widetilde{\mathbf{B}}^{(l)}(i, j)} Lf?=∑l,i,j?B (l)(i,j)?∑l,i,j?B (l)(i,j)log(S (l)(i,j))?其中交叉熵函數(shù)的定義是相同的,對(duì)于加權(quán)系數(shù)的定義如下: B ~ ( l ) ( i , j ) = { 1 , ∥ T ~ Y X ( G ~ i ′ P ( i ) ) ? G ~ j ′ P ( j ) ∥ < τ p , 0 , otherwise? , ? i , ? j ∈ [ 1 , k ] \widetilde{\mathbf{B}}^{(l)}(i, j)=\left\{\begin{array}{ll} 1, & \left\|\widetilde{\mathbf{T}}_{\mathbf{Y}}^{\mathbf{X}}\left(\widetilde{\mathbf{G}}_{i^{\prime}}^{\mathbf{P}}(i)\right)-\widetilde{\mathbf{G}}_{j^{\prime}}^{\mathbf{P}}(j)\right\|<\tau_p, \\ 0, & \text { otherwise }, \end{array} \quad \forall i, \forall j \in[1, k]\right. B (l)(i,j)={1,0,? ?T YX?(G i′P?(i))?G j′P?(j) ?<τp?,?otherwise?,??i,?j∈[1,k] B ~ ( l ) ( i , k + 1 ) = max ? ( 0 , 1 ? ∑ j = 1 k B ~ ( l ) ( i , j ) ) , ? i ∈ [ 1 , k ] \widetilde{\mathbf{B}}^{(l)}(i, k+1)=\max \left(0,1-\sum_{j=1}^k \widetilde{\mathbf{B}}^{(l)}(i, j)\right), \quad \forall i \in[1, k] B (l)(i,k+1)=max(0,1?j=1∑k?B (l)(i,j)),?i∈[1,k] B ~ ( l ) ( k + 1 , j ) = max ? ( 0 , 1 ? ∑ i = 1 k B ~ ( l ) ( i , j ) ) , ? j ∈ [ 1 , k ] \widetilde{\mathbf{B}}^{(l)}(k+1, j)=\max \left(0,1-\sum_{i=1}^k \widetilde{\mathbf{B}}^{(l)}(i, j)\right), \quad \forall j \in[1, k] B (l)(k+1,j)=max(0,1?i=1∑k?B (l)(i,j)),?j∈[1,k]
最終的損失函數(shù)定義為: L = L c + λ L f L=L_c+\lambda L_f L=Lc?+λLf?
1.4 KPConv
KPConv是PointNet作者2019年提出來的一篇文章KPConv: Flexible and Deformable Convolution for Point Clouds》,因?yàn)镃ofiNet惡化GeoTransformer中都有用到這個(gè)模塊,因此在此對(duì)其進(jìn)行一個(gè)簡單總結(jié)
KPConv全稱為Kernel Point Convolution,是將Kernel Point當(dāng)成每個(gè)點(diǎn)云特征的參照物,去計(jì)算這些與這些Kernel Point的權(quán)重來更新每個(gè)點(diǎn)云特征。首先定義點(diǎn)云上某個(gè)點(diǎn) x i ∈ P ∈ R N × 3 x_i \in P \in R^{N \times 3} xi?∈P∈RN×3和對(duì)應(yīng)的特征 f i ∈ F ∈ R N × D f_i \in F \in R^{N \times D} fi?∈F∈RN×D,然后定義點(diǎn)云特征的卷積可以寫成如下形式: ( F ? g ) ( x ) = ∑ x i ∈ N x g ( x i ? x ) f i (F * g)(x)=\sum_{x_i \in N_x} g\left(x_i-x\right) f_i (F?g)(x)=xi?∈Nx?∑?g(xi??x)fi?其中 g g g為卷積核函數(shù), N x N_x Nx?代表某個(gè)局部鄰域 N x = { x i ∈ P ∥ ∣ x i ? x ∥ ≤ r } N_x=\left\{x_i \in P\left\|\mid x_i-x\right\| \leq r\right\} Nx?={xi?∈P∥∣xi??x∥≤r},通常我們會(huì)對(duì)點(diǎn)云進(jìn)行去中心化,將每一個(gè)點(diǎn) x i x_i xi?通過去中心化 y i = x i ? x y_i=x_i-x yi?=xi??x轉(zhuǎn)變成 y i y_i yi?,因此局部鄰域 B r 3 = { y ∈ R 3 ∥ ∥ y ∥ ≤ r } B_r^3=\left\{y \in R^3\|\| y \| \leq r\right\} Br3?={y∈R3∥∥y∥≤r},這樣使得局部鄰域中的計(jì)算具備平移不變形。
在KPConv中,作者定義了一組Kernel Points { x k ^ ∣ k < K } ∈ B r 3 \left\{\hat{x_k} \mid k<K\right\} \in B_r^3 {xk?^?∣k<K}∈Br3?和對(duì)應(yīng)的權(quán)重 { W k ∣ k < K } ∈ R D in? × D out? \left\{W_k \mid k<K\right\} \in R^{D_{\text {in }} \times D_{\text {out }}} {Wk?∣k<K}∈RDin??×Dout??,將每個(gè)點(diǎn)周圍的Kernel Points作為其參照物,去進(jìn)行特征的聚合,基于Kernel Points的卷積核函數(shù)如下: g ( y i ) = ∑ k < K h ( y i , x k ^ ) W k g\left(y_i\right)=\sum_{k<K} h\left(y_i, \hat{x_k}\right) W_k g(yi?)=k<K∑?h(yi?,xk?^?)Wk?其中權(quán)重系數(shù) h ( y i , x k ^ ) h\left(y_i, \hat{x_k}\right) h(yi?,xk?^?)為: h ( y i , x k ^ ) = max ? ( 0 , 1 ∥ y i ? x k ^ ∥ σ ) h\left(y_i, \hat{x_k}\right)=\max \left(0,1 \frac{\left\|y_i-\hat{x_k}\right\|}{\sigma}\right) h(yi?,xk?^?)=max(0,1σ∥yi??xk?^?∥?)即點(diǎn)和Kernel Points越接近時(shí)權(quán)重系數(shù)越大。該操作的示意圖如下:
對(duì)比圖像的卷積操作如下:
其區(qū)別主要在于,在圖像的卷積操作中,因?yàn)橄袼匚恢煤途矸e核的位置都是離散的,可以很容易地找到一一對(duì)應(yīng)關(guān)系,而在點(diǎn)云的卷積操作中,點(diǎn)云點(diǎn)位置和卷積核的位置可以看做是連續(xù)的,無法完美地找到一一對(duì)應(yīng)關(guān)系,因此基于權(quán)重系數(shù) h ( y i , x k ^ ) h\left(y_i, \hat{x_k}\right) h(yi?,xk?^?)的求和來表達(dá)這種關(guān)系。
2. GeoTransformer
GeoTransformer發(fā)表于2022年,在這之前的大部分工作
- 采用的是先檢測兩個(gè)點(diǎn)云中的Super Point再對(duì)Super Point進(jìn)行匹配的方式,如上CoFiNet所示,當(dāng)兩個(gè)點(diǎn)云重疊度很低時(shí),找到兩個(gè)可匹配的Super Point是困難的,這使得后續(xù)的其他操作的精度難以得到保證。
- Super Point描述的是點(diǎn)云的全局信息,為了更好地提取全局信息很多方法會(huì)使用Transformer進(jìn)行點(diǎn)云全局特征的學(xué)習(xí),但是Transformer會(huì)天然地忽略點(diǎn)云的幾何信息,盡管可以使用點(diǎn)云坐標(biāo)作為位置編碼,但是基于點(diǎn)云坐標(biāo)的位置編碼都是Transformation-Invariant,也不是很不合理
針對(duì)這兩點(diǎn),GeoTransformer通過Super Point中Pair-Wise的距離信息和Triplet-Wise的角度信息進(jìn)行編碼并嵌入到Transformer中,這種顯示地幾何信息編碼使得在低重疊度的點(diǎn)云匹配中具備較高的魯棒性。也正是因?yàn)槠ヅ涞聂敯粜钥梢允沟肎eoTransformer的后處理不依賴RANSC進(jìn)而使得整個(gè)算法變得很快。
GeoTransformer網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示:
算法整體分為4個(gè)部分,首先使用使用KPConv的Backbone進(jìn)行Super Point提取,然后使用Transformer對(duì)Super Point進(jìn)行匹配,進(jìn)而將Super Point擴(kuò)展為Patch再Patch上進(jìn)行Point級(jí)別的匹配,最后使用Local-to-Global的配準(zhǔn)方式獲得最后的Transformation。
2.1 Superpoint Sampling and Feature Extraction
GeoTransformer同樣使用KP Conv進(jìn)行Super Point及其特征的提取,KP Conv的第一層輸出為用于稠密點(diǎn)云匹配的Point及其特征,每個(gè)Point會(huì)根據(jù)距離將分配給各個(gè)Super Point構(gòu)成Patch G i P = { p ~ ∈ P ~ ∣ i = argmin ? j ( ∥ p ~ ? p ^ j ∥ 2 ) , p ^ j ∈ P ^ } \mathcal{G}_i^{\mathcal{P}}=\left\{\tilde{\mathbf{p}} \in \tilde{\mathcal{P}} \mid i=\operatorname{argmin}_j\left(\left\|\tilde{\mathbf{p}}-\hat{\mathbf{p}}_j\right\|_2\right), \hat{\mathbf{p}}_j \in \hat{\mathcal{P}}\right\} GiP?={p~?∈P~∣i=argminj?(∥p~??p^?j?∥2?),p^?j?∈P^}其中 P ^ \hat{\mathcal{P}} P^ 和 Q ^ \hat{\mathcal{Q}} Q^?為Super Point點(diǎn)云, P ~ \tilde{\mathcal{P}} P~ 和 Q ~ \tilde{\mathcal{Q}} Q~?稠密幀點(diǎn)云.
2.2 Superpoint Matching Module
GeoTransformer同樣使用Self-Attention和Cross-Attention對(duì)Super Point的特征進(jìn)行學(xué)習(xí),但是與CoFiNet不同的是,GeoTransformer將幾何結(jié)構(gòu)顯示地編碼到Super Point的特征中
Geometric Self-Attention:對(duì)于Super Point點(diǎn)云· P ^ \hat{\mathcal{P}} P^ 和 Q ^ \hat{\mathcal{Q}} Q^?我們執(zhí)行如下相同的操作,定義Geometric Self-Attention輸入的特征矩陣為 X ∈ R ∣ P ^ ∣ × d i \mathbf{X} \in \mathbb{R}^{|\hat{\mathcal{P}}| \times d_i} X∈R∣P^∣×di?,輸出的特征矩陣為 Z ∈ R ∣ P ^ ∣ × d t \mathbf{Z} \in \mathbb{R}^{|\hat{\mathcal{P}}| \times d_t} Z∈R∣P^∣×dt?,Self Attention中的權(quán)重系數(shù) e i , j e_{i, j} ei,j?的計(jì)算公式如下 e i , j = ( x i W Q ) ( x j w K + r i , j w R ) T t t . e_{i, j}=\frac{\left(\mathbf{x}_i \mathbf{W}^Q\right)\left(\mathbf{x}_j \mathbf{w}^K+\mathbf{r}_{i, j} \mathbf{w}^R\right)^T}{\sqrt{t_t}} . ei,j?=tt??(xi?WQ)(xj?wK+ri,j?wR)T?.其中 r i , j ∈ R d t \mathbf{r}_{i, j} \in \mathbb{R}^{d_t} ri,j?∈Rdt?為Geometric Structure Embedding, W Q , W K , W V , W R ∈ R d t × d t \mathbf{W}^Q, \mathbf{W}^K, \mathbf{W}^V, \mathbf{W}^R \in \mathbb{R}^{d_t \times d_t} WQ,WK,WV,WR∈Rdt?×dt?為權(quán)重矩陣,下面我們來看看Geometric Structure Embedding是如何定義的
Geometric Structure Embedding包括Pair-Wise Distance Embedding和Triplet-Wise Embedding兩個(gè)部分,給定兩個(gè)Super Point p ^ i , p ^ j ∈ P ^ \hat{\mathbf{p}}_i, \hat{\mathbf{p}}_j \in \hat{\mathcal{P}} p^?i?,p^?j?∈P^
Pair-Wise Distance Embedding定義為 { r i , j , 2 k D = sin ? ( d i , j / σ d 1000 0 2 k / d t ) r i , j , 2 k + 1 D = cos ? ( d i , j / σ d 1000 0 2 k / d t ) \left\{\begin{array}{c} r_{i, j, 2 k}^D=\sin \left(\frac{d_{i, j} / \sigma_d}{10000^{2 k / d_t}}\right) \\ r_{i, j, 2 k+1}^D=\cos \left(\frac{d_{i, j} / \sigma_d}{10000^{2 k / d_t}}\right) \end{array}\right. ? ? ??ri,j,2kD?=sin(100002k/dt?di,j?/σd??)ri,j,2k+1D?=cos(100002k/dt?di,j?/σd??)?其中 d i , j = ∥ p ^ i ? p ^ j ∥ 2 d_{i, j}=\left\|\hat{\mathbf{p}}_i-\hat{\mathbf{p}}_j\right\|_2 di,j?=∥p^?i??p^?j?∥2?, σ d \sigma_d σd?為溫度系數(shù)
Triplet-Wise Angular Embedding的定義為 , { r i , j , k , 2 x A = sin ? ( α i , j k / σ a 1000 0 2 x / d t ) r i , j , k , 2 x + 1 A = cos ? ( α i , j k / σ a 1000 0 2 x / d t ) , , \left\{\begin{array}{rl} r_{i, j, k, 2 x}^A & =\sin \left(\frac{\alpha_{i, j}^k / \sigma_a}{10000^{2 x / d_t}}\right) \\ r_{i, j, k, 2 x+1}^A & =\cos \left(\frac{\alpha_{i, j}^k / \sigma_a}{10000^{2 x / d_t}}\right) \end{array},\right. ,? ? ??ri,j,k,2xA?ri,j,k,2x+1A??=sin(100002x/dt?αi,jk?/σa??)=cos(100002x/dt?αi,jk?/σa??)?,其中 σ a \sigma_a σa?為溫度系數(shù), α i , j k \alpha_{i, j}^k αi,jk?計(jì)算方式為獲取Super Point p ^ i \hat{\mathbf{p}}_i p^?i?的 K K K鄰域,對(duì)于 K K K鄰域里的每一個(gè)Super Point計(jì)算 α i , j x = ∠ ( Δ x , i , Δ j , i ) \alpha_{i, j}^x=\angle\left(\Delta_{x, i}, \Delta_{j, i}\right) αi,jx?=∠(Δx,i?,Δj,i?),其中 Δ i , j : = p ^ i ? p ^ j \Delta_{i, j}:=\hat{\mathbf{p}}_i-\hat{\mathbf{p}}_j Δi,j?:=p^?i??p^?j?,如下圖所示:
最后Geometric Structure Embedding計(jì)算如下: r i , j = r i , j D W D + max ? x { r i , j , x A W A } \mathbf{r}_{i, j}=\mathbf{r}_{i, j}^D \mathbf{W}^D+\max _x\left\{\mathbf{r}_{i, j, x}^A \mathbf{W}^A\right\} ri,j?=ri,jD?WD+xmax?{ri,j,xA?WA}整個(gè)計(jì)算過程流程圖如下圖所示:
Feature-Bsed Cross-Attention,Cross-Attention部分和正常的Cross-Attention相同的,公式如下: z i P = ∑ j = 1 ∣ Q ∣ a i , j ( x j Q W V ) \mathbf{z}_i^{\mathcal{P}}=\sum_{j=1}^{|\mathcal{Q}|} a_{i, j}\left(\mathbf{x}_j^{\mathcal{Q}} \mathbf{W}^V\right) ziP?=j=1∑∣Q∣?ai,j?(xjQ?WV) e i , j = ( x i P W Q ) ( x j Q W K ) T d t . e_{i, j}=\frac{\left(\mathbf{x}_i^{\mathcal{P}} \mathbf{W}^Q\right)\left(\mathbf{x}_j^{\mathcal{Q}} \mathbf{W}^K\right)^T}{\sqrt{d_t}} . ei,j?=dt??(xiP?WQ)(xjQ?WK)T?.其中 X P , X Q \mathbf{X}^{\mathcal{P}}, \mathbf{X}^{\mathcal{Q}} XP,XQ為Self-Attention輸出特征矩陣。
Superpoint Matching,當(dāng)Super Point的特征經(jīng)過多層Self-Attention和Cross-Attention后輸出的特征矩陣為 H ^ P \hat{\mathbf{H}}^{\mathcal{P}} H^P 和 H ^ Q \hat{\mathbf{H}}^{\mathcal{Q}} H^Q,首先將 H ^ P \hat{\mathbf{H}}^{\mathcal{P}} H^P 和 H ^ Q \hat{\mathbf{H}}^{\mathcal{Q}} H^Q進(jìn)行歸一化,然后計(jì)算Gaussian Correlation Matrix S ∈ R ∣ P ^ ∣ × ∣ Q ^ ∣ \mathbf{S} \in \mathbb{R}^{|\hat{\mathcal{P}}| \times|\hat{\mathbf{Q}}|} S∈R∣P^∣×∣Q^?∣ s i , j = exp ? ( ? ∥ h ^ i P ? h ^ j Q ∥ 2 2 ) s_{i, j}=\exp \left(-\left\|\hat{\mathbf{h}}_i^{\mathcal{P}}-\hat{\mathbf{h}}_j^{\mathcal{Q}}\right\|_2^2\right) si,j?=exp(? ?h^iP??h^jQ? ?22?)為了進(jìn)一步抑制模糊匹配,我們對(duì)Gaussian Correlation Matrix進(jìn)行雙重歸一化操作: s ˉ i , j = s i , j ∑ k = 1 ∣ Q ^ ∣ s i , k ? s i , j ∑ k = 1 ∣ P ^ ∣ s k , j \bar{s}_{i, j}=\frac{s_{i, j}}{\sum_{k=1}^{|\hat{\mathcal{Q}}|} s_{i, k}} \cdot \frac{s_{i, j}}{\sum_{k=1}^{|\hat{\mathcal{P}}|} s_{k, j}} sˉi,j?=∑k=1∣Q^?∣?si,k?si,j???∑k=1∣P^∣?sk,j?si,j??這種抑制可以有效消除錯(cuò)誤匹配。最后我們從Gaussian Correlation Matrix S  ̄ \overline{\mathbf{S}} S 中選擇最大的 N c N_c Nc?個(gè)對(duì)作為Super Point的匹配結(jié)果 C ^ = { ( p ^ x i , q ^ y i ) ∣ ( x i , y i ) ∈ topk ? x , y ( s ˉ x , y ) } \hat{\mathcal{C}}=\left\{\left(\hat{\mathbf{p}}_{x_i}, \hat{\mathbf{q}}_{y_i}\right) \mid\left(x_i, y_i\right) \in \operatorname{topk}_{x, y}\left(\bar{s}_{x, y}\right)\right\} C^={(p^?xi??,q^?yi??)∣(xi?,yi?)∈topkx,y?(sˉx,y?)}由于GeoTransformer的強(qiáng)大編碼能力,這一步獲得的匹配結(jié)果準(zhǔn)確性是很高的,因此這一步不需要RANSAC再做進(jìn)一步外點(diǎn)去除。
2.3 Point Matching Module
由于Super Point的匹配已經(jīng)解決了全局的不確定性,在Point級(jí)別僅使用通過KPConv Backbone提供的局部特征即可。首先使用一對(duì)建立匹配的Super Point關(guān)聯(lián)Patch G x i P \mathcal{G}_{x_i}^{\mathcal{P}} Gxi?P?和Patch G y i Q \mathcal{G}_{y_i}^{\mathcal{Q}} Gyi?Q?點(diǎn)特征構(gòu)建損失矩陣 C i ∈ R n i × m i \mathbf{C}_i \in \mathbb{R}^{n_i \times m_i} Ci?∈Rni?×mi? C i = F x i P ( F y i Q ) T / d ~ , \mathbf{C}_i=\mathbf{F}_{x_i}^{\mathcal{P}}\left(\mathbf{F}_{y_i}^{\mathcal{Q}}\right)^T / \sqrt{\tildevxwlu0yf4}, Ci?=Fxi?P?(Fyi?Q?)T/d~?,其中 n i = ∣ G x i P ∣ , m i = ∣ G y i Q ∣ n_i=\left|\mathcal{G}_{x_i}^{\mathcal{P}}\right|, m_i=\left|\mathcal{G}_{y_i}^{\mathcal{Q}}\right| ni?= ?Gxi?P? ?,mi?= ?Gyi?Q? ?分別為兩個(gè)Patch中Point的數(shù)量,然后添加新的一列和一行作為Dustbin,最后使用Sinkhorn Algorithm來計(jì)算最后的匹配關(guān)系,取匹配得分的TopK作為最后Point級(jí)別的匹配結(jié)果。
以上是針對(duì)一對(duì)Super Point提取的Point級(jí)別的匹配,所有Super Point提取的結(jié)果求并集就得到最后全局的Point的匹配結(jié)果 C = ? i = 1 N c C i \mathcal{C}=\bigcup_{i=1}^{N_c} \mathcal{C}_i C=?i=1Nc??Ci?.
2.4 RANSAC-free Local-to-Global Registration
LGR的大致步驟是根據(jù)每個(gè)Super Point對(duì)對(duì)應(yīng)的Patch中的Point的匹配關(guān)系都通過SVD計(jì)算一個(gè)變換矩陣 T i = { R i , t i } \mathbf{T}_i=\left\{\mathbf{R}_i, \mathbf{t}_i\right\} Ti?={Ri?,ti?}: R i , t i = min ? R , t ∑ ( p ~ x j q ~ y j ) ∈ C i w j i ∥ R ? p ~ x j + t ? q ~ y j ∥ 2 2 \mathbf{R}_i, \mathbf{t}_i=\min _{\mathbf{R}, \mathbf{t}} \sum_{\left(\tilde{\mathbf{p}}_{x_j} \tilde{\mathbf{q}}_{y_j}\right) \in \mathcal{C}_i} w_j^i\left\|\mathbf{R} \cdot \tilde{\mathbf{p}}_{x_j}+\mathbf{t}-\tilde{\mathbf{q}}_{y_j}\right\|_2^2 Ri?,ti?=R,tmin?(p~?xj??q~?yj??)∈Ci?∑?wji? ?R?p~?xj??+t?q~?yj?? ?22?然后使用這些變換矩陣在全局的Point的匹配結(jié)果中計(jì)算內(nèi)點(diǎn): R , t = max ? R i , t i ∑ ( p ~ x j , q ~ y j ) ∈ C ? ∥ R i ? p ~ x j + t i ? q ~ y j ∥ 2 2 < τ a ? \mathbf{R}, \mathbf{t}=\max _{\mathbf{R}_i, \mathbf{t}_i} \sum_{\left(\tilde{\mathbf{p}}_{x_j}, \tilde{\mathbf{q}}_{y_j}\right) \in \mathcal{C}} \llbracket\left\|\mathbf{R}_i \cdot \tilde{\mathbf{p}}_{x_j}+\mathbf{t}_i-\tilde{\mathbf{q}}_{y_j}\right\|_2^2<\tau_a \rrbracket R,t=Ri?,ti?max?(p~?xj??,q~?yj??)∈C∑?[[ ?Ri??p~?xj??+ti??q~?yj?? ?22?<τa?]]將內(nèi)點(diǎn)數(shù)量最多的變換保留的內(nèi)點(diǎn)使用上述SVD計(jì)算公式進(jìn)行迭代求解獲得最終的匹配結(jié)果。
之所以可以實(shí)現(xiàn)這樣一個(gè)Local-to-Global的配準(zhǔn)過程是因?yàn)樽髡哒J(rèn)為Super Point的匹配結(jié)果準(zhǔn)確率是非常高的,這樣可以節(jié)省RANCAC帶來的耗時(shí),但是在實(shí)際應(yīng)用過程中如果因?yàn)榫W(wǎng)絡(luò)訓(xùn)練不充分導(dǎo)致部分場景Super Point的匹配結(jié)果都不好,那算法也會(huì)整體失效,因此這部分是可以做進(jìn)一步優(yōu)化的地方,下面介紹的MAC在這部分就可以發(fā)揮作用
2.5 Loss Functions
損失函數(shù)主要由兩部分構(gòu)成,分別是用于計(jì)算Super Point匹配損失的Overlap-aware Circle Loss L o c \mathcal{L}_{o c} Loc?和用于計(jì)算Point匹配損失的Point Matching Loss L p \mathcal{L}_p Lp?
Overlap-aware Circle Loss,由于Super Point的匹配真值是根據(jù)Patch Overlap的結(jié)果確定的,因此很有可能出現(xiàn)一對(duì)多的匹配結(jié)果,如果簡單當(dāng)做一個(gè)多標(biāo)簽分類任務(wù)使用Cross Entropy Loss進(jìn)行處理會(huì)使得高置信度的正樣本被抑制,使得最后預(yù)測的Super Point匹配關(guān)系不可靠。
為了解決上述問題,作者使用了Overlap-aware Circle Loss,即如果兩個(gè)Super Point的Patch Overlap比例超過10%,那么就作為正樣本,如果不存在Patch Overlap則作為負(fù)樣本。對(duì)于點(diǎn)云 P \mathcal{P} P中的Patch G i P ∈ A \mathcal{G}_i^{\mathcal{P}} \in \mathcal{A} GiP?∈A,我們將其對(duì)應(yīng)點(diǎn)云 Q \mathcal{Q} Q中的正樣本定義為 ε p i \varepsilon_p^i εpi?,負(fù)樣本定義為 ε n i \varepsilon_n^i εni?,則其損失函數(shù)為: L o c P = 1 ∣ A ∣ ∑ G i P ∈ A log ? [ 1 + ∑ G j Q ∈ ε p i e λ i j β p i , j ( d i j ? Δ p ) ∑ G k Q ∈ ε n i e β n i , k ( Δ n ? d i k ) ] , \mathcal{L}_{o c}^{\mathcal{P}}=\frac{1}{| \mathcal{A}|} \sum_{\mathcal{G}_i^{\mathcal{P}} \in \mathcal{A}} \log \left[1+\sum_{\mathcal{G}_j^{\mathcal{Q}} \in \varepsilon_p^i} e^{\lambda_i^j \beta_p^{i, j}\left(d_i^j-\Delta_p\right)} \sum_{\mathcal{G}_k^Q \in \varepsilon_n^i} e^{\beta_n^{i, k}\left(\Delta_n-d_i^k\right)}\right], LocP?=∣A∣1?GiP?∈A∑?log ?1+GjQ?∈εpi?∑?eλij?βpi,j?(dij??Δp?)GkQ?∈εni?∑?eβni,k?(Δn??dik?) ?,其中, d i j = ∥ h ^ i P ? h ^ j Q ∥ 2 d_i^j=\left\|\hat{\mathbf{h}}_i^{\mathcal{P}}-\hat{\mathbf{h}}_j^{\mathcal{Q}}\right\|_2 dij?= ?h^iP??h^jQ? ?2?為特征空間的距離, λ i j = ( o i j ) 1 2 \lambda_i^j=\left(o_i^j\right)^{\frac{1}{2}} λij?=(oij?)21?代表 G i P \mathcal{G}_i^{\mathcal{P}} GiP?和 G i Q \mathcal{G}_i^{\mathcal{Q}} GiQ?之間的overlap比例, β p i , j = γ ( d i j ? Δ p ) \beta_p^{i, j}=\gamma\left(d_i^j-\Delta_p\right) βpi,j?=γ(dij??Δp?)和 β n i , k = γ ( Δ n ? d i k ) \beta_n^{i, k}=\gamma\left(\Delta_n-d_i^k\right) βni,k?=γ(Δn??dik?)分別為正樣本和負(fù)樣本的權(quán)重, Δ p = 0.1 \Delta_p=0.1 Δp?=0.1 和 Δ n = 1.4 \Delta_n=1.4 Δn?=1.4為超參數(shù)。相同的損失函數(shù) L o c Q \mathcal{L}_{o c}^{\mathcal{Q}} LocQ?在點(diǎn)云 Q \mathcal{Q} Q上也計(jì)算一邊,最后的總損失為 L o c = ( L o c P + L o c Q ) / 2 \mathcal{L}_{o c}=\left(\mathcal{L}_{o c}^{\mathcal{P}}+\mathcal{L}_{o c}^{\mathcal{Q}}\right) / 2 Loc?=(LocP?+LocQ?)/2
Point Matching Loss,在訓(xùn)練階段隨機(jī)采樣 N g N_g Ng?對(duì)Super Point匹配真值,對(duì)于每個(gè)Super Point的匹配 C ^ i ? \hat{\mathcal{C}}_i^* C^i??會(huì)在半徑 τ \tau τ內(nèi)提取一系列真值點(diǎn)的匹配 M i \mathcal{M}_i Mi?,對(duì)于Patch內(nèi)沒有匹配上的點(diǎn)記為 I i \mathcal{I}_i Ii? 和 J i \mathcal{J}_i Ji?,那么最后的損失函數(shù)為: L p , i = ? ∑ ( x , y ) ∈ M i log ? z ˉ x , y i ? ∑ x ∈ I i log ? z ˉ x , m i + 1 i ? ∑ y ∈ J i log ? z ˉ n i + 1 , y i , \mathcal{L}_{p, i}=-\sum_{(x, y) \in \mathcal{M}_i} \log \bar{z}_{x, y}^i-\sum_{x \in \mathcal{I}_i} \log \bar{z}_{x, m_i+1}^i-\sum_{y \in \mathcal{J}_i} \log \bar{z}_{n_i+1, y}^i, Lp,i?=?(x,y)∈Mi?∑?logzˉx,yi??x∈Ii?∑?logzˉx,mi?+1i??y∈Ji?∑?logzˉni?+1,yi?,最后的損失函數(shù)為所有Super Point匹配結(jié)果的平均值: L p = 1 N g ∑ i = 1 N g L p , i \mathcal{L}_p=\frac{1}{N_g} \sum_{i=1}^{N_g} \mathcal{L}_{p, i} Lp?=Ng?1?∑i=1Ng??Lp,i?。以上就完成了GeoTransformer的基本內(nèi)容介紹,下面補(bǔ)充下Circle Loss和Metrics相關(guān)的知識(shí)
2.6 Circle Loss
Circle Loss是在度量學(xué)習(xí)任務(wù)中提出的一種Loss,度量學(xué)習(xí)的目標(biāo)是相似或者屬于同一類樣本提取到的embedding向量之間具備更高的相似度或者更小的空間距離,像人臉識(shí)別、圖像檢索這樣的任務(wù)都屬于度量學(xué)習(xí)。
在Circle Loss之前的損失函數(shù)式通過訓(xùn)練使得positive之間的相似度 s p s_p sp?大于positive和negative之間的相似度 s n s_n sn?,損失函數(shù)定義為 max ? { 0 , s n + m ? s p } \max \left\{0, s_n+m-s_{\mathrm{p}}\right\} max{0,sn?+m?sp?},其中控制分離度的參數(shù) m m m為超參數(shù),該損失函數(shù)的優(yōu)化方向要么是增大 s p s_p sp?要么是減小 s n s_n sn?,該損失函數(shù)定義的目標(biāo)是正確的,但問題如下圖(a)所示,在相同的控制參數(shù) m m m的影響下, A A A、 B B B、 C C C三個(gè)點(diǎn)可能被優(yōu)化到目標(biāo)邊界上任意一點(diǎn),即 T T T或者 T ′ T^{\prime} T′點(diǎn),這樣會(huì)導(dǎo)致優(yōu)化目標(biāo)不明確
而Circle Loss則是將目標(biāo)邊界調(diào)整為了如圖(b)所示,這樣的目標(biāo)邊界將 A A A、 B B B、 C C C都往點(diǎn) T T T進(jìn)行優(yōu)化,目標(biāo)明確,效果更高,這里我們來簡單看到Circle Loss的推導(dǎo)過程:
Circle Loss的論文中提出的基礎(chǔ)版本的Loss如下所示: L u n i = log ? [ 1 + ∑ i = 1 K ∑ j = 1 L exp ? ( γ ( s n j ? s p i + m ) ) ] = log ? [ 1 + ∑ j = 1 L exp ? ( γ ( s n j + m ) ) ∑ i = 1 K exp ? ( γ ( ? s p i ) ) ] L_{u n i}=\log \left[1+\sum_{i=1}^K \sum_{j=1}^L \exp \left(\gamma\left(s_n^j-s_p^i+m\right)\right)\right]=\log \left[1+\sum_{j=1}^L \exp \left(\gamma\left(s_n^j+m\right)\right) \sum_{i=1}^K \exp \left(\gamma\left(-s_p^i\right)\right)\right] Luni?=log[1+i=1∑K?j=1∑L?exp(γ(snj??spi?+m))]=log[1+j=1∑L?exp(γ(snj?+m))i=1∑K?exp(γ(?spi?))]其中, γ \gamma γ起到損失函數(shù)尺度縮放作用。 K K K表示與輸入特征向量 x x x具備相同ID的樣本個(gè)數(shù), L L L表示與輸入特征向量具備不同ID的樣本個(gè)數(shù),即positive樣本為 { s p i } ( i = 1 , 2 , ? , K ) \left\{s_p^i\right\}(i=1,2, \cdots, K) {spi?}(i=1,2,?,K),negative樣本為 { s n i } ( i = 1 , 2 , ? , L ) \left\{s_n^i\right\}(i=1,2, \cdots, L) {sni?}(i=1,2,?,L)。
Circle Loss認(rèn)為離最優(yōu)值越遠(yuǎn)的樣本應(yīng)該具備更更大的優(yōu)化權(quán)重,因此對(duì) s p s_p sp?和 s n s_n sn?分別進(jìn)行獨(dú)立加權(quán),將優(yōu)化目標(biāo)修改為 α n s n + m ? α p s p ≤ 0 \alpha_n s_n+m-\alpha_p s_{\mathrm{p}} \leq 0 αn?sn?+m?αp?sp?≤0,其中 α n j \alpha_n^j αnj? 和 α p i \alpha_p^i αpi?為自主學(xué)習(xí)得到的權(quán)重參數(shù)用于控制 s n s_n sn? 和 s p s_p sp?的學(xué)習(xí)步長,因此Circle Loss的定義為: L circle? = log ? [ 1 + ∑ i = 1 K ∑ j = 1 L exp ? ( γ ( α n j s n j ? α p i s p i ) ) ] = log ? [ 1 + ∑ j = 1 L exp ? ( γ α n j s n j ) ∑ i = 1 K exp ? ( ? γ α p i s p i ) ] L_{\text {circle }}=\log \left[1+\sum_{i=1}^K \sum_{j=1}^L \exp \left(\gamma\left(\alpha_n^j s_n^j-\alpha_p^i s_p^i\right)\right)\right]=\log \left[1+\sum_{j=1}^L \exp \left(\gamma \alpha_n^j s_n^j\right) \sum_{i=1}^K \exp \left(-\gamma \alpha_p^i s_p^i\right)\right] Lcircle??=log[1+i=1∑K?j=1∑L?exp(γ(αnj?snj??αpi?spi?))]=log[1+j=1∑L?exp(γαnj?snj?)i=1∑K?exp(?γαpi?spi?)]其中 { α p i = [ O p ? s p i ] + α n j = [ s n j ? O n ] + \left\{\begin{array}{l} \alpha_p^i=\left[O_p-s_p^i\right]_{+} \\ \alpha_n^j=\left[s_n^j-O_n\right]_{+} \end{array}\right. {αpi?=[Op??spi?]+?αnj?=[snj??On?]+??其中假設(shè) s n s_n sn? 和 s p s_p sp?的最優(yōu)值分別為 O n O_n On? 和 O p O_p Op?,上述公式的含義是當(dāng) s p i ≥ O p s_p^i \geq O_p spi?≥Op?時(shí),說明得到的 s p s_p sp?已經(jīng)足夠好,不需要再進(jìn)行懲罰, s n j s_n^j snj?同理。我們將控制分離度的參數(shù)對(duì)于 s n s_n sn? 和 s p s_p sp?進(jìn)行解耦,則Circle Loss進(jìn)一步演變?yōu)?span id="vxwlu0yf4" class="katex--display"> L circle? = log ? [ 1 + ∑ j = 1 L exp ? ( γ α n j s n j ? Δ n ) ∑ i = 1 K exp ? ( ? γ α p i s p i ? Δ p ) ] L_{\text {circle }}=\log \left[1+\sum_{j=1}^L \exp \left(\gamma \alpha_n^j s_n^j-\Delta_n\right) \sum_{i=1}^K \exp \left(-\gamma \alpha_{p}^i s_p^i-\Delta_p\right)\right] Lcircle??=log[1+j=1∑L?exp(γαnj?snj??Δn?)i=1∑K?exp(?γαpi?spi??Δp?)]為了簡單起見,作者將 O p 、 O n 、 Δ n O_p 、 O_n 、 \Delta_n Op?、On?、Δn? 和 Δ p \Delta_p Δp?分別設(shè)置為: O p = 1 + m O_p=1+m Op?=1+m O n = ? m O_n=-m On?=?m Δ n = m \Delta_n=m Δn?=m Δ p = 1 ? m \Delta_p=1-m Δp?=1?m其中 m ∈ [ 0 , 1 ] , s p i > 1 ? m , s n j < m m \in[0,1], s_p^i>1-m, \quad s_n^j<m m∈[0,1],spi?>1?m,snj?<m, m m m越小對(duì)于訓(xùn)練集要求得到的預(yù)測置信度越高,在訓(xùn)練集上的你和程度越高,對(duì)于數(shù)據(jù)的泛化能力相對(duì)變差。經(jīng)過簡化,Circle Loss的超參數(shù)就只有 γ \gamma γ和 m m m兩個(gè)了
回到GeoTransformer,可以看到Overlap Circle Loss是在Circle Loss的基礎(chǔ)上在正樣本項(xiàng)上增加了一個(gè)表示overlap比例的權(quán)重,使得模型更加關(guān)注overlap高的匹配樣本。
2.7 Metrics
最后我們看下GeoTransformer對(duì)齊訓(xùn)練結(jié)果的評(píng)測方法,對(duì)于3DMatch和KITTI兩個(gè)數(shù)據(jù)集作者定義了兩類不同的評(píng)測指標(biāo)。
2.7.1 Inlier Ratio、Feature Matching Recall、Registration Recall
Inlier Ratio、Feature Matching Recall、Registration Recall這三個(gè)指標(biāo)是針對(duì)3DMatch數(shù)據(jù)集定義的
Inlier Ratio定義的是正確的匹配對(duì)相對(duì)于總匹配對(duì)的比例,其中兩個(gè)點(diǎn)之間的距離小于10cm定義為正確的匹配對(duì),具體公式如下: IR ? = 1 ∣ C ∣ ∑ ( p x i , q y i ) ∈ C ? ∥ T  ̄ P → Q ( p x i ) ? q y i ∥ 2 < τ 1 ? , \operatorname{IR}=\frac{1}{|\mathcal{C}|} \sum_{\left(\mathbf{p}_{x_i}, \mathbf{q}_{y_i}\right) \in \mathcal{C}} \llbracket\left\|\overline{\mathbf{T}}_{\mathbf{P} \rightarrow \mathbf{Q}}\left(\mathbf{p}_{x_i}\right)-\mathbf{q}_{y_i}\right\|_2<\tau_1 \rrbracket, IR=∣C∣1?(pxi??,qyi??)∈C∑?[[ ?TP→Q?(pxi??)?qyi?? ?2?<τ1?]],
Feature Matching Recall定義的是Inlier Ratio值高于0.05的匹配點(diǎn)云的數(shù)量: F M R = 1 M ∑ i = 1 M ? I R i > τ 2 ? \mathrm{FMR}=\frac{1}{M} \sum_{i=1}^M \llbracket \mathrm{IR}_i>\tau_2 \rrbracket FMR=M1?i=1∑M?[[IRi?>τ2?]]其中 M M M為所有的點(diǎn)云對(duì)數(shù)量
Registration Recall定義的是正確匹配的點(diǎn)云對(duì)的數(shù)量,其中正確匹配的定義是最后求解的變化誤差小于0.2m: RMSE ? = 1 ∣ C ? ∣ ∑ ( p x i ? , q y i ? ) ∈ C ? ∥ T P → Q ( p x i ? ) ? q y i ? ∥ 2 2 , \operatorname{RMSE}=\sqrt{\frac{1}{\left|\mathcal{C}^*\right|} \sum_{\left(\mathbf{p}_{x_i}^*, \mathbf{q}_{y_i}^*\right) \in \mathcal{C}^*}\left\|\mathbf{T}_{\mathbf{P} \rightarrow \mathbf{Q}}\left(\mathbf{p}_{x_i}^*\right)-\mathbf{q}_{y_i}^*\right\|_2^2}, RMSE=∣C?∣1?(pxi???,qyi???)∈C?∑? ?TP→Q?(pxi???)?qyi??? ?22??, R R = 1 M ∑ i = 1 M ? R M S E i < 0.2 m ? \mathrm{RR}=\frac{1}{M} \sum_{i=1}^M \llbracket \mathrm{RMSE}_i<0.2 \mathrm{~m} \rrbracket RR=M1?i=1∑M?[[RMSEi?<0.2?m]]
2.7.2 Relative Rotation Error、Relative Translation Error、Registration Recall
Relative Rotation Error定義為真值和預(yù)測結(jié)果之間的角度誤差 R R E = arccos ? ( trace ? ( R T ? R  ̄ ? 1 ) 2 ) \mathrm{RRE}=\arccos \left(\frac{\operatorname{trace}\left(\mathbf{R}^T \cdot \overline{\mathbf{R}}-1\right)}{2}\right) RRE=arccos(2trace(RT?R?1)?)
Relative Translation Error定義為真值和預(yù)測結(jié)果之間的平移誤差 R T E = ∥ t ? t  ̄ ∥ 2 . \mathrm{RTE}=\|\mathbf{t}-\overline{\mathbf{t}}\|_2 . RTE=∥t?t∥2?.
Registration Recall定義為Relative Rotation Error和Relative Translation Error都小于一定閾值比例 R R = 1 M ∑ i = 1 M ? R R E i < 5 ° ∧ R T E i < 2 m ? \mathrm{RR}=\frac{1}{M} \sum_{i=1}^M \llbracket \mathrm{RRE}_i<5^{\circ} \wedge \mathrm{RTE}_i<2 \mathrm{~m} \rrbracket RR=M1?i=1∑M?[[RREi?<5°∧RTEi?<2?m]]
3. MAC
MAC發(fā)表于2023年CVPR,原論文為《3D Registration with Maximal Cliques》,本文的主要貢獻(xiàn)是優(yōu)化了極大團(tuán)的構(gòu)建策略,使得點(diǎn)云匹配的速度、性能顯著提升。極大團(tuán)的概念并不是本提出的,在之前已經(jīng)有很多研究人員研究該問題,本文提出了一個(gè)較高的解決方案。
3.1 Graph Construction
對(duì)于兩塊待匹配的點(diǎn)云 P s \mathbf{P}^s Ps和 P t \mathbf{P}^t Pt,初始的匹配關(guān)系 C initial? = { c } \mathbf{C}_{\text {initial }}=\{\mathbf{c}\} Cinitial??={c}通過特征描述子獲得,其中 c = ( p s , p t ) \mathbf{c}=\left(\mathbf{p}^s, \mathbf{p}^t\right) c=(ps,pt), p s \mathbf{p}^s ps和 p t \mathbf{p}^t pt分別為點(diǎn)云 P s \mathbf{P}^s Ps和 P t \mathbf{P}^t Pt中的點(diǎn)。MAC就是通過構(gòu)建Graph從 C initial? \mathbf{C}_{\text {initial }} Cinitial??中獲得點(diǎn)云 P s \mathbf{P}^s Ps和 P t \mathbf{P}^t Pt的位姿變換。
Fisrt Order Graph的構(gòu)建主要基于匹配點(diǎn)對(duì) ( c i , c j ) \left(\mathbf{c}_i, \mathbf{c}_j\right) (ci?,cj?)之間的剛性距離限制 S d i s t ( c i , c j ) = ∣ ∥ p i s ? p j s ∥ ? ∥ p i t ? p j t ∥ ∣ S_{d i s t}\left(\mathbf{c}_i, \mathbf{c}_j\right)=\left|\left\|\mathbf{p}_i^s-\mathbf{p}_j^s\right\|-\left\|\mathbf{p}_i^t-\mathbf{p}_j^t\right\|\right| Sdist?(ci?,cj?)= ? ?pis??pjs? ?? ?pit??pjt? ? ?這其實(shí)很好理解,因?yàn)辄c(diǎn)云本身和點(diǎn)云匹配的過程都是剛性的?;谠撓拗莆覀冇?jì)算匹配點(diǎn)對(duì)之間點(diǎn)對(duì)得分為: S c m p ( c i , c j ) = exp ? ( ? S d i s t ( c i , c j ) 2 2 d c m p 2 ) S_{c m p}\left(\mathbf{c}_i, \mathbf{c}_j\right)=\exp \left(-\frac{S_{d i s t}\left(\mathbf{c}_i, \mathbf{c}_j\right)^2}{2 d_{c m p}^2}\right) Scmp?(ci?,cj?)=exp(?2dcmp2?Sdist?(ci?,cj?)2?)其中 d c m p d_{c m p} dcmp?,可以看到 S dist? ( c i , c j ) S_{\text {dist }}\left(\mathbf{c}_i, \mathbf{c}_j\right) Sdist??(ci?,cj?)越小得分越高越接近于1,而 S dist? ( c i , c j ) S_{\text {dist }}\left(\mathbf{c}_i, \mathbf{c}_j\right) Sdist??(ci?,cj?)過大則會(huì)導(dǎo)致得分幾乎為零。由于沒有方向,Fisrt Order Graph W F O G \mathbf{W}_{F O G} WFOG?是一個(gè)對(duì)稱矩陣。
Second Order Graph是基于Fisrt Order Graph構(gòu)建的稀疏矩陣: W S O G = W F O G ⊙ ( W F O G × W F O G ) \mathbf{W}_{S O G}=\mathbf{W}_{F O G} \odot\left(\mathbf{W}_{F O G} \times \mathbf{W}_{F O G}\right) WSOG?=WFOG?⊙(WFOG?×WFOG?)相對(duì)于Fisrt Order Graph,Second Order Graph具備的優(yōu)勢是具備更嚴(yán)格邊構(gòu)建條件并且更稀疏,有助于更快地搜索團(tuán)。Fisrt Order Graph和Second Order Graph的區(qū)別如下圖所示:
3.2 Search Maximal Cliques
給定一個(gè)無向圖 G = ( V , E ) G=(\mathbf{V}, \mathbf{E}) G=(V,E),團(tuán)的定義為 C = ( V ′ , E ′ ) C=\left(\mathbf{V}^{\prime}, \mathbf{E}^{\prime}\right) C=(V′,E′),其中 V ′ ? V , E ′ ? E \mathbf{V}^{\prime} \subseteq \mathbf{V}, \mathbf{E}^{\prime} \subseteq \mathbf{E} V′?V,E′?E, C C C是 G G G的子集。最大團(tuán)的定義就是無向圖中擁有最多節(jié)點(diǎn)的團(tuán)。
之前有很多工作在研究如何從一個(gè)無向圖中搜索出最大團(tuán),他是他們的問題是搜索過程集中在無向圖中的全局信息,而本文放松了這種限制使得搜索最大團(tuán)的過程可以更加關(guān)注局部信息。具體方法如下:
Node-guided Clique Selection在初始的最大團(tuán)搜索后得到 M A C initial? M A C_{\text {initial }} MACinitial??,我們賦予每一個(gè)團(tuán) C i = ( V i , E i ) C_i=\left(\mathbf{V}_i, \mathbf{E}_i\right) Ci?=(Vi?,Ei?)一個(gè)權(quán)重 w C i w_{C_i} wCi??,權(quán)重的計(jì)算方式為: w C i = ∑ e j ∈ E i w e j w_{C_i}=\sum_{e_j \in \mathbf{E}_i} w_{e_j} wCi??=ej?∈Ei?∑?wej??其中 w e j w_{e_j} wej??為 W S O G \mathbf{W}_{S O G} WSOG?中的邊權(quán) e j e_j ej?,一個(gè)node可能會(huì)被多個(gè)團(tuán)所包含,我們采用的策略是將該node保留在權(quán)重最大的團(tuán)中,其他權(quán)重偏低團(tuán)將會(huì)被移除,剩下的團(tuán)記為 M A C selected? MAC_{\text {selected }} MACselected??,接下來我們對(duì) M A C selected? MAC_{\text {selected }} MACselected??進(jìn)行進(jìn)一步過濾,過濾邏輯如下:
- Normal Consistency 指的是給定兩個(gè)匹配對(duì) c i = ( p i s , p i t ) , c j = ( p j s , p j t ) \mathbf{c}_i=\left(\mathbf{p}_i^s, \mathbf{p}_i^t\right), \mathbf{c}_j=\left(\mathbf{p}_j^s, \mathbf{p}_j^t\right) ci?=(pis?,pit?),cj?=(pjs?,pjt?)以及這四個(gè)點(diǎn)構(gòu)成的向量 n i s , n j s , n i t , n j t \mathbf{n}_i^s, \mathbf{n}_j^s, \mathbf{n}_i^t, \mathbf{n}_j^t nis?,njs?,nit?,njt?,他們的角度差分別為 α i j s = ∠ ( n i s , n j s ) , α i j t = ∠ ( n i t , n j t ) \alpha_{i j}^s=\angle\left(\mathbf{n}_i^s, \mathbf{n}_j^s\right), \alpha_{i j}^t=\angle\left(\mathbf{n}_i^t, \mathbf{n}_j^t\right) αijs?=∠(nis?,njs?),αijt?=∠(nit?,njt?),他們的角度差不應(yīng)該過,即 ∣ sin ? α i j s ? sin ? α i j t ∣ < t α \left|\sin \alpha_{i j}^s-\sin \alpha_{i j}^t\right|<t_\alpha ?sinαijs??sinαijt? ?<tα?其中 t α t_\alpha tα?為超參數(shù)閾值。
- Clique Ranking指的是對(duì) M A C selected? MAC_{\text {selected }} MACselected??按照權(quán)重 w C i w_{C_i} wCi??進(jìn)行排序,Top-K的應(yīng)該被保留。
經(jīng)過上述操作,原本數(shù)量非常巨大的 M A C initial? M A C_{\text {initial }} MACinitial??會(huì)減小到一定數(shù)量,最后通過Instance-equal SVD或者Weighted SVD就可以求解最后的變換。
我覺得很棒的一點(diǎn)是MAC可以作為模塊添加到其他方法中,我們可以看到加入MAC后各個(gè)方法的指標(biāo)都有明顯提高: