gcn
圖卷積,其實是基於graph-structure這種結構,不再是一維或2維的空間,本身就可以表示空間的圖結構。多張骨架skeleton可以共同組成一張圖graph
st_gcn有兩種類型的邊:(基於openpose提取的skeleton)
- 一種是符合關節自然連通性的空間邊,
- 另一種是跨越連續時間步長連接同一關節的時間邊。
並在此基礎上構造了多個時空圖卷積層,實現了信息在時空維度上的集成
這樣構成的同時具有空間關系邊和時間關系邊的“多幀skeleton組成1張graph_structure",經過多次GCN(論文中提及graph的維度變化是比如輸入多幀組成的1張graph----64-64-64-128-128-128-256-256-256這叫保持時間操作等長,即卷積核變多就會減少featuremap大小),最終得到高層特征,然后對這個高層特征用softmax分類得到動作類別。(當然也需要正確的置信度閾值)
問題:st-gcn一次的輸入幀數是不是固定的(可以不固定,因為全卷積可以控制輸出尺度;但是論文中應該是固定的,因為不固定1張graph的大小就變了),gcn采用了9層。
動作識別:
- 基於RGB圖像(精度不錯)---如Non-local Neural Networks,78% top1准確率,ksinetics
- 基於Two-stream(RGB+光流場)(精度不錯)---如TSN,I3D
- 基於骨架(精度差些)---如ST-GCN
比如kinetics大概都在10s左右的動作,也即300幀,那么提取視頻的特征就是(300,3, 18 ,nums_person)18:每個骨架的關鍵點及置信度,每幀只選了關鍵點自信度最高的兩人(這里做法也是為了固定最終的tensor尺度)。
一個action:多個不同動作幀的有序組合,因此一個action的識別也需要長期的信息交互。
當然也可以將動作識別直接用到動作檢測中,那就需要密集的動作識別。是不是可以有一個檢測過程,像Faster rcnn一樣可以給出region(frames) proposal,然后送入動作識別組件中去。
為什么yolo會火尤其在工業界?想想就明白了!
工業界和學術界對算法的不同追求:
-
工業界青睞的算法在學術界其實並不重視,一方面是因為開源的原因。
-
另一方面可以看到頂會的算法都不是注重速度的,通常用了很復雜的模塊和trick來提升精度。而且這些trick不是一般意義的trick了,是針對這個數據集的或者說針對糟糕檢測器的一些trick, 對於實際應用幾乎沒有幫助。
-
因此,在這里提醒一下,應該把重心往代碼能力上靠攏了,真正有價值的東西必然很少,沒必要焦慮生怕拉下來什么關鍵技術。
為什么同一個目標或者不同目標的提取后的特征不完全一樣也可以做跟蹤??閾值!DL中常用的就是閾值。
既然在工業界就要做工業界應該做的事!不是嗎?
跟蹤
基於skeleton的動作識別還需要結合poseTrack(alphapose中用的是PoseFLOW),保證動作識別時不同目標的pose不交叉。否則無法對單人時序建模。
人是典型的非剛體,因此大部分跟蹤問題(75%)都是研究人。
典型的跟蹤方法過程:
- 檢測(目標類別),
- 特征抽取(像NLP一樣給予目標嵌入向量),
- 數據關聯(對不同幀之間的目標嵌入作數據關聯,這步一般還是hand-crafted。)
對於人這種目標:
ReID是處理多目標跟蹤任務中軌跡因長時間遮擋或者漏檢而丟失的找回任務的必須模塊。
attention主要用來處理部分遮擋的問題。