圖卷積網絡(Graph Convolutional Network,GCN)是近年來逐漸流行的一種神經網絡結構。不同于只能用于網格結構(grid-based)數據的傳統網絡模型 LSTM 和 CNN,圖卷積網絡能夠處理具有廣義拓撲圖結構的數據,并深入發掘其特征和規律,例如 PageRank 引用網絡、社交網絡、通信網絡、蛋白質分子結構等一系列具有空間拓撲圖結構的不規則數據。相比于一般的拓撲圖而言,人體骨骼拓撲圖具有更加良好的穩定性和不變性,因此從2018年開始,就有許多學者嘗試將圖卷積網絡應用到基于人體骨骼的行為識別領域來,也取得了不錯的成果。下面就讓我們來深入了解一下什么是圖卷積網絡,以及它在行為識別領域的最新工作進展吧!
什么是圖(graph)?為什么要研究GCN?
我們知道,CNN 在處理圖像數據時具有很強的特征抽取能力和整合能力,這得益于卷積核(kernel ,or filter)的參數共享機制和加權平均機制。卷積本質上就是一種加權求和的過程,而卷積核的參數就是不同像素點對應的權重,并且不同的圖片都共享同一個卷積核,這使得CNN能夠通過對卷積核參數的迭代更新來隱式的學習圖像中具有的像素排列規律,進而學習到不同的形狀特征和空間特征。
但值得注意的一點是,CNN 所處理的數據都具有規則的網格結構,也就是排列很整齊的矩陣,具有 Euclidean Structure,例如 RGB 圖片(圖1)。如果要將CNN應用于非圖像領域,就必須將數據組合為規整的網絡結構,才能作為CNN的輸入。例如在 18 年之前的行為識別研究中,常用的方法就是以一定的順序將一個動作的關節坐標序列轉換為一張 RGB 圖片,從而將動作識別工作轉化為圖像識別工作。
圖2 社交網絡拓撲圖
類似這樣的網絡結構就是圖論中所定義的拓撲圖。更一般的,圖就是指圖論中用頂點和邊建立相應關系的拓撲圖。我們可以用一個點和邊的集合來表示圖:G=(E,V);其中E表示邊的集合,V表示頂點的集合。
那么對于這種具有拓撲圖結構的數據而言,CNN 處理起來是非常困難的(但也不是沒有辦法哦),而且通常不能很好的抽取節點與節點之間的連接關系信息(是否相連),這也是我們研究 GCN 的重要原因。當然,根本的原因還是在于數據的多樣性,廣義上來講,任何數據在賦范空間內都可以建立拓撲關聯,譜聚類就是應用了這樣的思想。所以說拓撲連接是一種廣義的數據結構,GCN 有很大的應用空間。
圖卷積操作如何進行呢?
目前有兩種類型的圖卷積操作,一種是基于空域的圖卷積,另一種是基于譜域的圖卷積,這里著重介紹第一種。
前面我們提到,卷積操作的本質意義就是對一個范圍內的像素點進行加權求平均,這能有助于提取空間特征,那么如何將這種思想應用到拓撲圖上呢?我們可以換一種方式來理解卷積操作,如圖3,對于feature map(藍色部分)中的一個點(紅色),其特征值實際上是周圍所有像素點將特征值傳播到中心點后進行加權平均,這種操作等效于傳統的卷積操作,只不過我們人為的為特征添加了一個傳播方向(邊),將每個像素點當成頂點,從而在圖結構上再次定義了卷積操作。
圖3 卷積操作的另一種理解
進一步的,對于廣義拓撲圖結構的數據,也可以按照這種思想來定義卷積操作,如圖4所示,將每個節點的鄰居節點的特征傳播到該節點,再進行加權平均,就可以得到該點的聚合特征值,只不過在 CNN 中,我們將這個聚合特征值當做了 feature map 中的一個點,而在 GCN 中沒有 feature map 的概念,我們直接將這個聚合特征值作為傳播到下一層的特征值。藍色部分就是圖卷積操作對應的 kernel,這里是為了理解才畫出這個藍色區域,在 GCN 中也沒有 kernel 的概念,這也是因為圖是不規則的。
類似于 CNN,圖卷積也采用共享權重,不過不同于 CNN 中每個 kernel 的權重都是規則的矩陣,按照對應位置分配,圖卷積中的權重通常是一個集合。在對一個節點計算聚合特征值時,按一定規律將參與聚合的所有點分配為多個不同的子集,同一個子集內的節點采用相同的權重,從而實現權重共享。例如對于圖4,我們可以規定和紅色點距離為 1 的點為 1 鄰域子集,距離為 2 的點為 2 鄰域子集。當然,也可以采用更加復雜的策略,例如按照距離圖重心的遠近來分配權重。權重的分配策略有時也稱為 label 策略,對鄰接節點分配 label,label 相同節點的共享一個權重。
到這里想必你已經發現了,其實圖卷積操作就是傳統的卷積操作在拓撲圖上的概念延伸和轉移,通過對比二者,你能更好的學習到圖卷積網絡的精髓。
圖4 拓撲圖上的卷積操作
特征在層與層之間的傳播方式可以用公式表示如下:
其中 Hi 是第 i 層的特征矩陣,當 i=0時,H0 就表示輸入圖的節點特征矩陣。A是輸入圖的鄰接矩陣,Wi表示第i層的權重矩陣。σ表示激活函數。通過鄰接矩陣左乘特征矩陣,可以實現特征的聚合操作,然后再右乘權重矩陣,可以實現加權操作。權重矩陣W和鄰接矩陣H是用圖卷積做行為識別工作時的重點研究對象。鄰接矩陣的示例如下圖:
圖5 鄰接矩陣示例
如果兩個節點相鄰,那么在矩陣中對應位置為1,否則為0。這是一種非?;A的定義,不同的行為識別工作會在此基礎上設計不同的變體定義。
概括的來說,圖卷積操作就是將每個節點的特征與其鄰居節點的特征加權平均后傳播到下一層。這種圖卷積操作稱為在空域上的圖卷積,有如下幾個特點:
1. 隨著層數的加深,每個節點能聚合到的特征越遠,也就是感受野越大。
2. 權重是共享的,不會具體到每個節點,這和傳統CNN相同。(直觀的理解,如果權重是因節點而不同的,那么一旦圖結構發生變化,權重就會立刻失效)
3.每個頂點的鄰居節點數可能不同,這導致鄰居節點多的頂點的特征值更顯著。
4.鄰接矩陣在計算時無法將節點自身的特征包含到聚合特征值中。
此外,為了克服空域圖卷積的缺點,學者們提出了譜域上的圖卷積,大概思想是利用圖的拉普拉斯矩陣和傅里葉變換來進行卷積操作。基于譜域的圖卷積目前在行為識別中應用較少,并且原理非常復雜,這里不做詳細介紹,有興趣的同學可以閱讀相關文章。
GCN在行為識別領域的應用
行為識別的主要任務是分類識別,對給定的一段動作信息(例如視頻,圖片,2D骨骼序列,3D骨骼序列),通過特征抽取分類來預測其類別。目前(18年過后)基于視頻和RGB圖片的主流方法是two-stream雙流網絡,而基于骨骼數據的主流方法就是圖卷積網絡了。
人體的骨骼圖本身就是一個拓撲圖,因此將GCN運用到動作識別上是一個非常合理的想法。但不同于傳統的圖結構數據,人體運動數據是一連串的時間序列,在每個時間點上具有空間特征,而在幀于幀之間則具有時間特征,如何通過圖卷積網絡來綜合性的發掘運動的時空特征,是目前的行為識別領域的研究熱點。筆者選取了自18年以來將GCN和行為識別相結合的代表性工作,用于討論并分析這些工作的核心思想,以及在此基礎上可以嘗試的idea。
[1]SpatialTemporal Graph Convolutional Networks for Skeleton-Based Action Recognition(AAAI,2018)(cv,88.3%,表示在NTU RGB+D數據集上cross-view驗證結果,下同)
主要貢獻:
1.將圖卷積網絡擴展到時空域,稱為時空圖卷積網絡(ST-GCN)。對于每個關節而言,不僅考慮它在空間上的相鄰關節,還要考慮它在時間上的相鄰關節,也就是說將鄰域的概念擴展到了時間上。
2.新的權重分配策略,文章中提到了三種不同的權重分配策略:
圖(b)唯一劃分,將節點和其1鄰域節點劃分到相同的子集中,使他們具有相同的label,自然也就具有相同的權重。這樣的話每個kernel中的權重實際上就是一個1*N的向量,N是節點的特征維數。
圖(c)按距離劃分,將節點自身劃分為一個子集,1領域劃分到一個子集。每個kernel的權重是一個2*N的向量。
圖(d)按節點與重心距離劃分,距離重心更近(相對于中心節點)的1鄰域節點為一個子集,距離重心更遠的1鄰域節點為一個子集,中心節點自身為1個子集。每個kernel的權重是一個3*N的向量。
經過測試發現第三種策略效果最好,這是因為第三種策略實際上也包含了對末肢關節賦予更多關注的思想,通常距離重心越近,運動幅度越小,同時能更好的區分向心運動和離心運動。
核心思想:
1.將圖卷積擴展到了時域上,從而更好的發掘動作的運動特征,而不僅僅是空間特征。
2.設計了新的權重分配策略,能更加差異化地學習不同節點的特征。
3.合理的運用先驗知識,對運動幅度大的關節給予更多的關注,潛在的體現在權重分配策略中。
[2]DeepProgressive Reinforcement Learning for Skeleton-based Action Recognition(CVPR,2018)(cv,89.8%)
主要貢獻:
1.首先通過深度漸進式強化學習(DPRL),用類似蒸餾的方法逐步得從輸入的動作幀序列中挑選最具識別力的幀,并忽略掉那些模棱兩可的幀,這是一種類似于lstem中的attention的機制,只不過注意力只放在了時域上。對應的網絡是frame distillation network(FDNet)。
2.將FDNet的輸出作為GCN的輸入,用于動作識別。不同于傳統的骨骼圖,本文還定義了一些特殊的骨骼連接,如下圖:
不僅包含了骨架的肢節連接(實線),為了發掘那些沒有直接連接的關節之間的關系,還定義了一些重要關節之間的間接連接(虛線)。例如系鞋帶,手部關節和腳部關節會有親密合作,但他們并沒有在骨骼圖中直接相連,距離較遠,需要經過多層的圖卷積兩個關節的特征才會相互傳播給對方,因此可以通過額外建立間接連接來發掘其中的關系。這個思想體現在鄰接矩陣上,就是將鄰接矩陣中一部分原本值為0的元素改為其他大于0的值。此外,觀察上圖你會發現,定義了虛線連接的那些關節大都是距離重心較遠的關節,這是因為在大部分動作中,距重心越遠的關節運動幅度越大,其蘊含的信息越多。
核心思想:
1.attention機制,在時域上選擇具有代表性,識別能力更強的幀。
2.對鄰接矩陣進行改進,不再是單一的0-1布爾矩陣,對沒有直接連接的節點之間也賦予一定的權重。
3.合理運用先驗知識,對末肢關節賦予更多的關注,體現在鄰接矩陣上。
[3]Part-based Graph ConvolutionalNetwork for Action Recognition(BMVC,2018)(cv,93.2)
主要貢獻:
1.用幾何特征(Geometric Features)和運動特征(Kinematic Features)來代替原始的空間三維坐標,作為每個節點的原始特征。如上圖中的圖(a)。
2.將人體骨架圖按一定的原則劃分為多個不同的子圖。對每個子圖分別進行圖卷積操作,然后再通過一個融合函數將結果融合。具體思想是:首先對于一個節點,計算該節點與所屬子圖內的鄰接節點的卷積值,我們稱之為基本卷積值。而對于所屬子圖外的鄰接節點(屬于相鄰的另一個子圖),首先計算該鄰接節點的基本卷積值,然后將二者的基本卷積值以一定的權重融合。這么做可以在很大程度上提高每個子圖邊緣節點的感受野(直接覆蓋到相鄰子圖),同時對于每個子圖的非邊緣節點(于其他子圖不相連),則需要多次傳播才能獲取到其他子圖節點的特征。
本文測試了三種不同的劃分策略,分別是:
圖(b):按距離重心的距離,分為中軸關節和末肢關節兩個部分。
圖(c):在圖(b)的基礎上進一步細化,按照關節的上下位置分為4個部分。
圖(d):在(c)的基礎上加入了左右關節的概念,按左右再細分為6個部分。
實驗證明,圖(c)的劃分方法結果最好,這是因為如果子圖數量過多,會導致特征值得傳播更困難,而數量過少,則無法差異化地對待不同類型的關節。
3.時空域卷積。不同于文章[1],本文采用的時空卷積策略是:先對每一幀,按照子圖特征融合的方法進行卷積,得到空域卷積結果,然后在將空域卷積結果作為時域上的特征值,再進行時域上的卷積。這么做實際上是擴大了計算量和復雜度,但能發掘的時空信息也更全面,不再局限于局部關節范圍。
核心思想:
1.定義了更加復雜的卷積策略,不再是簡單的鄰域特征融合,而是擴大了鄰域的概念,從而提高了節點的感受野。
2.采用了分圖策略,有助于挖掘局部范圍內的關節聯系。通常這種策略我們稱為part-based或part-aware。
3.定義了范圍更廣的時空卷積操作,代價是計算量更大了。
4.傳統方法使用關節原始的坐標信息作為GCN的輸入,而這里采用更具代表性的兩種不同類型特征作為輸入,可以進一步提高識別能力。
[4]Actional-Structural Graph Convolutional Networksfor Skeleton-based Action Recognition(arXiv,2019)(cv,94.2)
頂會的文章真的是一年比一年復雜,雖然說效果越做越好,但是特征工程和網絡結構都非常復雜,有時候純粹是靠堆復雜度來提升結果,作者并不能合理解釋自己的網絡結構,而且這種工作也很難follow
主要貢獻:
提出了AS-GCN,主要涉及了兩種網絡結構:Action-link和Structural-link。通過Action-link來發掘潛在的關節之間的聯系,通過structual-link來發掘骨骼圖的高階關系。
1.Action-Link提取關節連接信息
如圖(c),Action-Link實際上就是每個關節和其他所有關節的連接,通過一個編碼-解碼器來學習這些連接的權重,進而發掘關節之間的潛在聯系,如下圖:
具體細節(理解難度較大,如果不深入研究可以忽略):
上圖中左側黃色和紫色分別代表某一幀的原始的joints features和links features,將兩種類型的特征反復迭代更新(encoder),可以實現特征在關節和邊中的流動傳播,最終得到一個概率權重矩陣。將這個矩陣和該幀之前的所有時刻的幀信息結合起來,通過一個decoder來預測下一時刻的關節位置。這樣就能通過反向傳播的方式來不斷的迭代更新網絡參數,實現對網絡的訓練。在網絡得到初步的訓練后,將decoder去掉,只使用前半部分抽取A-link特征,用于動作分類任務的進一步訓練。
2.Structural-link擴大節點感受野
傳統的圖卷積網絡中,每個節點只將自己的信息傳播給鄰居節點,這會導致節點感受野較小,不利于獲取長距離的連接信息。通過對鄰接矩陣取一定次數的冪,可以擴大感受野,如圖(b)。
3.多任務處理
將A-Link和S-link加權結合起來作為GCN的輸入。將GCN和Temporal-GCN結合,得到AS-GCN,作為基本網絡(Backbone)。接不同的后端網絡,可以分別實現分類功能和預測功能,如下圖:
核心思想:
1.從原始的坐標信息中提取出A-links特征信息作為輸入特征,具有更高的可識別度,類似于工作[3]。
2.通過對鄰接矩陣取多次冪來擴大節點的感受域。
3.多個block疊加,通過提高復雜度來提高識別能力。
[5] An AttentionEnhanced Graph Convolutional LSTM Network for Skeleton-Based ActionRecognition(CVPR,2019)(cv,95%,目前最好)
主要貢獻:
不同于前面介紹的工作,本文沒有采用GCN,而是將骨骼圖作為LSTM的輸入,通過注意力增強型圖卷積LSTM網絡(AGC-LSTM)來抽取圖中具有的空間和時間特征,并且設計了專門的損失函數和特殊的學習方法。
核心思想:
探究不同的圖處理方式,LSTM具有很強的時序特征獲取能力,將其于圖結構結合起來,可以實現對時空特征的獲取。
[6] SemanticGraph Convolutional Networks for 3D Human Pose Regression(arXiv,2019)
本文的工作不是行為識別,而是姿態估計。但筆者認為其中用到的一些方法非常有道理,可以遷移到行為識別任務中。
主要貢獻:
在我們之前介紹的圖卷積工作中,GCN網絡需要學習的通常都只有基本的權重矩陣(上面公式中的W),而對于鄰接矩陣都是通過一些先驗知識提前設置好的,不會隨著網絡進行迭代變化。然而事實上,鄰接矩陣的本質也是權重,只不過通常這個權重是我們根據一些先驗的知識或者規律提前設置好的,因此,本文作者提出,如果能通過網絡來學習鄰接矩陣的權重,也就是公式中的M,是否能更好的做到對特征的抽取呢?
按照這個思路,網絡就需要學習兩個不同的權重,其中基本權重W在不同的圖卷積層有不同的值,那么鄰接矩陣的權重M也應該是在不同的層有不同的值??赡苡行』锇闀?,為什么不把M和W結合到一起呢?讀一讀原文,你就能找到答案了,這里只提供一種思路。
核心思想:
額外添加一個針對鄰接矩陣的權重,讓網絡自己去學習自己的鄰接矩陣。
總結
總的來說,在基于圖卷積的行為識別工作和類似的工作中,研究重點在以下幾個方面:
1.如何設計GCN的輸入,用一些更加具有識別能力的特征來代替空間坐標,作為網絡輸入。
2.如何根據問題來定義卷積操作,這是非常硬核的問題。
3.如何設計鄰接矩陣。
4.如何確定權重分配策略。
Idea可是無價之寶,不過還是分享出來,有興趣的同學可以和我一起探討。
從前面的文章中我們可以發現,鄰接矩陣和權重矩陣在GCN中非常重要,其中權重矩陣通常情況下是不隨圖的結構變化的,也就是說不僅在不同的節點之間共享,還會在不同的圖結構中共享,這樣GCN就能在不同結構的圖上訓練和測試。但是行為識別工作是比較特殊的,因為人的骨架通常不會發生變化,而且同一個數據集提供的骨架也是固定不變的,這樣的話,我們就不用考慮GCN的在不同結構上的通用性,轉而將權重直接指派到每個關節,也就是說,現在每個節點都有一個只屬于自己的權重,而不再依賴于label策略和其他節點共享。這么做能讓網絡能更加差異化地對待每一個關節,從而對那些具有更強識別能力的關節賦予更多的關注。此外,自動學習鄰接矩陣也是一個不錯的思路,只不過在代碼實現上面難度會比較大。
基于空域的圖卷積網絡目前在NTU RGB+D數據集[7]上已經達到了前所未有的高度,要想再有所提升恐怕會很困難,不過南洋理工大學rose lab已經發布了新的NTU 120+數據集[8],而且越來越多的工作聚焦于基于2D骨骼的姿態識別,與之相對應的Kinetic數據集也更有挑戰性,所以這個領域還是非常有研究價值和前景的。此外,譜圖卷積在近年也得到了很大的關注,但就目前來看筆者只發現了一篇與姿態識別有關的文章是使用了譜圖卷積的,筆者認為主要是譜圖卷積相對于空域圖卷積而言復雜程度太高,導致很多人望而卻步,但越是復雜的東西其性能相對也越好,因此在下一篇文章中,筆者將為大家詳細剖析譜圖卷積的原理,以及相關的行為識別工作!
從目前頂會文章的發展趨勢來看,工作都是越來越復雜的,如果考慮沖擊頂會,就要重點研究第1個和第2個思路,如果是次級一些的會議,就可以從第3和第4個思路入手。此外,盡量follow一些已經在頂會上發表了的,被同行檢查過的文章,以及有源代碼的文章,這樣可以有效降低工作難度。
-
圖卷積網絡
+關注
關注
0文章
8瀏覽量
1501 -
GCN
+關注
關注
0文章
5瀏覽量
2279
原文標題:入門學習 | 什么是圖卷積網絡?行為識別領域新星
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論