2019年11月4日 星期一

.人體行為辨宴識的十八般武藝是否樣樣精通,本文給你最全的總結

20BN Hypermodel Demo: 
Real-Time Human Behavior Understanding with Deep Learning
深思考人工智能 作者 明明如夏

行為辨識是指透過分析影像、深度感測器等數據,利用特定的算法,對行人的行為進行辨識、分析的技術。這項技術被廣泛應用在影像分類、人機交互、安全監控等領域。行為辨識包含兩個研究方向:個體行為辨識與群體行為(事件)辨識,而基於深度學習的人體行為辨識,成為了最近圖像辨識的標配。深度學習的方法,包括基於無監督學習的行為辨識、基於卷積神經網路的行為辨識、基於循環神經網路,以及一些拓展模型的方法,深思考小夏帶給你最先進的算法總結。

一、 Two-stream
1. Two-Stream Convolutional Networks for Action Recognition in Videos

主頁鏈接http://www.robots.ox.ac.uk/~vgg/software/two_stream_action/


2014 年提出雙流,利用幀圖像和光流圖像作為 CNN 的輸入得到很好的效果。光流能夠描述出影像幀的運動資訊,一路是連續幾幀的光流疊起來,作為 CNN 的輸入;另一路就是普通的單幀的 CNN。其實就是兩個獨立的神經網路了,最後再把兩個模型的結果平均一下。

另外,它利用 multi-task learning,來克服數據量不足的問題。其實就是 CNN 的最後一層連到多個 softmax 的層上,對應不同的數據集,這樣就可以在多個數據集上,進行  multi-task learning。

2.Convolutional Two-Stream Network Fusion for Video Action Recognition
主頁鏈接:http://www.robots.ox.ac.uk/~vgg/software/two_stream_action/
Github鏈接 https://github.com/feichtenhofer/twostreamfusion


2016 年針對雙流融合問題進行研究,得到卷積結束之後,在全鏈接之前,融合效果比較好,左邊是單純在某一層融合,右邊是融合之後,還保留一路網路,在最後再把結果融合一次。論文的實驗表明,後者的準確率要稍高。

3.Action Recognition with Trajectory-Pooled Deep-Convolutional Descriptors
Github接:  https://wanglimin.github.io/tdd/index.html


論文考慮了時間維的特性,引進了軌跡控制策略來採樣,將手工設計的特徵和深度學習結合。首先多個空間尺度上,密集採樣特徵點,然後特徵點跟蹤得到軌跡形狀特徵,同時需要更有力的特徵來描述光流,Fisher Vector 方法進行特徵的編碼,最後 svm 採用 one-against-rest 策略訓練多類分類器。

4.Temporal Segment Networks: Towards Good Practices for Deep Action Recognition
Github接:  https://github.com/yjxiong/temporal-segment-networks


2016 年香港中文大學,針對雙流不能很好利用長時間資訊,提出 segment 思路,將影像分為前中後三段,每段經過雙流然後融合結果。其中港中文還做了很多其他工作,https://arxiv.org/abs/1507.02159 

5.Spatiotemporal Residual Networks for Video Action Recognition
Github链接:  https://feichtenhofer.github.io/


使用了兩個流,但是名字不是取為空間流和時間流,而是motion stream 和 appearance stream,但是本質不變,運動流接收的輸入依然是堆疊的多幀光流灰度圖片,而appearance stream 和原來的空間流一致,接收的輸入都是 RGB 圖片,但是這裡使用的,雙流的兩個流之間,是有數據交換的,而不是像 TSN 網路一樣,在最後的得分進行融。

單幀的潛力挖盡之後,自然就會有人上 3D Conv,Recurrent CNN、Grid RNN 之類的東西。雖然深度學習大法好,不過也得按基本法來,直接上 fancy 的模型有較大概率吃力不討好。


二 LSTM 結構 
Long Short Term 網路一般就叫 LSTM,它是一種 RNN 特殊的類型。LSTM 透過刻意的設計,來避免長期依賴問題。記住長期的資訊在實踐中是 LSTM 的默認行為,而非付出很大代價才能獲得的能力!


1.Fusing Multi-Stream Deep Networks for Video Classification
主頁鏈接https://arxiv.org/abs/1509.06086



文章先 CNN 提取特徵,包括 RGB 圖光流圖和語音頻譜圖,然後經過lstm最後融合。

2.Action Recognition using Visual Attention
頁鏈接:http://shikharsharma.com/projects/action-recognition-attention/

注意力模型終於來啦,人在看東西的時候,目光沿感興趣的地方移動,甚至仔細盯著部分細節看,然後再得到結論。

Attention 就是在網路中加入關注區域的移動、縮放機制,連續部分資訊的序列化輸入。採用 Attention 使用時間很深的lstm模型,學習視屏的關鍵運動部位。

Attention相關
http://www.cosmosshadow.com/ml/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/2016/03/08/Attention.html

3.RNN Fisher Vectors for Action Recognition and Image Annotation
主頁鏈接:http://www.eccv2016.org/files/posters/P-4A-30.pdf

文章典型的特徵提取,分類思路文章採用卷積網路,提取特徵之後進過 pca 降維,然後 Fisher Vector 編碼扔給 RNN 再 pca 降維,最後 svm 分類。Ucf101 上實驗結果到了 94%.


三 C3D


3D CNN 應用於一個視頻幀序列圖像集合,並不是簡單地把圖像集合作為多通道來看待輸出多個圖像(這種方式在卷積和池化後就丟失了時間域的信息,如圖6上), 而是讓卷積核擴展到時域,卷積在空域和時域同時進行,輸出仍然是有機的圖像集合。

1.Learning Spatiotemporal Features with 3D Convolutional Networks
頁鏈接:https://github.com/facebook/C3D
https://gist.github.com/albertomontesg/d8b21a179c1e6cca0480ebdf292c34d2


將影像分成多個,包含 16 幀的片段作為網路的輸入。第一個池化層 d=1,是為了保證時間域的資訊,不要過早地被融合,接下來的池化層的 d=2。有所卷積層的卷積核大小為 3x3x3,相對其他尺寸的卷積核,達到了精度最優,計算性能最佳。

2.Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset

https://deepmind.com/research/publications/quo-vadis-action-recognition-new-model-and-kinetics-dataset/


以往的 Conv3D 效果很差的原因之一,就是數據集太小,餵不飽網路。文章中的 3D 網路並不是隨機初始化的,而是將在 ImageNet 訓好的 2D 模型參數展開成 3D,之後再訓練。因此叫 Inflating 3D ConvNets。本文選用的網路結構為 BN-Inception (TSN也是),但做了一些改動。

如果 2D 的濾波器為 N*N 的,那麼 3D 的則為 N*N*N 的。具體做法是沿著時間維度重複 2D 濾波器權重 N 次,並且透過除以 N 將它們重新縮放。在前兩個池化層上,將時間維度的步長設為了 1,空間還是 2*2。

最後的池化層是 2*7*7。訓練的時候,將每一條影像採樣 64 幀作為一個樣本,測試時將全部的影像幀放進去最後average_score。除最後一個卷積層之外,在每一個都加上 BN 層和 Relu。對於 I3D 的效果為什麼好,作者解釋說 I3D 有 64 幀的感受野。可以更好地學習時序信息。再就是先用 ImageNet 的模型做了預訓練。


 I3D 這個網路結構的提出是很顯然,但用 2D 的 ImageNet 模型做預訓練,以及參數展開分配,還是挺具有創新性的,雖然在 TSN 中處理光流的第一個卷積層時,就有使用過類似的方法。這個實驗室真有能力,以往的數據集上效果很難提升,自己就搞了個大數據集。那個 Kinetics 的 I3D 模型是在 64 塊 GPU 上跑出來的。

四 其他

1.A Key Volume Mining Deep Framework for Action Recognition



現即便是 trimmed video (例如 UCF101 數據集),實際的動作發生的時空位置,也是非常不確定的:我們既不知道做動作的人,在什麼空間位置,也不知道真正的動作,發生的精確時間位置。更糟糕的是,和動作類別直接相關的,具有區分性的 (discriminative)key volume 往往佔比非常小,這在 flow stream 上表現得尤為突出。

於是我們就想能否先把這些 key volume 找出來,直接用以訓練分類器,這樣可以免受噪聲數據的干擾,更加聚焦在動作本質上。但實際上,在得到一個好的分類器之前,我們是很難自動地將 key volume 挑出來的。於是我們陷入了一個雞生蛋,蛋生雞的困境。

借鑒 Multiple Instance Learning 的思想,我們把雞和蛋的問題放在一起來優化解決:在訓練分類器的同時,挑選 key volume;並用挑出來的 key volume 更新分類器的參數。這兩個過程無縫地融合到了 CNN (卷積神經網絡)的網路訓練的 forward 和 backward 過程中,使得整個訓練過程非常優雅、高效。


2.Dynamic Image Networks for Action Recognition

https://github.com/hbilen/dynamic-image-nets

CNN 的輸入一般是圖片,針對輸入時影像,能否將影像壓縮成一張圖,以圖來表徵影像的資訊?答案是可疑的,針對對影像中的 RGB 圖像進行 Rank Pooling處理,以此作為 CNN 的輸入。雖然最終的效果不是特別好,但是想法很 nice。


沒有留言:

張貼留言