用自己的网络模型跑IPIN数据集

用自己的网络跑IPIN数据

使用matlab获取Acce和Gyro的数据,单独提取到一个文件中
在matlab中运行官方发布的数据处理程序
在这里插入图片描述
运行完成后会生成许多图像,同时会生成一个mat文件,包含官方数据中的各个传感器数据
用自己的网络模型跑IPIN数据集_第1张图片
点击这个mat文件,工作区就会出现这些数据,使用如下命令即可提取到相应的txt文件中

>> load('T01_01.mat')
>> save Acce.txt Acce -ascii
>> save Gyro.txt Gyro -ascii

由于提取到的是文本文件,可以用python读取文件的方法把里面的数据提取到二维数组中,因为我这里还要对数据进行预处理,所以先提取成csv文件格式,方便后续的函数处理

import pandas as pd

data = open(r'Gyro.txt')
res = []
for i in data:
    d = [x for x in i.strip().replace('   ', ' ').replace('  ', ' ').split(' ')]
    res.append(d)
a = list(res)
save = pd.DataFrame(index=None, data=list(res), dtype="str")  # columns列名,index索引名,data数据
fh = open(r'Gyro.csv', 'w+')
save.to_csv(fh, date_format="string")
data.close()
fh.close()

重写一下读取文件函数,因为这里只需要x,y,z的三轴加速度

def load_ipin_dataset(acce_data_filename, gyro_data_filename):
    acce_data = pd.read_csv(acce_data_filename).values
    gyro_data = pd.read_csv(gyro_data_filename).values

    acce_data = acce_data[11925:24000]  # 表示从第一个landmark开始
    gyro_data = gyro_data[11925:24000]

    acc_data = acce_data[:, 3:6]
    gyro_data = gyro_data[:, 3:6]

    return acc_data, gyro_data

需要对数据进行预处理一下,变成一个三维数据,设置窗口和步长

def load_ipindataset_6d(gyro_data, acc_data, window_size=200, stride=10):
    x_gyro = []
    x_acc = []

    for idx in range(0, gyro_data.shape[0] - window_size - 1, stride):
        # x.append(gyro_acc_data[idx + 1 : idx + 1 + window_size, :])
        x_gyro.append(gyro_data[idx + 1: idx + 1 + window_size, :])
        x_acc.append(acc_data[idx + 1: idx + 1 + window_size, :])

    x_gyro = np.reshape(x_gyro, (len(x_gyro), x_gyro[0].shape[0], x_gyro[0].shape[1]))
    x_acc = np.reshape(x_acc, (len(x_acc), x_acc[0].shape[0], x_acc[0].shape[1]))

    return [x_gyro, x_acc]

记录一下相关的数据格式

x_gyro.shape (2997, 256, 3)
x_acc.shape (2997, 256, 3)
y_delta_p (2997, 3)
y_delta_q (2997, 4)

在这里插入图片描述
在这里插入图片描述最终跑出来的结果是这样的,感觉有点问题,因为官方提供的数据并没有标定连续的真值,只有10个地标点
用自己的网络模型跑IPIN数据集_第2张图片

你可能感兴趣的:(tensorflow)