APSNet: Toward Adaptive Point Sampling for Efficient 3D Action Recognition(IEEE)
自適應點採樣的高效3D動作辨識(APSNet)
Journal reference:
IEEE, Transactions on Image Processing, Volume 31, 2022, pp 5287–5302
Authors:
Jiaheng Liu, Jinyang Guo, and Dong Xu
論文重點整理
- 提出了一個自適應點採樣的設計架構。
- 端到端的動作辨識模型,點雲to動作辨識結果。
- 相較Benchmark降低點雲模型運算量,並維持一定的準確度。
現有3D動作辨識遇到的問題
1. 現有 3D 動作辨識模型提取動作信息的效率不夠好
以近期的3DV-PointNet++ network (2020年)為例,它需要花費大量時間對點雲數據進行體素化並通過時間排序池預先計算運動信息。
2. 希望設計一個end-to-end(端到端)的網路結構
可以直接學習來自原始點雲序列的運動表示和同時優化幾何信息,並以完全端到端的方式進行提取過程。
3. 點雲模型的運算量大,期望高效的網路架構
在資源有限的設備上部署這些模型的問題,例如自動駕駛汽車。
4. 現有的3D動作識別方法通常使用相同的分辨率進行辨識
不同的動作模式其點雲的複雜度也不同,較複雜的動作行為可以用高分辨率進行處理,而有些存在冗餘和噪聲幀靜態場景中的點雲序列,可使用較低分辨率進行處理。圖中顯示了兩點來自動作類“投擲”和“握手”的點雲序列。觀察到“投擲”的動作類通常具有更複雜的運動模式。因此,使用高分辨率幀是有利的在測試過程中做到合理分類結果。另一方面,“握手”的動作類,其點雲序列相對簡單,使用低分辨率幀就足夠進行辨識了。
論文主要貢獻
-
作者引入高效的骨幹網絡並提出端到端的自適應點採樣基於此主幹的網絡(APSNet)架構網絡,專為高效3D而設計的動作辨識模型。
-
作者新提出的 APSNet 中,可以根據輸入點雲資訊自適應地決定對測試過程中不同幀點雲視頻的最佳分辨率(即最優點雲數目)。
-
多個基準的綜合實驗數據集證明了作者骨幹網絡(Backbone Network) 和 APSNet 3D 動作辨識的有效性和效率。
Backbone Network 架構介紹
- APSNet的架構圖:
-
Coarse feature extraction的架構圖:
- Input: 點雲影片(三維點雲資訊)
- Frame sampling(得到成雙的frame pairs)
- 將每個frame pairs投入Backbone Network裡,可以得到Pair-level級別的特徵(geometry & motion)
- 整合所有frame pairs的得到的特徵
- 使用分類器進行動作分類(FC layers and softmax)
-
Frame sampling(幀採樣):
- 投入點雲影片(三維點雲資訊)並分割成採樣幀數(2T = 8)個片段,T = 4。
- 隨機抽取每個片段的一個幀(8個片段各取一個幀),組成T frame pairs。
公式表示:,t = 0 , … , T-1
-
Backbone network 架構圖:
-
Data Pre-Processing Module:
投入Qc(current frame)與Qr(reference frame)經過第一次FPS處理後,進行點雲降維變為˜Qc與˜Qr,從原本的點雲數目變為˜N個點。再進行S次的Set abstraction operation(集合抽象),它是一種幾何特徵抽取的過程:首先分別對˜Qc與˜Qr點雲再進行降維一次(第二次FPS處理)變為N個點,再進行Grouping與Mini-PointNet操作,最後得到的特徵表示為:
特徵表示為
特徵表示為
1
(˜N, N)是作者自己設定的分辨率(點雲數目)
-
最遠點採樣(Farthest point sampling, FPS):
點雲在進行樣本採樣時能夠達到均勻採樣的效果,舉例來說:就像卷積在做max pooling的時候一樣,在保留圖像主要特徵信息的同時,能將圖像轉換為不同尺度。
- 輸入點雲有N個點,從點雲中隨機選取一個點P0作為起始點,得到採樣點集合S={P0}。
- 計算所有點到P0的距離(歐式距離),構成N維數組L,從中選擇最大值對應的點作為P1,更新採樣點集合S={P0,P1}。
- 計算所有點到P1的距離,對於每一個點Pi,其距離P1的距離如果小於L[i],則更新L[i] = d(Pi, P1),因此,數組L中存儲的一直是每一個點到採樣點集合S的最近距離。
- 選取L中最大值對應的點作為P2,更新採樣點集合S={P0,P1,P2}。
- 重複2-4步,一直採樣到N’個目標採樣點為止。
-
集合抽象(Set abstraction operation來自pointnet++ 2017年),以BBNet3為例:
進行第二次FPS降維點雲,利用pointnet++的Grouping技術擷取所有採樣點N限定範圍內的點雲,使神經網路更專注於局部的區域特徵,Grouping詳細操作過程如下圖:
將第二次FPS的採樣點,每一點利用球狀鄰域查詢(Ball Query) or K近鄰算法(KNN) 組成區域點的集合。最後經由多尺度感知器 (MLPs) 與 Max pooling,組成Pc與Pr的幾何特徵(geometry feature)。
-
Mini-PointNet(來自pointnet 2016年):
一種為保留點雲無序性的特徵擷取方式,幾乎在每次擷取點雲特徵的過程結尾都會使用MLPs+Max pooling,統稱為Mini-PointNet。
先將每個點雲投入MLPs中,原先3維的資訊升維成C(通道數的特徵),利用Max pooling取得每維特徵中的最大值,因此在置換投入的點雲順序時,最後的特徵結果是不會受到影響的。
-
-
-
Backbone Network (Core)架構圖:
-
Aggregated feature extraction(來自GeometryMotion-Net 2021年,其作者與本篇作者相同):
經由set abstraction後得到的cloud point,將Pc每一個點在Pr點雲上找出鄰近的K點(KNN),再把Pr每一個鄰近點的三維座標減去Pc,可以得到帶有點雲偏移量的特徵(motion feature)。
表示公式為:
-
Local feature extraction:
此過程是將Aggregated feature extraction得到的其中一個點特徵再去做Mini-pointnet。
進行區域性的特徵提取
以下為Aggregated feature extraction+Local feature extraction的示意圖:
-
Global feature extraction:
每個點,i = 1 , …, N,再做一次Mini-pointnet可以提取出帶有幾何與動作的全域pair-level特徵vector。
-
-
Concatenation and Classification:
最終結合所有的T frame pairs的幾何與動作特徵,再使用分類器來預測影片的動作。
作者的 APSNet 模型架構介紹
它與Backbone Network的差異在於,由下圖可知:
在Backbone Network提取完Global feature extraction的特徵vector後,新增了Multi-resolution backbone network pre-training。BBNeti , i = {0, 1, 2, 3},四種不同的分辨率BBNet0, BBNet1, BBNet2 and BBNet3 as (128, 64), (256, 128), (512, 128) and (1,024, 128),其對應的數值就是前面在做FPS中有提到的(˜N , N),BTW這四種模型都是需要預先訓練好的,再把訓練好的模型參數置入APSNet (Core)中。
-
APSNet (Core):
分為三個步驟Coarse Feature Extraction Stage、Decision Making Stage、Fine Feature Extraction Stage以下分別說明:
-
Coarse Feature Extraction Stage:
它就是等於Backbone Network的架構,所採用分辨率為最低的(128, 64),也是消耗最少的運算成本,特徵表示為
。 -
Decision Making Stage:
作者使用決策模塊(DM)來生成操作決策,並確定該frame pair最佳分辨率為何(四選一)。
a. LSTM updating:
將Coarse Feature Extraction Stage所得到的特徵當作input投入LSTM模型,模型會持續更新隱藏層ht和輸出Ot,可以表示為:
原先的LSTM結構,如下圖:
以下為個人猜想,APSNet (Core)裡的LSTM:
(截圖源至:LSTM模型 46:07)原本的LSTM是投入ct-1跟ct,在APSNet (Core)裡,作者換成上一個LSTM記憶模塊的輸出,第一個LSTM記憶模塊投入特徵作為輸入,之後的記憶模塊則須加上上個記憶模塊的隱藏層(ht-1)與輸出(Ot-1)作為輸入,這個LSTM module源自於AR-Net 2020年。
b. Decision making:
將ht作為FC層的輸入,在經過softmax層即可產出最佳的分辨率,機率分布dt,表示如下
,再轉換為one-hot vector,將vector中最大的值變為1其他則為0,可以得到action decision
。但是有一個問題是argmax function沒有一個實際的可微分公式表示,所以會無法使用BP的技巧來更新權重。作者選擇Gumbel-Max/Gumbel-Softmax trick技巧讓模型可以自行訓練,基本概念是原本的dt vector加入noise形成新的 distribution vector = ,定義如下:
noise是一個標準的Gumbel distribution,
是採樣來自於uniform istribution(均勻分配) U(0, 1),藉此作者就能夠產生新的one-hot vector如下:,當為最大值時會等於1其他為0。在BP的情況下,one-hot vector to
其公式為
這個公式便可以使用BP的技巧進行微分與權重更新,讓模型end-to-end。!!! 是 temperature parameter
補充說明:當趨近於無限大decision vector傾向為uniform one;當趨近於0則約等於one-hot vector 。
-
Fine Feature Extraction Stage:
最終得到一個action decision vector ,以此為例的話,模型會將此frame pairs在投入BBNet1模型裡產生一個新的全域特徵 。
[1, 0, 0, 0]對應BBNet0,[0, 0, 1, 0]對應BBNet2,[0, 0, 0, 1]對應BBNet3。
-
-
Training Details:
這部份是要了解loss function的部分,loss function L定義如下:
Lacc是標準的cross-entropy loss(分類問題),Ground-truth是點雲影片的動作標籤。
Leff是APSnet的運算量複雜度,以the number of floating point operations(#FLOPs)作為表示。
要先了解一個t-th frame pair的#FLOPs怎麼算:
Beta會等於每個BBNeti(i = 1~3)的運算量。
是decision making module的運算量,包含LSTM module跟FC。
平均所有的frame pairs的運算量可以得到,公式如下:
計算出後,作者利用
來控制APSNet的複雜度,公式如下:舉例來說,當FLOPpair > FLOPtarget時,作者使用較大的
來產生大的loss,促使優化器更新權重使分辨率決策往低分辨率調整;反之,則會使loss變小找到該點雲影片最佳分辨率。
THE DETAILED ARCHITECTURE OF MULTI-RESOLUTION BACKBONE NETWORKS
- The network structure of backbone network at the highest resolution (i.e., BBNet3)
-
The Structure of BBNet3:
- farthest point sampling (FPS) = (˜N, N): (1024, 128)
- set abstraction module: S = 2
- MLP(first set abstraction module) : 64, 64, 128
- MLP(second set abstraction module) : 128, 128, 256
- MLP(local feature extraction): : 128, 128, 256
- MLP(global feature extraction): : 256, 512, 1024
-
The Structure of BBNet2:
- farthest point sampling (FPS) = (˜N, N): (512, 128)
- set abstraction module: S = 1
- MLP(one set abstraction module) : 128, 128, 256
- MLP(local feature extraction): : 128, 128, 256
- MLP(global feature extraction): : 256, 512, 1024
-
The Structure of BBNet1:
- farthest point sampling (FPS) = (˜N, N): (256, 128)
- set abstraction module: S = 1
- MLP(one set abstraction module) : 96, 96, 192
- MLP(local feature extraction): : 96, 96, 192
- MLP(global feature extraction): : 192, 384, 768
-
The Structure of BBNet0:
- farthest point sampling (FPS) = (˜N, N): (128, 64)
- set abstraction module: S = 1
- MLP(one set abstraction module) : 64, 64, 128
- MLP(local feature extraction): : 64, 64, 128
- MLP(global feature extraction): : 128, 256, 512
EXPERIMENTS
1. 資料集
- 60種動作類別
- 40位受測者
- 120種動作類別
- 106位受測者
1 | NTU源自於新加坡南洋理工大學 (Nanyang Technological University) |
- 10種動作類別
- 10位受測者
- 3種拍攝視角
- 將2種視角作為training data,剩餘一種作為testing data
1 | 西北大學洛杉磯分校多視圖動作 3D 數據集 |
- 30種動作類別
- 10位受測者
- 4種拍攝視角
- 將2種視角作為training data,其他2種作為testing data
2. 資料集處理細節
共同超參數:
- number of sampled frames (2T): 8 (i.e., T = 4)
- optimizer: SGD (with the cosine learning rate decay strategy)
NTU RGB+D 60 and NTU RGB+D 120 datasets
- learning rate: 0.05
- weight decay: 0.0005
- batch size: 256
- epoch: 48000(NTU RGB+D 60)、96000(NTU RGB+D 120)
在訓練過程中,作者隨機沿 X 軸和 Y 軸旋轉每個點雲並比照3DV執行抖動和隨機丟失操作輸入點雲視頻。
N-UCLA and UWA3DII datasets
- learning rate: 0.005
- weight decay: 0.005
- batch size: 64
- epoch: 沒有說明
- 首先預訓練BBNet0、BBNet1、BBNet2、BBNet3,這四個不同解析度的backbone networks。
- 訓練決策模塊,以lr = 0.005,batch size = 160,optimizer = SGD (cosine),temperature parameter () = 5,每個 epoch 結束會乘上 exp(−0.045) 大約 0.956 (我個人猜測是為了幫助收斂),epoch = 60,000(NTU RGB+D 60)、20,000(NTU RGB+D 120)。
3. 實驗結果
NTU RGB+D 60、NTU RGB+D 120 benchmark
1 | Backbone BBNet3 (alternative setting)是比照3DV-PointNet++的參數進行訓練 |
N-UCLA benchmark
UWA3DII benchmark
1 | 作者有提到APSNet是設計給大規模dataset,但投入N-UCLA、UWA3DII這兩個小規模dataset也取得很好的效果 |
不同解析度的backbone network比較(BBNet0~3,4種),NTU RGB+D 60、NTU RGB+D 120 datasets
不同解析度的backbone network比較(BBNet1~3,4種),因為BBNet0的結果較差,所以僅採用1到3種進行比較
NTU RGB+D 60、NTU RGB+D 120 datasets
N-UCLA dataset
跟benchmark比較準確度、#FLOPs(平均運算量)、運算時間
值得注意的是3DV-PointNet++雖然#FLOPs較少,但其花費的運算時間非常高
4. 實驗設備
one Nvidia RTX 2080Ti GPU.
5. Ablation Study for Backbone Network(都以NTU PGB+D 60 CROSS-SUBJECT為測試資料集)
- 幾何與動作信息對於Backbone Network的影響:
1 | 表示幾何與動作信息都是有效被用於Backbone Network裡,BTW w/o是without的意思 |
-
比較不同變體對於Backbone Network的影響:
-
原本,改成多了
的維度資訊。- alternative: 90.5%(acc)、10.20G(FLOPs)
- original: 90.3%(acc)、9.40G(FLOPs)
-
跟
的聯集作為input(投入8個frame pairs訓練)。- alternative: 90.5%(acc)、12.64G(FLOPs)
- original: 90.3%(acc)、9.40G(FLOPs)
-
- alternative: 90.6%(acc)、17.60G(FLOPs)
- original: 90.3%(acc)、9.40G(FLOPs)
-
-
比較不同採樣幀數(2T)對於Backbone Network的影響:
5. Ablation Study for APSNet(都以NTU PGB+D 60 CROSS-SUBJECT為測試資料集)
-
比較不同數量的Backbone Network對於APSNet的影響:
- 3 BBNets (i.e., BBNet0, BBNet2, and BBNet3)
- 5 BBNets (i.e., BBNet0, BBNet1, BBNet2, BBNet3, and BBNet4)
- 比較有無LSTM Module對於APSNet的影響:
-
使用最低分辨率當作粗層次的信息就足夠用於決策了嗎?
作者也有嘗試以BBNet1(256, 128)作為,decision making module輸入的結果,並用 BBNet0、BBNet2和BBNet3作為fine feature extraction。
- alternative: 89.1%(acc)、7.42G(FLOPs)
- original: 90.8%(acc)、7.21G(FLOPs)
1
2
3作者給出的想法是,在decision-making階段使用 BBNet1 提取特徵會需要更多的#FLOPs,
which limits the #FLOPs allocated at the fine feature extraction stage
in this alternative method and thus degrades its performance.(我看不太懂...) -
為了進一步展示作者的 APSNet 的有效性,比較其他 APSNet 有兩個變體:APSNet-Rand、APSNet-MultiScale
APSNet-Rand: 在每個frame pair的decision making module使用隨機的方式選擇分辨率進行訓練。
APSNet-MultiScale: 對所有分辨率的結果進行平均,並用此產生最終預測結果。(我猜應該就不需要decision making module了)
1 | APSNet-A和APSNet-B是由作者的APSNet用兩種不同計算複雜度,去得到準確度與#FLOPs。 |
- 在公式中對於APSNet的影響:
6. Algorithm Analysis(都以NTU PGB+D 60 CROSS-SUBJECT為測試資料集)
- 每個frame pair選擇最佳分辨率的有效性 in APSNet
- 每個frame pair的限制是FLOPtarget = 0.8G or 1.8G
【投擲】的視覺化點雲圖,在不同複雜度限制下:
【握手】的視覺化點雲圖,在不同複雜度限制下:
CONCLUSION
在這項論文中,作者研究了設計3D動作網絡結構的準確性與效率。作者引入骨幹網絡並提出自適應點採樣網絡(APSNet)3D動作識別。在給定任意的計算複雜度約束(FLOPtarget),作者的 APSNet 也可以自適應地為每個點雲影片中的frame pairs選擇出最佳分辨率(即最佳點數)。綜合多個基準數據集的實驗證明了新提出的 APSNet 對於高效 3D 的有效性動作識別。
優點:提出了一個自適應點採樣的設計架構,可以區別複雜與簡單動作幀,複雜的動作才使用較高的分辨率辨別,反之,以低分辨率節省不必要的運算量。
缺點:沒辦法一開始就決定要選擇何種分辨率進行動作辨識,必須先經過至少一次的低分辨率運算,才能做去分辨率的選擇,會造成多餘的運算。