コンテンツにスキップ

UniMib SHAR Dataset Loader

UniMib

UniMib SHARデータセットに記録されているセンサデータとメタデータを読み込む.

Parameters:

Name Type Description Default
path Path

UniMib SHARデータセットのパス(path/to/dataset/data).

required

load(self, data_type, window_size=None, stride=None, ftrim_sec=3, btrim_sec=3, subjects=None)

UniMib SHARデータセットを読み込み,sliding-window処理を行ったデータを返す.

Parameters:

Name Type Description Default
data_type str

ロードするデータの種類(adl, fall, full, raw)を選択する(full = adl + fall). rawは前処理済みデータではない生のデータを扱う.

required
window_size Optional[int]

フレーム分けするサンプルサイズ data_type != 'raw'の場合は強制的に151となるが, data_type == 'raw'の場合は必ず指定する必要がある.

None
stride Optional[int]

ウィンドウの移動幅

data_type != 'raw'の場合は指定する必要はないが, data_type == 'raw'の場合は必ず指定する必要がある.

None
ftrim_sec int

セグメント先頭のトリミングサイズ(単位は秒)

3
btrim_sec int

セグメント末尾のトリミングサイズ(単位は秒)

3
subjects Optional[list]

ロードする被験者を指定する.指定されない場合はすべての被験者のデータを返す. 被験者は計9名おり,それぞれに整数のIDが割り当てられている.

被験者ID: [1, 2, ..., 30]

None

Examples:

>>> unimib_path = Path('path/to/dataset')
>>> unimib = UniMib(unimib_path)
>>>
>>> subjects = [1, 2, 3]
>>>
>>> x, y = unimib.load(data_type='full', subjects=subjects)
>>> print('full - x: {}, y: {}'.format(x.shape, y.shape))
>>> # > full - x: (?, 3, 151), y: (?, 2)
>>>
>>> x, y = unimib.load(data_type='raw', window_size=64, stride=64, ftrim_sec=0, btrim_sec=0, subjects=subjects)
>>> print('raw - x: {}, y: {}'.format(x.shape, y.shape))
>>> # > raw - x: (?, 3, 64), y: (?, 2)

Returns:

Type Description
Tuple[numpy.ndarray, numpy.ndarray]

sliding-windowで切り出した入力とターゲットのフレームリスト

x_framesは3次元配列で構造は大まかに(Batch, Channels, Frame)のようになっている. Channelsは加速度センサの軸を表しており,先頭からx, y, zである. また,このローダはdata_typeによってwindow_sizeの挙動が変わり, data_type != 'raw'の場合はwindow_sizeは強制的に151となる.

y_framesは2次元配列で構造は大まかに(Batch, Labels)のようになっている. Labelsは先頭からactivity,subjectを表している.

y_framesはデータセット内の値をそのまま返すため,分類で用いる際はラベルの再割り当てが必要となることに注意する.

load(path, data_type='full')

Function for loading UniMib SHAR dataset

Parameters:

Name Type Description Default
path Union[pathlib.Path, str]

Directory path of UniMib SHAR dataset('data' directory).

required
data_type str

Data type

  • 'full': segmented sensor data which contain all activities
  • 'adl' : segmented sensor data which contain ADL activities
  • 'fall': segmented sensor data which contain fall activities
  • 'raw' : raw sensor data (not segmented, all activities)
'full'

Returns:

Type Description
Tuple[List[pandas.core.frame.DataFrame], pandas.core.frame.DataFrame]

Sensor data segmented by activity and subject.

load_raw(path, data_type='full')

Function for loading raw data of UniMib SHAR dataset

Parameters:

Name Type Description Default
path Path

Directory path of UniMib SHAR dataset('data' directory).

required
data_type str

Data type

  • 'full': segmented sensor data which contain all activities
  • 'adl' : segmented sensor data which contain ADL activities
  • 'fall': segmented sensor data which contain fall activities
  • 'raw' : raw sensor data (not segmented, all activities)
'full'

Returns:

Type Description
Union[Tuple[numpy.ndarray, pandas.core.frame.DataFrame], Tuple[List[pandas.core.frame.DataFrame], pandas.core.frame.DataFrame]]
  • If data_type = 'full', 'adl' or 'fall': Tuple[np.ndarray, pd.DataFrame]

    Sensor data and meta data. Data shape is (?, 151, 3), and the second axis shows frames. Third axis is channel axis, which indicates x, y and z acceleration.

  • If data_type = 'raw': Tuple[List[np.ndarray], pd.DataFrame]

    Sensor data and meta data. Data shape is (?, ?, 3), and the second axis shows segments which is variable length. Third axis is channel, which indicates x, y and z acceleration.