沒錯又是我,實驗是越來越好了。

總之學弟講了一個 ModelNet40 有人 Classfication 的 Overall ACC 做到 95%,

所以大頭很開心地要我去 Survey 一下前幾名的方法來做。

目前第一名的方法就是這款 POINTVIEW-GCN,拿多視角的方法來分類。

主架構有兩個亮點:

1. NonLocal, Local 的 Skip connection:

簡單來說就是每層神經網路分成兩路輸出, Local 會直接進 Skip connection 後 Concat 到最後一層;

NonLacl 放進下一層繼續轉。

2. Selective View-Sampling(SVS):

從多視圖裡面找最好的那張,再傳下去。

個人認為是簡單的資料增強。

這個架構是怎麼更新參數呢?

首先我們知道這個架構有四個視圖(G),每個的後綴是 j 。

先來看 Local Conv 的部分,

在每個視圖裡面的特徵為:

L為 ReLU 函數。

A是與鄰居關係的矩陣(抓特徵的意思,視為 KNN 結果。)

右側的Fj 應該是誤植,應該是表上一層 F(j-1) 的意思。

W,alpha 是訓練來的權重參數、矩陣。

 完成 Local Conv 的 Fj 會送進 Skip connection 到最後一層。

有 Local 當然有 NonLocal 啊!

那 NonLocal 是 Non 在哪裡?

NonLocal Conv 其實就是多了一個更新比較遠節點的部分,

(因為 Local Conv 做了一次 KNN,

 而 NonLocal Conv 的 input 是 Local Conv 的 output,

 這兩個的 Conv 其實有前後的關係。)

論文裡面利用 message 函數 來做這件事情。

j 是 G視圖 的層級,i,p 是 node 的編號(F有 N 個 node,i & p 屬於 N。)

這樣應該比較好理解。

最後那個 R(.) A.K.A 相關函數,我一直看不太懂,

總之在程式碼裡面是長這樣的,首先 input 是一顆尺寸 (X,Y,Z) 的 Feature:

R(.)

有行 參數 20 的,是用 repeat 做出來的。

所以我們用 R(.)得到 message 函數 的結果 = Feature M。

最後利用 M 來更新參數:

實際上就是 concat 起來。 

經過 R(.)還有 C(.),據論文所說是要更新參數啦,

寫得有模有樣,但是很懷疑單純 concat 起來是要更新什麼參數?

或許進到下一層 Conv 可以利用這些資訊?

加上這篇只有給出 Overall 的 數據(做最好的那次數據,不是平均。),

這邊我打個大大的問號。

以上,大概是這篇的簡介。

我對於這篇貢獻的理解是讓最後的 Feature 保留粗的特徵(因為只抓附近鄰居+少層 Conv),

越後面的 G 視圖 特徵越抓越遠、越細。

與我手上這篇 DGCNN 的做法最大的區別應該是少了每層 KNN + 多視圖的 SVS。

Skip connection it’s worked for me.

附上論文連結:https://ieeexplore.ieee.org/document/9506426

與 GIthub Repo:https://github.com/SMohammadi89/PointView-GCN

以上

By wuyiulin

喜歡騎單車的影像算法工程師

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *