4

行为识别(时间序列)特征提取代码

 3 years ago
source link: https://bbs.cvmart.net/articles/367
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

行为识别(时间序列)特征提取代码

1年前 ⋅ 2424 ⋅ 1 ⋅ 0

写在前面:一直以来,极市得到了许许多多开发者的关注和支持,极市的成长离不开各位开发者的见证,为此我们特开设极市开发者祝愿帖,期待听到您真实的心声和建议~φ (> ω<*) :

极市开发者祝愿活动 (有奖回馈)

本文为中科院计算所的博士研究生王晋东整理的行为识别python和matlab提取特征代码,极市曾分享王博另一篇文章:行为识别常用提取特征,可以结合本文一起阅读,希望对做行为识别方面研究的小伙伴有帮助~
项目地址:activityrecognition/code/

多种传感器可以用于行为识别,如最常用的加速度计、陀螺仪、蓝牙与WiFi等。针对蓝牙与WiFi的特征提取,要根据具体的问题情况来进行。通常来说,加速度和陀螺仪的数据是最常用的。因此,我们就以这两种信号为例,提供针对它们的特征提取代码。

加速度和陀螺仪都是典型的时间序列信号,在行为识别中,通常我们都会提取一些统计信息(又称为时域)和频率信息(又称为频域)。两部分合起来,就可以用于行为识别了。从经验出发,能够识别人体常见的大多数运动行为。

也可以用本代码进行一些时间序列的特征提取,用法是一样的

关于时域和频域具体特征的计算方法请见这篇文章:行为识别常用提取特征


推荐使用
一个简洁明了的时间序列处理(分窗、特征提取、分类)库:Seglearn

用这个库会比用我们下面提供的自己写的方便!

Python版本

Python版本比较通用,也比较好扩展。目前刚放到pypi下,可能 用pip直接安装。该目录下的feature_extraction文件夹是核心的文件夹。

内核提取方法针对Python2和Python3一样通用。test.py文件是按照Python3格式写的,无伤大雅。


需求:
pip install numpy


调用方式(直接拷贝):
拷贝feature_extraction文件夹到你的目录(通常是你的特征提取代码目录)下;
在同一层目标下,首先导入引用:
from feature_extraction import feature_core

然后有两种调用方式:

  • (1) 有窗口:feature_core.sequence_feature(a, 5, 4),表示对a这个数组按照窗口大小为5,步长为4进行特征提取
  • (2) 无窗口:feature_core.sequence_feature(a, 0, 4),表示直接对a这个数组进行特征提取,它本身就是一个窗口。

返回:
一个2D的numpy.array


调用方式(pip):
pip install tsfeature import tsfeature.feature_core


扩展:
目前提取了19维特征,可以直接扩展feature_time.py和feature_fft.py文件中的函数,加上自己在时域和频域上的特征提取方案。

附本代码中提取到的19维特征:

(1)时域:均值,方差,标准差,最大值,最小值,过零点个数,最大值与最小值之差,众数

(2)频域:直流分量,图形的均值、方差、标准差、斜度、峭度,幅度的均值、方差、标准差、斜度、峭度

Matlab版本

Matlab版本的特征提取代码见它目录像下的readme。在Matlab版本R2014a及以上均通用。不过建议还是用python,更好用一些。

行为识别是一个分类问题,评价效果的好坏通常不只看精度,还要看准确率、召回率、F1、特异性等。我们提供一个计算所有结果的函数:Evaluate.m

微信公众号: 极市平台(ID: extrememart )
每天推送最新CV干货

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK