行為識別常用哪種特徵提取?
最近在做行為識別,不知道該如何下手
我是中科院計算所的博士研究生,以前做過一些行為識別方面的研究。這裡提供幾個鏈接:
一、我的github上關於機器學習及行為識別的資料,有課程有資料有論文,比較詳細:GitHub - jindongwang/MachineLearning: 一些關於機器學習的學習資料與研究介紹 GitHub - jindongwang/activityrecognition: Information about activity recognition二、關於提特徵的問題,主要是時域和頻域特徵,用滑動窗口提取特徵,比如平均數、方差、過零率等,還有傅里葉變換後的幅度、頻率、均值等。三、可用數據集:來自UCI的一個行為識別數據集,可用來練手:UCI Machine Learning Repository: Daily and Sports Activities Data Set
四、我寫的python和matlab提取特徵代碼,見文章最後五、最近剛發現一個自動提取時間序列特徵的庫,可以省不少事,地址在這裡:blue-yonder/tsfresh
Matlab版本的在這裡:https://github.com/benfulcher/hctsa
下面以行為識別中最常用的加速度為例,分別從滑動窗口、時域特徵、頻域特徵三部分做簡單的分析。文章最後附有我寫的python提取特徵程序。
0.滑動窗口
滑動窗口由兩個關鍵變數構成:窗口大小(windowssize)和滑動步長(step)。其中,窗口大小指的是一次處理的數據量。假設感測器採樣頻率為1.合成加速度
加速度計通常有三軸讀數2.時域特徵
時域特徵(time domain features)是指,在序列隨時間變化的過程中,所具有的與時間相關的一些特徵。我們用2.1.均值
2.2.標準差
2.3.眾數
Python中可用的函數:mode()
2.4.最大值
2.5.最小值
Python中可用的函數:min()
2.6.範圍
2.7.過均值點個數
2.8.相關係數
相關係數是指對於兩個向量(比如這兩軸讀數)之間的相關性。一般用在辨別一個方向的運動較多,不是很常用。
2.9.信號幅值面積
3.頻域特徵
頻域特徵(frequency domain features)通常被用來發現信號中的周期性信息。例如,跑步和走路都是典型的周期性運動。頻域分析主要用快速傅里葉變換(Fast Fourier Transform,FFT)來計算。Matlab中進行快速傅里葉變換的函數:FFT()由於信號是一維的,對長度為的信號進行傅里葉變換後,得到
個變換後的數值。頻域特徵就主要從這
個變換後的數值得到。為了方便理解,下面舉例說明。
3.1.直流分量
3.2.幅度
幅度就是變換後數據的絕對值。
3.3.功率譜密度
b.標準差standard deviation:
c.偏度skewness:
d.峰度kurtosis:
3.3.2 形狀統計特徵
設b.標準差standard deviation:
c.偏度skewness:
【感謝@Tang指正,此處寫錯了下標】d.峰度kurtosis:
我寫的滑動窗口提特徵代碼(Matlab+Python)見這裡:jindongwang/activityrecognition
目前都是使用spatio-temporal features做分類,主流的特徵有Harris3D,HOG3D,
Cuboids 等,然後使用Bag of words方法形成動作特徵字典,最後再用諸如SVM,adaboosting等方法分類。不過現在CNN也有不少做這個的。
可以考慮使用STIP特徵,然後使用Bag of words方法形成動作特徵字典,最後使用一般的分類器(如softmax,SVM)就可以完成常規的行為識別。
本科畢業設計做的視頻中人行為識別。一種分類方式是將其分為兩大類,一大類是基於局部描述子的statistical information的方法,像HOG3D等,其他朋友的回答中也有提到。這一類中目前知道的比較好的是Dense Trajectory(DT)方法,作者在這個方法上下了很大功夫,由DT方法在ICCV,CVPR,IJCV上發表了好幾篇文章(文章名字都很像,都是講DT這一個東西的,只是做了一些改進,像15年的文章裡面考慮了相機抖動、用Fisher encoding代替Bag of feature以取得更好效果等),源碼有提供LEAR - Improved Trajectories Video Description,我在JHMDB數據集上做過實驗,效果還不錯。另一大類是基於pose的行為識別方法,pose可以提取更加細節的信息,先用pose estimation方法估計pose,再從pose中提取各個關節之間的角度、距離等等作為特徵。但受pose estimation準確率的影響,目前這種方法不是很常用,但實驗發現在理想的pose estimation情況下這種方法準確率是很高的(高於DT),所以可能是未來行為識別領域的一個發展趨勢,源碼見http://jhmdb.is.tue.mpg.de/challenge/JHMDB/datasets。另外,在選擇實驗數據集的時候可以參考12年的CVPR Tutorial,裡面詳細介紹了目前的開源數據集以及截止12年各個數據集的分類準確率。
基於深度攝像頭的行為識別比較容易獲取。比如運動軌跡,速度,角度。步頻,步幅。 晃動幅度,姿勢,手勢,高度變化,等等。傳統攝像頭就比較難一些。
幾年前做個的一個小東西,主要對交通路口的行人行為進行識別,精度還可以
識別特種提取應該分為整體和局部難點是把目標從背景中分離出來,路口的行人太多,另外過往車輛造成的干擾太大,使用光流的話,得到的目標不幹凈,使用幀差又會丟掉一些細節信息,最後想了很多辦法;目標提取後,其實就簡單多了,先獲取目標的輪廓信息,作為整體特徵然後獲取目標的SURF特徵做局部特徵整體特徵和局部特徵是有對應關係的,可以理解為圖像的高低頻信號(細節結構),都很重要其他的就是採樣訓練mark,去過計算所,聽過陳益強老師的報告。
我寫論文想引用你的總結 求出處。。。。。
在計算機視覺領域的行為識別,卷積神經網路CNNs應該現在效果會不錯吧,自動特徵提取
行為識別達到何種程度?
推薦閱讀:
※OpenCV已經將圖像處理(識別)的演算法寫成函數了,那我們還有必要去學習這些演算法不?
※用演算法怎樣識別圖片上的植物?
※能否搜索某視頻的其中一幀畫面?或者通過一張圖片搜索此圖來自哪個視頻?
※Facebook 的人工智慧實驗室 (FAIR) 有哪些厲害的大牛和技術積累?
※先進的圖像識別怎樣改變 AV 產業?
