人體行為識別的十八般武藝是否樣樣精通,本文給你最全的總結
導讀:行為識別是指通過分析視訊、深度感測器等資料,利用特定的演算法,對行人的行為進行識別、分析的技術。這項技術被廣泛應用在視訊分類、人機互動、安防監控等領域。行為識別包含兩個研究方向:個體行為識別與群體行為(事件)識別,而基於深度學習的人體行為識別成為了最近影象識別的標配。深度學習的方法包括基於無監督學習的行為識別、基於 卷積神經網路 的行為識別、基於迴圈神經網路以及一些拓展模型的方法,深思考小夏帶給你最前沿的演算法總結。
一 Two-stream
1. Two-Stream Convolutional Networks for Action Recognition in Videos
主頁連結:http://www.robots.ox.ac.uk/~vgg/software/two_stream_action/
14年提出雙流,利用幀影象和光流影象作為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
16年針對雙流融合問題進行研究,得到卷積結束之後在全連結之前融合效果比較好,左邊是單純在某一層融合,右邊是融合之後還保留一路網路,在最後再把結果融合一次。論文的實驗表明,後者的準確率要稍高。
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
16年香港中文大學針對雙流不能很好利用長時間資訊,提出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。
ofollow,noindex">深思考人工智慧
深思考人工智慧(iDeepWise Artificial Intelligence)是一家專注於類腦人工智慧與深度學習核心科技的AI公司。核心團隊由中科院自動化所、軟體所、計算所、微電子所等中科院院所、清華大學一線青年AI科學家(博士10名)與領域頂級專家、營銷專家組成。公司最為突出的技術是“多模態深度語義理解技術”,可同時理解文字、視覺影象背後的語義,主要面向場景為智慧醫療大健康和智慧汽車。
入門 深度學習 人機互動 LSTM 行為識別 神經網路
相關資料
Neural Network
(人工)神經網路是一種起源於 20 世紀 50 年代的監督式機器學習模型,那時候研究者構想了「感知器(perceptron)」的想法。這一領域的研究者通常被稱為「聯結主義者(Connectionist)」,因為這種模型模擬了人腦的功能。神經網路模型通常是通過反向傳播演算法應用梯度下降訓練的。目前神經網路有兩大主要型別,它們都是前饋神經網路:卷積神經網路(CNN)和迴圈神經網路(RNN),其中 RNN 又包含長短期記憶(LSTM)、門控迴圈單元(GRU)等等。深度學習是一種主要應用於神經網路幫助其取得更好結果的技術。儘管神經網路主要用於監督學習,但也有一些為無監督學習設計的變體,比如自動編碼器和生成對抗網路(GAN)。
來源:機器之心
Dimensionality reduction
降維演算法是將 p+1 個係數的問題簡化為 M+1 個係數的問題,其中 M<p。演算法執行包括計算變數的 M 個不同線性組合或投射(projection)。然後這 M 個投射作為預測器通過最小二乘法擬合一個線性迴歸模型。兩個主要的方法是主成分迴歸(principal component regression)和偏最小二乘法(partial least squares)。
來源:機器之心
Convolutional neural network
卷積神經網路(Convolutional Neural Network, CNN)是一種前饋神經網路,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,對於大型影象處理有出色表現。卷積神經網路由一個或多個卷積層和頂端的全連通層(對應經典的神經網路)組成,同時也包括關聯權重和池化層(pooling layer)。這一結構使得卷積神經網路能夠利用輸入資料的二維結構。與其他深度學習結構相比,卷積神經網路在影象和語音識別方面能夠給出更好的結果。這一模型也可以使用反向傳播演算法進行訓練。相比較其他深度、前饋神經網路,卷積神經網路需要考量的引數更少,使之成為一種頗具吸引力的深度學習結構。 卷積網路是一種專門用於處理具有已知的、網格狀拓撲的資料的神經網路。例如時間序列資料,它可以被認為是以一定時間間隔取樣的一維網格,又如影象資料,其可以被認為是二維畫素網格。
來源:Goodfellow, I.; Bengio Y.; Courville A. (2016). Deep Learning. MIT Press. 維基百科
Human-computer interaction
人機互動,是一門研究系統與使用者之間的互動關係的學問。系統可以是各種各樣的機器,也可以是計算機化的系統和軟體。人機互動介面通常是指使用者可見的部分。使用者通過人機互動介面與系統交流,並進行操作。小如收音機的播放按鍵,大至飛機上的儀表板、或是發電廠的控制室。
來源: 維基百科
Pooling
池化(Pooling)是卷積神經網路中的一個重要的概念,它實際上是一種形式的降取樣。有多種不同形式的非線性池化函式,而其中“最大池化(Max pooling)”是最為常見的。它是將輸入的影象劃分為若干個矩形區域,對每個子區域輸出最大值。直覺上,這種機制能夠有效的原因在於,在發現一個特徵之後,它的精確位置遠不及它和其他特徵的相對位置的關係重要。池化層會不斷地減小資料的空間大小,因此引數的數量和計算量也會下降,這在一定程度上也控制了過擬合。通常來說,CNN的卷積層之間都會週期性地插入池化層。
來源: cs231n
Stacking
堆疊泛化是一種用於最小化一個或多個泛化器的泛化誤差率的方法。它通過推導泛化器相對於所提供的學習集的偏差來發揮其作用。這個推導的過程包括:在第二層中將第一層的原始泛化器對部分學習集的猜測進行泛化,以及嘗試對學習集的剩餘部分進行猜測,並且輸出正確的結果。當與多個泛化器一起使用時,堆疊泛化可以被看作是一個交叉驗證的複雜版本,利用比交叉驗證更為複雜的策略來組合各個泛化器。當與單個泛化器一起使用時,堆疊泛化是一種用於估計(然後糾正)泛化器的錯誤的方法,該泛化器已經在特定學習集上進行了訓練並被詢問了特定問題。
來源: 3608005800231" target="_blank" rel="nofollow,noindex">Wolpert, D. H. (1992). Stacked generalization. Neural networks, 5(2), 241-259
Deep learning
深度學習(deep learning)是機器學習的分支,是一種試圖使用包含複雜結構或由多重非線性變換構成的多個處理層對資料進行高層抽象的演算法。 深度學習是機器學習中一種基於對資料進行表徵學習的演算法,至今已有數種深度學習框架,如卷積神經網路和深度置信網路和遞迴神經網路等已被應用在計算機視覺、語音識別、自然語言處理、音訊識別與生物資訊學等領域並獲取了極好的效果。
來源: LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. nature, 521(7553), 436.
Accuracy
分類模型的正確預測所佔的比例。在多類別分類中,準確率的定義為:正確的預測數/樣本總數。 在二元分類中,準確率的定義為:(真正例數+真負例數)/樣本總數
來源: sary?hl=zh-cn" target="_blank" rel="nofollow,noindex">Google ML Glossary
Long Short-Term Memory
推薦文章