[ML]Human Activity Recognition人體動作/姿態(tài)識別-文獻綜述

1. 數(shù)據(jù)集

UCI: Human Activity Recognition Using Smartphones Data Set
手機傳感器陀螺儀數(shù)據(jù),數(shù)據(jù)集.
本例的數(shù)據(jù)來源于UCI(即UC Irvine,加州大學(xué)歐文分校)。數(shù)據(jù)由年齡在19-48歲之間的30位志愿者,智能手機固定于他們的腰部,執(zhí)行六項動作,即行走、上樓梯、下樓梯、坐、站立、躺下,同時在手機中存儲傳感器(加速度傳感器和陀螺儀)的三維(XYZ軸)數(shù)據(jù)。傳感器的頻率被設(shè)置為50HZ(即每秒50次記錄)。對于所輸出傳感器的維度數(shù)據(jù),進行噪聲過濾(Noise Filter),以2.56秒的固定窗口滑動,同時窗口之間包含50%的重疊,即每個窗口的數(shù)據(jù)維度是128(2.56*50)維,根據(jù)不同的運動類別,將數(shù)據(jù)進行標(biāo)注。傳感器含有三類:身體(Body)的加速度傳感器、整體(Total)的加速度傳感器、陀螺儀。

公開數(shù)據(jù)集整理 (Public datasets for activity recognition)
非常詳細的一個行為識別相關(guān)的數(shù)據(jù)集集合,包括描述與下載地址,以及引用該數(shù)據(jù)集的文章等,如果需要數(shù)據(jù)集先從這里掃一掃看看有沒需要的。

2. 人體動作識別 (HAR) - 基于視頻

2.1 人體動作識別架構(gòu)圖

Human Activity Recognition:

  • Single-layered approaches
    • Spatical-temporal approaches
      • Spatial-temporal volume
      • Trajectories
      • Spatial-temporal features
    • Sequential approaches
      • Exemplar-based
      • State-based
  • Hierarchal approaches
    • Statistical
    • Syntactic
    • Description-based

源自2011年 Aggarwal and Ryoo的建議。相對來說,已經(jīng)很老舊了,僅供了解參考
另,本來有個架構(gòu)圖的,簡書的圖片上傳功能瓦特了, 只能簡單手寫了。

2.2 目標(biāo)跟蹤

目標(biāo)跟蹤綜述
視覺目標(biāo)(單目標(biāo))跟蹤任務(wù)就是在給定某視頻序列初始幀的目標(biāo)大小與位置的情況下,預(yù)測后續(xù)幀中該目標(biāo)的大小與位置。這一基本任務(wù)流程可以按如下的框架劃分:
輸入初始化目標(biāo)框,在下一幀中產(chǎn)生眾多候選框(Motion Model),提取這些候選框的特征(Feature Extractor),然后對這些候選框評分(Observation Model),最后在這些評分中找一個得分最高的候選框作為預(yù)測的目標(biāo)(Prediction A),或者對多個預(yù)測值進行融合(Ensemble)得到更優(yōu)的預(yù)測目標(biāo)...

Polen: 最全面的一篇視覺跟蹤的綜述,雖然很多是參照其他文章的,但是整個視覺跟蹤的前因后果,發(fā)展歷程都有涉及,很詳細,很全面

機器之心:從傳統(tǒng)方法到深度學(xué)習(xí),目標(biāo)跟蹤方法的發(fā)展概述,陳正華,清華
目標(biāo)跟蹤是計算機視覺研究領(lǐng)域的熱點之一,過去幾十年以來,目標(biāo)跟蹤的研究取得了長足的發(fā)展。從 Meanshift、粒子濾波(Particle Filter)和 Kalman Filter 等經(jīng)典跟蹤方法,到基于檢測(Track By Detection)或相關(guān)濾波(Correlation Filter)的方法,到最近三年來出現(xiàn)的深度學(xué)習(xí)相關(guān)方法。每年在幾個主要跟蹤數(shù)據(jù)集上的競賽非常激烈,方法也越來越多。本期閱面科技資深研究員陳正華將以「目標(biāo)跟蹤方法的發(fā)展概述」為主題給大家分享更多的內(nèi)容。

  • 通用目標(biāo)的跟蹤

    • 經(jīng)典目標(biāo)跟蹤方法(產(chǎn)生式模型的方法)
      2010 年以前,目標(biāo)跟蹤領(lǐng)域大部分采用一些經(jīng)典的跟蹤方法,比如 Meanshift、Particle Filter 和 Kalman Filter,以及基于特征點的光流算法等。在深度學(xué)習(xí)和相關(guān)濾波的跟蹤方法出現(xiàn)后,經(jīng)典的跟蹤方法都被舍棄,這主要是因為這些經(jīng)典方法無法處理和適應(yīng)復(fù)雜的跟蹤變化,它們的魯棒性和準(zhǔn)確度都被前沿的算法所超越。

    • 檢測與跟蹤相結(jié)合的方法(基于鑒別式模型的方法)
      而基于鑒別式模型的方法是指利用分類來做跟蹤的方法,即把跟蹤的目標(biāo)作為前景,利用在線學(xué)習(xí)或離線訓(xùn)練的檢測器來區(qū)分前景目標(biāo)和背景,從而得到前景目標(biāo)的位置。雖然此時通用物體的檢測率還非常低(ImageNet 的檢測率不超過 20%),因為物體檢測主要基于手工設(shè)計的特征,但是,通過在新更新檢測器的模型和各種底層特征的提出,鑒別式跟蹤方法更能適應(yīng)跟蹤過程中的復(fù)雜變化,所以利用檢測來做跟蹤(Tracking By Detection)逐漸成為主流。

      • Surrey 大學(xué)博士生 Z.Kalal 提出的一種長效跟蹤的 TLD(Tracking-Learning-Detection)方法
      • 2013年VOT競賽的冠軍 Struck,利用結(jié)構(gòu)化 SVM 方法在線學(xué)習(xí)的一個分類器
      • 2014年VOT競賽的冠軍 DSST,一種改進的基于相關(guān)濾波的多尺度跟蹤方法
    • 基于相關(guān)濾波的跟蹤算法

      • 2012 年 P.Martins 提出的 CSK 方法(一種基于循環(huán)矩陣的核跟蹤方法,并且從數(shù)學(xué)上完美解決了密集采樣(Dense Sampling)的問題,利用傅立葉變換快速實現(xiàn)了檢測的過程)
      • 基于 HOG 特征的 KCF 方法
      • 考慮多尺度或顏色特征(Color Name 表)的方法
    • 基于深度學(xué)習(xí)的跟蹤方法

      • GOTURN 方法利用 ALOV300+視頻序列集和 ImageNet 檢測數(shù)據(jù)集訓(xùn)練了一個基于圖像對輸入的卷積網(wǎng)絡(luò),輸出在搜索區(qū)域內(nèi)相對于上一幀位置的變化,從而得到目標(biāo)在當(dāng)前幀上的位置
      • 牛津大學(xué)的 Luca Bertinetto 提出的端到端的跟蹤框架,從 SiameseFC 到今年的 CFNet
  • 特定目標(biāo)的跟蹤
    特定物體的跟蹤與前面介紹的方法不同,它更多地依賴對物體訓(xùn)練特定的檢測器。人臉跟蹤由于它的明顯特征,它的跟蹤就主要由檢測來實現(xiàn),比如早期的 Viola-Jones 檢測框架和當(dāng)前利用深度學(xué)習(xí)的人臉檢測或人臉特征點檢測模型。手勢跟蹤在應(yīng)用主要集中在跟蹤特定的手型,比如跟蹤手掌或者拳頭。設(shè)定特定的手型可以方便地訓(xùn)練手掌或拳頭的檢測器。

2.3 HAR + 機器學(xué)習(xí)

CNN: Deep Learning for Human Activity Recognition,2018
源碼: Github
數(shù)據(jù)集:UCI: Human Activity Recognition Using Smartphones Data Set
簡單使用cnn實現(xiàn)了對UCI數(shù)據(jù)集的分析, 基于Tensorflow and Pytorch.
That dataset contains 9 channels of the inputs: (acc_body, acc_total and acc_gyro) on x-y-z. So the input channel is 9.
Dataset providers have clipped the dataset using sliding window, so every 128 in .txt can be considered as an input. In real life, you need to first clipped the input using sliding window.
So in the end, we reformatted the inputs from 9 inputs files to 1 file, the shape of that file is [n_sample,128,9], that is, every windows has 9 channels with each channel has length 128. When feeding it to Tensorflow, it has to be reshaped to [n_sample,9,1,128] as we expect there is 128 X 1 signals for every channel.

知乎:基于深度學(xué)習(xí)的人體動作識別算法總結(jié),桑燊
文章主要列出了一些相關(guān)的數(shù)據(jù)集以及深度學(xué)習(xí)的方法包括基于無監(jiān)督學(xué)習(xí)的行為識別、基于卷積神經(jīng)網(wǎng)絡(luò)的行為識別、基于循環(huán)神經(jīng)網(wǎng)絡(luò)以及一些拓展模型的方法。當(dāng)然,這里面提到的很多模型都不是最新的技術(shù),還有很多最新的模型和技術(shù)都沒有包含進來。

本文首先提出一共17個人體姿態(tài)識別相關(guān)的數(shù)據(jù)集及其鏈接,然后給出9個深度學(xué)習(xí)在人體姿態(tài)識別領(lǐng)域的應(yīng)用模型,包括其論文提出的思路、模型結(jié)構(gòu)、實驗數(shù)據(jù)集和使用的加速硬件(如果有的話),本文不提供相關(guān)的實現(xiàn)方法。

  • 基于無監(jiān)督學(xué)習(xí)的行為識別

  • 基于卷積神經(jīng)網(wǎng)絡(luò)的行為識別

    • P-CNN: pose-based CNN features for action recognition
      將傳統(tǒng)的CNN拓展到具有時間信息的3D-CNN,在視頻數(shù)據(jù)的時間維度和空間維度上進行特征計算,在卷積過程中的特征圖與多個連續(xù)幀中的數(shù)據(jù)進行連接。簡單來說,3D-CNN就是將連續(xù)的視頻幀看作一個盒子,使用一個三維的卷積核進行卷積,通過這種結(jié)構(gòu),就能捕獲動作信息,使用7幀[公式]大小幀序列作為輸入,第一層為硬編碼的卷積核,然后進行兩次卷積和下采樣,最后得到一個128維的特征集合。
    • Two-stream convolutional networks for action recognition in videos
      提出一種稱為P-CNN的模型,使用單幀數(shù)據(jù)和光流數(shù)據(jù),從而捕獲運動信息。
      首先,要對視頻序列計算光流數(shù)據(jù)并且存儲為圖片的形式,對于給定的視頻信息和相對應(yīng)的骨骼位置,將RGB圖片和光流圖片分割為5類(左手、右手、上部分身體、下部分身體和整張圖片),將其大小均初始化為[公式],然后使用兩個不同的卷積網(wǎng)絡(luò),每個網(wǎng)絡(luò)都含有5個卷積層和3個全連層,然后通過聚合和歸一化,最后整合為一個P-CNN的特征集合,最后使用線性SVM進行訓(xùn)練。
    • Large-scale video classification with convolutional neural networks
      提出一種稱為Long-term Temporal Convolutions(LTC-CNN)的網(wǎng)絡(luò),在定長時間的視頻內(nèi)使用三維的CNN。
      相比于其他的將視頻切分為短時間的序列,該模型最大限度的保留了視頻的時空信息,網(wǎng)絡(luò)有5個時空卷積層和3個全連層,對于每個時空卷積核尺寸都為[公式],都采用ReLU函數(shù)和最大值池化層(max pooling,除了第一層為[公式],其他尺寸均為 [公式]),并且在卷積時采用1像素的邊緣填充。
  • 循環(huán)神經(jīng)網(wǎng)絡(luò)及擴展模型
    • Beyond short snippets: deep networks for video classification, 對應(yīng)有個PPT
      使用在imageNet上預(yù)訓(xùn)練過的CNN(AlexNet或者GoogleLeNet)提取幀級特征,再將幀級特征和提取到的光流特征輸入到池化框架或者LSTM進行訓(xùn)練,得到分類結(jié)果。 就是說使用LSTM對視頻進行建模,LSTM將底層CNN的輸出連接起來作為下一時刻的輸入,在UCF101數(shù)據(jù)庫上獲得了82.6% 的識別率。主要貢獻:
      1. 提出采用CNN來得到視頻級的全局描述,并且證明增大幀數(shù)能夠顯著提高分類性能。
      2. 通過在時序上共享參數(shù),參數(shù)的數(shù)量在特征聚合和LSTM架構(gòu)中都作為視頻長度的函數(shù)保持不變。
      3. 證明了光流圖像能夠提升分類性能并用實驗結(jié)果說明即使在光流圖像本身存在大量噪聲的情況下(如在Sports-1M數(shù)據(jù)集中),與LSTM結(jié)合后仍然對分類有很大幫助
    • Long-term recurrent convolutional networks for visual recognition and description
      提出了長時遞歸卷積神經(jīng)網(wǎng)絡(luò)(Long-term recurrent convolutional network,LRCN),這個網(wǎng)絡(luò)將CNN和LSTM結(jié)合在一起對視頻數(shù)據(jù)進行特征提取,單幀的圖像信息通過CNN獲取特征,然后將CNN的輸出按時間順序通過LSTM,這樣最終將視頻數(shù)據(jù)在空間和時間維度上進行特征表征,在UCF101數(shù)據(jù)庫上得到了82.92% 的平均識別率。
      該模型將卷積神經(jīng)網(wǎng)絡(luò)和LSTM相結(jié)合,輸入可以是一個單獨的圖片或者是一個視頻的一幀,將該輸入進行死絕特征提取,可以得到一個用來表示數(shù)據(jù)特征的定長向量,然后將其輸入到LSTM中學(xué)習(xí)到其中時間相關(guān)的信息,最后做出預(yù)測。
      該模型的特點是可以根據(jù)不同的輸入實現(xiàn)不同的的任務(wù):
      • 動作識別:序列輸入,固定輸出
      • 圖片描述:固定輸入,序列輸出
      • 視頻描述:輸入和輸入均是序列
    • NTU RGB+D: A Large Scale Dataset for 3D Human Activity Analysis
      提出一種稱為Part-Aware LSTM的模型,該模型主要是在針對使用Kinect采集的骨骼數(shù)據(jù)進行人體的姿態(tài)識別。
      該模型在LSTM的基礎(chǔ)上,允許有多個i、g和f門,但是只有一個o門,主要是將下圖所示的25個人體骨骼根據(jù)動作的相關(guān)性分成5個組:軀干、雙手和雙腿。讓這個5個組分別通過自己的i、g和f門,但是卻共享一個o門,即每一個時間序列上,豆?jié){這5個組各自的狀態(tài)存在細胞狀態(tài)中,這樣不僅可以得到人體關(guān)節(jié)在時間序列上的關(guān)聯(lián),也可以通過分組更好獲取人體運動的特征。

HMM Adaptation for Improving a Human Activity Recognition System
使用HMM,優(yōu)化HAR問題

IJCAI 2018 | ??低昈ral論文:分層式共現(xiàn)網(wǎng)絡(luò),實現(xiàn)更好的動作識別和檢測
官方論文:Co-occurrence Feature Learning from Skeleton Data for Action Recognition and Detection with Hierarchical Aggregation
動作識別和檢測正得到計算機視覺領(lǐng)域越來越多的關(guān)注。近日,海康威視在 arXiv 發(fā)布了在這方面的一項實現(xiàn)了新的最佳表現(xiàn)的研究成果,該論文也是 IJCAI 2018 Oral 論文。
本論文關(guān)注的是基于骨架的人體動作識別和檢測問題(圖 1)。骨架的相互作用和組合在描述動作特征上共同發(fā)揮了關(guān)鍵性作用。有很多早期研究都曾試圖根據(jù)骨架序列來設(shè)計和提取共現(xiàn)特征(co-occurrence feature),比如每個關(guān)節(jié)的配對的相對位置 [Wang et al., 2014]、配對關(guān)節(jié)的空間方向 [Jin and Choi, 2012]、Cov3DJ [Hussein et al., 2013] 和 HOJ3D [Xia et al., 2012] 等基于統(tǒng)計的特征。另一方面,帶有長短期記憶(LSTM)神經(jīng)元的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)也常被用于建模骨架的時間序列 [Shahroudy et al., 2016; Song et al., 2017; Liu et al., 2016]。盡管 LSTM 網(wǎng)絡(luò)就是為建模長期的時間依賴關(guān)系而設(shè)計的,但由于時間建模是在原始輸入空間上完成的,所以它們難以直接從骨架上學(xué)習(xí)到高層面的特征 [Sainath et al., 2015]。而全連接層則有能力聚合所有輸入神經(jīng)元的全局信息,進而可以學(xué)習(xí)到共現(xiàn)特征。[Zhu et al., 2016] 提出了一種端到端的全連接深度 LSTM 網(wǎng)絡(luò)來根據(jù)骨架數(shù)據(jù)學(xué)習(xí)共現(xiàn)特征。

Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition, CVPR2018 
來自清華的增強學(xué)習(xí)
這篇文章開篇就指出,我們的模型是要從人體動作的序列中選取出最informative的那些幀,而丟棄掉用處不大的部分。但是由于對于不同的視頻序列,挑出最有代表性的幀的方法是不同的,因此,本文提出用深度增強學(xué)習(xí)來將幀的選擇模擬為一個不斷進步的progressive process。

這篇文章處理的問題是skeleton based action recognition
可以看出整個模型大體分為兩個部分,F(xiàn)DNet和GCNN。其中FDNet指的是frame distillation network,幀蒸餾網(wǎng)絡(luò),形象的將選取最有用的幀的過程用蒸餾來形容。FDNet得到有用的幀之后就要輸入到GCNN,也就是graph convolutional neural network里面進行g(shù)raph convolution,完成動作識別。

強化學(xué)習(xí)是通過優(yōu)化選擇actions的policy來最大化agent從environment所獲得的rewards。文章中說至今為止,在動作識別領(lǐng)域,增強學(xué)習(xí)的應(yīng)用還不多。

...
最后作者講了如何將FDNet和GCNN結(jié)合起來,首先,從graph的序列中均勻的選出一些frames,用它們來訓(xùn)練GCNN,之后將GCNN的參數(shù)固定,再來訓(xùn)練FDNet,而訓(xùn)練過的FDNet又能夠精細調(diào)節(jié)GCNN, 就這樣兩者互幫互助。

A New Representation of Skeleton Sequences for 3D Action Recognition CVPR2017
骨架動作識別, 參考博客,本文的主要思想是將3d骨架坐標(biāo)轉(zhuǎn)換成圖片,然后再用卷積網(wǎng)絡(luò)提取特征,時域上的特征通過特殊的卷積核來提取,以達到時序記憶的目的。

Investigation of Different Skeleton Features for CNN-based 3D Action Recognition 2017
3D骨架識別問題。
將節(jié)點之間的距離變成圖片,將線和線之間的夾角變成圖片,再送入CNN網(wǎng)絡(luò)提取特征

基于深度學(xué)習(xí)的Action Recognition(行為識別)文檔整理
Action Recognition的研究方向(發(fā)論文的方向)分為三大類。

  • Structure
    這里的結(jié)構(gòu)主要指網(wǎng)絡(luò)結(jié)構(gòu)。目前,主流的結(jié)構(gòu)都是基于 Two-Stream Convolutional Networks 和 C3D 發(fā)展而來,所以這一塊內(nèi)容也主要討論這兩種結(jié)構(gòu)的各種演化中作為benchmark的一些結(jié)構(gòu)

    • Temporal Segment Networks: Towards Good Practices for Deep Action Recognition【ECCV2016】
      該論文繼承了雙流網(wǎng)絡(luò)的結(jié)構(gòu),但為了解決long-term的問題,作者提出使用多個雙流網(wǎng)絡(luò),分別捕捉不同時序位置的short-term信息,然后進行融合,得到最后結(jié)果。
    • Deep Local Video Feature for Action Recognition 【CVPR2017】
      TSN改進版本之一。改進的地方主要在于fusion部分,不同的片段的應(yīng)該有不同的權(quán)重,而這部分由網(wǎng)絡(luò)學(xué)習(xí)而得,最后由SVM分類得到結(jié)果。
    • Temporal Relational Reasoning in Videos
      TSN改進版本二。
      這篇是MIT周博磊大神的論文,作者是也是最近提出的數(shù)據(jù)集 Moments in time 的作者之一。
      該論文關(guān)注時序關(guān)系推理。對于哪些僅靠關(guān)鍵幀(單幀RGB圖像)無法辨別的動作,如摔倒,其實可以通過時序推理進行分類。
      除了兩幀之間時序推理,還可以拓展到更多幀之間的時序推理。
      通過對不同長度視頻幀的時序推理,最后進行融合得到結(jié)果。
    • I3D-DeepMind
      即基于inception-V1模型,將2D卷積擴展到3D卷積。
    • T3D
      該論文值得注意的,一方面是采用了3D densenet,區(qū)別于之前的inception和Resnet結(jié)構(gòu);另一方面,TTL層,即使用不同尺度的卷積(inception思想)來捕捉訊息。
    • P3D-MSRA
      改進ResNet內(nèi)部連接中的卷積形式。然后,超深網(wǎng)絡(luò),一般人顯然只能空有想法,望而卻步。
    • Temporal Pyramid Pooling:End-to-end Video-level Representation Learning for Action Recognition
      Pooling。時空上都進行這種pooling操作,旨在捕捉不同長度的訊息。
    • TLE: Deep Temporal Linear Encoding Networks
      TLE這篇文章認為,在一段視頻中,連續(xù)幀之間的移動通常很微小,然后參考到IDT算法中對特征點密集采樣并且使用光流來跟蹤它們能夠得到比較好的video representation,因此提出需要有一個對所有的幀進行綜合編碼而得到的video representation,從而才能夠捕捉到長時間的動態(tài)過程。
      也就是說,TLE首先對一段視頻,切割成K段,然后對每一段,讓它通過一個CNN提取到CNN features,當(dāng)然這K個CNN是權(quán)值共享的,然后對這K段的CNN features,首先用一個融合操作把它們糅合成一個features,然后對這融合后的features進行編碼從而得到最終的video representation。
      該模型建立TSN基礎(chǔ)上,在輸入的特征圖上進行時序推理。增加三層全連接層學(xué)習(xí)不同長度視頻幀的權(quán)重,及上圖中的函數(shù)g和h。
  • Inputs
    輸入一方面指輸入的數(shù)據(jù)類型和格式,也包括數(shù)據(jù)增強的相關(guān)操作。
    雙流網(wǎng)絡(luò)中,空間網(wǎng)絡(luò)通道的輸入格式通常為單RGB圖像或者是多幀RGB堆疊。而空間網(wǎng)絡(luò)一般是直接對ImageNet上經(jīng)典的網(wǎng)絡(luò)進行finetune。雖然近年來對motion信息的關(guān)注逐漸上升,指責(zé)行為識別過度依賴背景和外貌特征,而缺少對運動本身的建模,但是,事實上,運動既不是名詞,也不應(yīng)該是動詞,而應(yīng)該是動詞+名詞的形式,例如:play+basketball,也可以是play+football。所以,個人認為,雖然應(yīng)該加大的時間信息的關(guān)注,但不可否認空間特征的重要作用。
    空間網(wǎng)絡(luò)主要捕捉視頻幀中重要的物體特征。目前大部分公開數(shù)據(jù)集其實可以僅僅依賴單圖像幀就可以完成對視頻的分類,而且往往不需要分割,那么,在這種情況下,空間網(wǎng)絡(luò)的輸入就存在著很大的冗余,并且可能引入額外的噪聲。

    • A Key Volume Mining Deep Framework for Action Recognition 【CVPR2016】
      雖然上面的方法可以集成到一個網(wǎng)絡(luò)中訓(xùn)練,但是思路是按照圖像分類算法RCNN中需要分步先提出候選框,挑選出關(guān)鍵幀。既然挑選前需要輸入整個視頻,可不可以省略挑選這個步驟,直接在卷積/池化操作時,重點關(guān)注那些關(guān)鍵幀,而忽視那些冗余幀呢?去年就有人提出這樣的解決方法。

    • AdaScan: Adaptive Scan Pooling in Deep Convolutional Neural Networks for Human Action Recognition in Videos 【CVPR2017】
      注:AdaScan的效果一般,關(guān)鍵幀的質(zhì)量比上面的Key Volume Mining效果要差一點。不過模型整體比較簡單。
      輸入方面,空間網(wǎng)絡(luò)目前主要集中在關(guān)鍵幀的研究上。而對于temporal通道而言,則是更多人的關(guān)注焦點。首先,光流的提取需要消耗大量的計算力和時間(有論文中提到幾乎占據(jù)整個訓(xùn)練時間的90%);其次,光流包含的未必是最優(yōu)的的運動特征。

    • Hidden Two-Stream Convolutional Networks for Action Recognition
      該論文主要參考了flownet,即使用神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)生成光流圖,然后作為temporal網(wǎng)絡(luò)的輸入。該方法提升了光流的質(zhì)量,而且模型大小也比flownet小很多。有論文證明,光流質(zhì)量的提高,尤其是對于邊緣微小運動光流的提升,對分類有關(guān)鍵作用。
      另一方面,該論文中也比較了其余的輸入格式,如RGB diff。但效果沒有光流好。

  • Connection
    這里連接主要是指雙流網(wǎng)絡(luò)中時空信息的交互。一種是單個網(wǎng)絡(luò)內(nèi)部各層之間的交互,如ResNet/Inception;一種是雙流網(wǎng)絡(luò)之間的交互,包括不同fusion方式的探索,目前值得考慮的是參照ResNet的結(jié)構(gòu),連接雙流網(wǎng)絡(luò)。
    這里主要討論雙流的交互。
    • Spatiotemporal Multiplier Networks for Video Action Recognition【CVPR2017】
      網(wǎng)絡(luò)的結(jié)構(gòu)如上圖??臻g和時序網(wǎng)絡(luò)的主體都是ResNet,增加了從Motion Stream到Spatial Stream的交互。論文還探索多種方式。
    • Spatiotemporal Pyramid Network for Video Action Recognition 【CVPR2017】
      論文作者認為,行為識別的關(guān)鍵就在于如何很好的融合空間和時序上的特征。作者發(fā)現(xiàn),傳統(tǒng)雙流網(wǎng)絡(luò)雖然在最后有fusion的過程,但訓(xùn)練中確實單獨訓(xùn)練的,最終結(jié)果的失誤預(yù)測往往僅來源于某一網(wǎng)絡(luò),并且空間/時序網(wǎng)絡(luò)各有所長。論文分析了錯誤分類的原因:空間網(wǎng)絡(luò)在視頻背景相似度高的時候容易失誤,時序網(wǎng)絡(luò)在long-term行為中因為snippets length的長度限制容易失誤。那么能否通過交互,實現(xiàn)兩個網(wǎng)絡(luò)的互補呢?
      該論文重點在于STCB模塊,詳情請參閱論文。交互方面,在保留空間、時序流的同時,對時空信息進行了一次融合,最后三路融合,得出最后結(jié)果。
    • Attentional pooling for action recognition 【NIPS2017】
    • ActionVLAD for video action classification 【CVPR2017】
      這兩篇論文從pooling的層面提高了雙流的交互能力,這兩篇筆者還在看,有興趣的讀者請自行參閱論文。后期會附上論文的解讀。
    • Deep Convolutional Neural Networks with Merge-and-Run Mappings
      這篇論文也是基于ResNet的結(jié)構(gòu)探索新的雙流連接方式。

TURN TAP: Temporal Unit Regression Network for Temporal Action Proposals
有一篇該論文的讀書筆記:Model for Video Understanding
模型結(jié)果不復(fù)雜,最大亮點是:Unit-level Regression。模型結(jié)構(gòu)見下圖,雖然我覺得看圖并不直觀。
前的工作集中在frame-level上,即直接回歸得到邊界的屬性,例如直接得到起/終點的frame index,不過主流的普遍是center frame以及l(fā)ength。本文提供了一種新的思路,relax回歸的精度,在unit-level上回歸,結(jié)果發(fā)現(xiàn),unit-level上不僅更容易訓(xùn)練,效果也更好。Unit-level其實也很簡單,就是連續(xù)幀,本文里Unit length設(shè)置為{16,32}。

Cascaded Boundary Regression for Temporal Action Detection
有一篇該論文的讀書筆記:Model for Video Understanding
這篇文章主要是前一篇文章的改進,思路很簡單,既然回歸網(wǎng)絡(luò)可以修正邊界,那么級聯(lián)的回歸網(wǎng)絡(luò)應(yīng)該會有更好的效果,即進行多次回歸修正。
模型的主要結(jié)構(gòu)還是兩部分,action proposal和action classification。在每一個部分中,增加級聯(lián)邊界回歸網(wǎng)絡(luò)。

3. 人體動作識別 (HAR) - 基于傳感器

3.1 移動端傳感器信息

CoreMotion (加速儀與陀螺儀)
CoreMotion (加速儀與陀螺儀),加速儀可以檢測三維空間中的加速度 ,坐標(biāo)對應(yīng)如下
deviceMotion
包含下面四種數(shù)據(jù):

  • attitude(類型:CMAttitude)
    • 返回設(shè)備的方位信息,包含roll 、pitch、yaw三個歐拉角的值
    • roll: 設(shè)備繞 Z 軸轉(zhuǎn)過的角度
    • pitch: 設(shè)備繞 X 軸轉(zhuǎn)過的角度
    • yaw: 設(shè)備繞 Y 軸轉(zhuǎn)過的角度
  • rotationRate(類型:CMRotationRate)
    • 經(jīng)過濾波操作之后的陀螺儀數(shù)據(jù),即 靜止時,三個方向的轉(zhuǎn)動速度接近于0;
  • gravity(類型:CMAcceleration)
    • 返回重力對設(shè)備在三個方向上的加速度
    • 即重力加速度矢量在當(dāng)前設(shè)備的參考坐標(biāo)系中的表達,開發(fā)中不再需要通過濾波來提取這個信息
  • userAcceleration(類型:CMAcceleration)
    • 返回用戶對設(shè)備在三個方向上的加速度
    • 不再需要濾波,但根據(jù)程序需求而加的濾波算法可以保留
  • magneticField:該屬性返回校準(zhǔn)后的磁場信息
    • 該屬性值是一個CMCalibr atedMagneticField結(jié)構(gòu)體變量
    • CMCalibratedMagneticField類型的變量包括field和accuracy兩個字段
    • 其中field代表X、Y、Z、軸上的磁場強度,accuracy則代表磁場強度的精度;

CoreMotion框架(一)—— 基礎(chǔ)理論
CoreMotion框架, iOS參數(shù)介紹
iOS中的一個核心運動框架CoreMotion.framework。這個框架,主要是為了訪問加速度計和陀螺儀的相關(guān)數(shù)據(jù)。 它不僅僅提供給你獲得實時的加速度值和旋轉(zhuǎn)速度值,更重要的是,蘋果在其中集成了很多算法,可以直接給你輸出把重力加速度分量剝離的加速度,省去你的高通濾波操作,以及提供給你一個專門的設(shè)備的三維位置信息。

cocoachina:詳說CMDeviceMotion
基礎(chǔ)的接口API介紹,算是比較全面,但是深度一般

3.2 行為序列的特征提取

行為識別(時間序列)特征提取代碼
語言: matlab + C語言
多種傳感器可以用于行為識別,如最常用的加速度計、陀螺儀、藍牙與WiFi等。針對藍牙與WiFi的特征提取,要根據(jù)具體的問題情況來進行。通常來說,加速度和陀螺儀的數(shù)據(jù)是最常用的。因此,我們就以這兩種信號為例,提供針對它們的特征提取代碼。

加速度和陀螺儀都是典型的時間序列信號,在行為識別中,通常我們都會提取一些統(tǒng)計信息(又稱為時域)和頻率信息(又稱為頻域)。兩部分合起來,就可以用于行為識別了。從經(jīng)驗出發(fā),能夠識別人體常見的大多數(shù)運動行為。

也可以用本代碼進行一些時間序列的特征提取,用法是一樣的

關(guān)于時域和頻域具體特征的計算方法請見在知乎的這個回答:https://www.zhihu.com/question/41068341/answer/89926233

行為識別常用的特征提取方法
提取加速度:

  • 滑動窗口
    窗口大小,滑動步長
  • 合成加速度
    常規(guī)采集的都是三個方向的加速度,在處理過程中,會用到三軸加速度合成一個加速度(為了減少計算性)
  • 時域特征
    均值,標(biāo)準(zhǔn)差,眾數(shù),MAX/MIN, Range,相關(guān)系數(shù),信號幅值面積SMA
  • 頻域特征
    直流分量,幅度,功率譜密度PSD

3.3 卡爾曼濾波(Kalman Filter)

官方論文:A New Approach to Linear Filtering and Prediction Problems
卡爾曼全名Rudolf Emil Kalman,匈牙利數(shù)學(xué)家,1930年出生于匈牙利首都布達佩斯。1953,1954年于麻省理工學(xué)院分別獲得電機工程學(xué)士及碩士學(xué)位。1957年于哥倫比亞大學(xué)獲得博士學(xué)位。
我們現(xiàn)在要學(xué)習(xí)的卡爾曼濾波器,正是源于他的博士論文和1960年發(fā)表的論文《A New Approach to Linear Filtering and Prediction Problems》(線性濾波與預(yù)測問題的新方法)

理解Kalman濾波的使用
Kalman濾波是一種線性濾波與預(yù)測方法,原文為:A New Approach to Linear Filtering and Prediction Problems。文章推導(dǎo)很復(fù)雜,看了一半就看不下去了,既然不能透徹理解其原理,但總可以通過實驗來理解其具體的使用方法。
  Kalman濾波分為2個步驟,預(yù)測(predict)和校正(correct)。預(yù)測是基于上一時刻狀態(tài)估計當(dāng)前時刻狀態(tài),而校正則是綜合當(dāng)前時刻的估計狀態(tài)與觀測狀態(tài),估計出最優(yōu)的狀態(tài)。

function filter = Kalman(filter)
    %predict
    predict_x = filter.A * filter.x + filter.B * filter.u;
    filter.P = filter.A * filter.P * filter.A' + filter.Q;

    %correct
    filter.K = filter.P * filter.H' / (filter.H * filter.P * filter.H' + filter.R);
    filter.x = predict_x + filter.K * (filter.z - filter.H * predict_x);
    filter.P = filter.P - filter.K * filter.H * filter.P;
end

在matlab中,kalman濾波實際上就是上面那5個公式,而難點卻是在測試代碼中針對不同問題各個變量的初始化上。

...

根據(jù)上面的實驗結(jié)果,可以看出Kalman濾波應(yīng)用中的幾個問題:

  1. 模型建立的正確性從根本上決定了濾波效果的正確性。
    上面使用物體靜止模型進行濾波,結(jié)果完全不對,而使用勻速運動模型則能達到較好的效果。從根本上講,上面的數(shù)據(jù)也不是勻速運動的,為何結(jié)果會基本正確?看看第一個使用靜止模型的濾波結(jié)果,雖然我們假定了物體是靜止的,但由于觀測數(shù)據(jù)的作用,kalman濾波結(jié)果也會有相應(yīng)的運動而不是完全靜止,也就是說濾波器在不停地修正這個狀態(tài),而在勻速運動模型中,物體的速度我們認為不變,但同樣地kalman濾波器也會不停地修正這個速度,濾波器中計算的速度實質(zhì)的偏離了真實速度的,因此最終也會有相應(yīng)的偏差,不過這個偏差在我們?nèi)菰S范圍內(nèi),也就可以大膽使用了。
    如果能確定物體是勻變速直線運動,使用相應(yīng)帶加速度的模型會得到更準(zhǔn)確的效果。但是越嚴格的模型其適用范圍也相應(yīng)越小。
  2. 影響濾波結(jié)果平滑性的因素是cR/cQ
    影響濾波結(jié)果平滑性的因素是cR/cQ,這個值反映了我們對于預(yù)測和觀測值的信任程度;其值越大則越相信預(yù)測結(jié)果,濾波結(jié)果平滑性好;反之則越相信觀測結(jié)果,濾波結(jié)果越偏向于觀測值。一般我們使用kalman濾波器是為了能平滑數(shù)據(jù)的波動,因此應(yīng)盡量保證cR/cQ稍大,上面的測試結(jié)果該值在1e4以上數(shù)據(jù)較為平滑

我所理解的卡爾曼濾波,羅杰,簡書

Polen: 非常透徹的講解, 偏教學(xué)引導(dǎo)性的講解,包括一些數(shù)學(xué)推到和matlab實現(xiàn)

卡爾曼濾波在我當(dāng)學(xué)生的時候就用過,但是當(dāng)年我似乎就是套公式,沒有理解其精髓,加之時間久了有點模糊,突然需要指導(dǎo)學(xué)生使用,有了強烈的陌生感覺,不得不逼自己再一次撿起。自己學(xué)會和教會別人是學(xué)習(xí)的兩個層次,為了自我提高,也為了更好得指導(dǎo)學(xué)生。于是,我又翻出自己當(dāng)年寫的算法以及在網(wǎng)上找了些大神寫的資料,進行融會貫通,總結(jié)提煉,希望稍微有點大學(xué)概率論的人能夠看懂此文并熟練使用。

講解了隨機變量和概率,那么為啥要引入卡爾曼濾波呢??柭鼮V波適用于估計一個由隨機變量組成的動態(tài)系統(tǒng)的最優(yōu)狀態(tài)。即便是觀測到的系統(tǒng)狀態(tài)參數(shù)含有噪聲,觀測值不準(zhǔn)確,卡爾曼濾波也能夠完成對狀態(tài)真實值的最優(yōu)估計。

kalman濾波(一)---對各參數(shù)的理解

這篇文章從編程的角度,定義了kalman濾波的各項參數(shù),并基于C實現(xiàn)了一個demo版本。

  1. 卡爾曼濾波中的真實值,測量值,預(yù)測值,估計值怎么區(qū)分?
  2. 卡爾曼濾波遞歸過程
  3. 卡爾曼濾波器的工作過程
    //標(biāo)量卡爾曼濾波
typedef struct {
    float x;  // 系統(tǒng)的狀態(tài)量
    float A;  // x(n)=A*x(n-1)+u(n),u(n)~N(0,q)
    float H;  // z(n)=H*x(n)+w(n),w(n)~N(0,r)
    float q;  // 預(yù)測過程噪聲協(xié)方差
    float r;  // 測量過程噪聲協(xié)方差
    float p;  // 估計誤差協(xié)方差
    float gain;//卡爾曼增益
}KalmanStructTypedef;

Discrete Kalman Optimal Estimator,2013
對應(yīng)的github: Kalman.scala

polen: 這是書 <Scala For Mahine Learning> 的上的內(nèi)容,此章節(jié)是基于kalman 實現(xiàn)預(yù)測的scala 代碼,但是運行有bug,跑不起來

This post is an introduction to the Kalman optimal filter using the Scala programming language as implementation. The Kalman filter is widely used in signal processing and statistical analysis to quantify or estimate noise created by a process and noise generated by measurement devices.

Kalman Filter at the age of big data: programming in Spark/Scala,2017
Scala實現(xiàn)Kalman濾波
在大數(shù)據(jù)時代如何通過kalman filter進行星際導(dǎo)航. 先介紹了下kalmanfilter是什么,然后將在導(dǎo)航系統(tǒng)中根據(jù)觀察值和觀察狀態(tài)使用kalmanfilter。偏向于科普文為主,沒有太多數(shù)學(xué)推到,大部分假設(shè)以高斯分布為主。

Kalman-and-Bayesian-Filters-in-Python
卡爾曼貝葉斯濾波器的系統(tǒng)介紹,基于python notebook實現(xiàn)

Multidimensional Kalman Filter for a Constant Acceleration Model (CA)
基于卡爾曼濾波,計算乒乓球的運動軌跡,和波爾打乒乓

Effective Adaptive Kalman Filter for MEMS-IMU/Magnetometers Integrated Attitude and Heading Reference Systems
西工大的幾個學(xué)生寫的基于卡爾曼濾波進行姿態(tài)識別, 大部分以數(shù)學(xué)推到為主。

3.4 姿態(tài)識別/姿態(tài)解算

官方:Open source IMU and AHRS
開源:AHRS的官方源碼(c,c#,matlab)

Pixhawk 源碼分析系列-姿態(tài)解算,創(chuàng)客制造
經(jīng)過近一段時間的研究,主要是關(guān)于多旋翼無人機姿態(tài)解算算法的研究,開源PX4源代碼里面默認使用的是基于mahony的互補濾波算法(explicit complement filter)進行姿態(tài)解算的;還有一套備用姿態(tài)解算算法是基于kalman的EKF(extended kalman filter);然后呢,其實還有一套PX4源代碼中尚未涉及的基于madgwick的梯度下降算法(gradient descent)。

A Python implementation of Madgwick's IMU and AHRS algorithm
python實現(xiàn)的AHRS算法版本,主要是四元數(shù)的計算

Indirect Kalman Filter for 3D Attitude Estimation
純粹數(shù)學(xué)推導(dǎo)
Indirect Kalman Filter for 3D Attitude Estimation
Nikolas Trawny and Stergios I. Roumeliotis Department of Computer Science & Engineering University of Minnesota
Multiple Autonomous Robotic Systems Laboratory, TR-2005-002
March 2005

Python Attitude Heading and Reference System,2014-07-23
一個python的ahrs的源代碼,沒仔細看,感覺啥都有一點

IMU Data Fusing: Complementary, Kalman, and Mahony Filter
姿態(tài)識別常用的幾種方法對比
在IMU數(shù)據(jù)融合來得到準(zhǔn)確姿態(tài)方面的工作已經(jīng)有很多大牛研究過,主要有:Colton,Bizard,Starlino,Lauszus,Mahony,Madgwick。他們的研究成果已經(jīng)成為了標(biāo)準(zhǔn)的參考。這么多的算法中有相似也有不同之處,容易給人造成混亂。這里就以6軸傳感器的IMU來討論他們之間的區(qū)別和相似。
這里討論三個最基本的濾波器方法,互補濾波器,卡爾曼濾波器(線性的),Mahony&Madgwick 濾波器。分為五塊部分來敘述,第一部分是關(guān)于基本的知識,第二部分是關(guān)于1維IMU數(shù)據(jù)融合(1階,沒有估計陀螺儀誤差);第三部分是關(guān)于1維IMU數(shù)據(jù)融合(2階,帶有陀螺儀誤差估計);第四部分帶有Mahony濾波器的3維IMU數(shù)據(jù)融合;第五部分是關(guān)于3維濾波器的展望。最后附帶一些算法的實現(xiàn)步驟。

3.5 傳感器 + 機器學(xué)習(xí)

3.5.1 移動端 + 機器學(xué)習(xí)

用智能手機做行為識別文章總結(jié)
列舉了13年到15年用手機做行為識別相關(guān)的論文

Motion Gesture Detection Using Tensorflow on Android
基于android的傳感器+tensorflow神經(jīng)網(wǎng)絡(luò),識別用戶是左滑還是右滑動作
這里有中文翻譯版本,其對應(yīng)android的代碼, 其中tensorflow訓(xùn)練的jupyter notebook

對于我們的目標(biāo),我們可以將其描述為希望手機能夠識別左右的快速動作。
我們希望能夠在一個單獨的Android庫中完成這一實現(xiàn),以便它能夠容易地集成到任何其他應(yīng)用程序中。
這些動作可以通過手機上的幾個傳感器進行捕獲:加速度計、陀螺儀、磁力計等等。隨后,這些批量動作可以用于機器學(xué)習(xí)算法,以便進行訓(xùn)練和后續(xù)識別。
為了捕捉數(shù)據(jù),我們將開發(fā)一個Android應(yīng)用程序。預(yù)處理和訓(xùn)練過程將在Jupyter Notebook環(huán)境的PC上使用Python和TensorFlow庫執(zhí)行。手勢識別將在一個Android應(yīng)用程序演示中執(zhí)行,并生成訓(xùn)練數(shù)據(jù)。最后,我們將開發(fā)一個即時可用的Android庫,用于手勢識別,而且可以很容易地集成到其他應(yīng)用程序中
讀取的原始數(shù)據(jù)為:600.000000,2.464342,0.030081,-1.655362
對應(yīng): column_names = ['timestamp', 'x-axis', 'y-axis', 'z-axis']
監(jiān)督學(xué)習(xí)的標(biāo)簽:green/red (表明左滑或者右滑)

Machine-Learning powered Gesture Recognition on iOS
iOS上集成手勢識別的toolkit, 對應(yīng)源碼
作者實現(xiàn)了一個訓(xùn)練ViewController和一個預(yù)測ViewController。訓(xùn)練ViewController用于你做指定的動作,來添加訓(xùn)練數(shù)據(jù)。具體的算法是用C++寫的隨機森林的一個分類器。相對比較簡單,準(zhǔn)確性姑且不論,至少這一套完整做下來,后續(xù)有其他類似項目,可以作為啟動的demo參考。

基于DeepConvLSTM的傳感器信號分類,美圖,2018
源碼: Github
數(shù)據(jù)集:UCI: Human Activity Recognition Using Smartphones Data Set
本文主要根據(jù)手機的傳感器數(shù)據(jù),訓(xùn)練深度學(xué)習(xí)模型,用于預(yù)測用戶的運動模式,如行走、上樓梯、下樓梯、坐、站立、躺下等六種動作.
模型是基于深度學(xué)習(xí)的DeepConvLSTM算法,算法融合了卷積(Convolution)和LSTM操作,既可以學(xué)習(xí)樣本的空間屬性,也可以學(xué)習(xí)時間屬性。在卷積操作中,通過將信號與卷積核相乘,過濾波形信號,保留高層信息。在LSTM操作中,通過記憶或遺忘前序信息,發(fā)現(xiàn)信號之間的時序關(guān)系。
, 代碼基于keras實現(xiàn)
最終效果,在測試集中,準(zhǔn)確率約為95%左右:

loss: 0.0131 - acc: 0.9962 - val_loss: 0.1332 - val_acc: 0.9535
val_f1:  0.953794 — val_precision:  0.958533 — val_recall  0.949101

Deep, Convolutional, and Recurrent Models for Human Activity Recognition Using Wearables 好不容易找到一個有github鏈接的,
分別對DNN,CNN,RNN實現(xiàn)一波人體姿態(tài)識別,然后對比實驗看結(jié)果。從結(jié)果來看,CNN和LSTM的效果更好一些。
代碼上是基于Lua寫的,實現(xiàn)方式是基于CNN/DNN/RNN都有實現(xiàn),但是可以調(diào)試/測試的只有RNN。不過既然代碼都不能調(diào)試,其論文的可驗證性打個問號吧。

3.5.2 傳感器 + 機器學(xué)習(xí)

知乎:近幾年國際會議關(guān)于傳感器行為識別的文章整理
匯總了11年到15年各大平臺的行為識別的論文,主要以手機或者傳感器為原始數(shù)據(jù)。列舉的很詳細,匯總了幾十篇論文。

深度學(xué)習(xí)用于行為識別文章總結(jié) (Deep learning for activity recognition)
深度學(xué)習(xí)用于行為識別代碼 (Deep learning codes)
傳感器識別 + 深度學(xué)習(xí)

遷移學(xué)習(xí)用于行為識別 (Transfer learning for activity recognition)
傳感器識別 + 遷移學(xué)習(xí)

與位置相關(guān)的傳感器行為識別文章
傳感器在身體的不同位置 + 機器學(xué)習(xí)

基于加速度傳感器的連續(xù)動態(tài)手勢識別,陳鵬展 羅漫 李杰 華東交通大學(xué)電氣與電子工程學(xué)院 南昌
摘要:針對個體手勢動作信號的差異性和不穩(wěn)定性,提出了一種基于加速度傳感器的連續(xù)動態(tài)手勢識 別方法。通過 MEMS 加速度傳感器采集手勢動作信號,并結(jié)合手勢信號的動作特征,對單個手勢的有效 數(shù)據(jù)進行自動定位截取,經(jīng)預(yù)處理和特征提取后,構(gòu)建隱馬爾可夫模型( HMM) 以實現(xiàn)對特定手勢的實時 識別。通過設(shè)計實現(xiàn)了一種可穿戴手勢信號采集硬件原型系統(tǒng),對 10 類手勢的 1000 個手勢數(shù)據(jù)進行識 別對比實驗,統(tǒng)計結(jié)果表明: 該方法可以對連續(xù)手勢進行實時有效的識別。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容