# A Tutorial on Human Activity Recognition Using Body-Worn Inertial Sensors
## Introduction
* ### 目的
アクティビティ認識の目的の一つは、コンピュータシステムがユーザのタスクを積極的に支援できるように、ユーザの行動に関する情報を提供することである[Abowd et al.1998]。センサー技術の進歩によって,画像や動画を用いたアプローチから加速度計やジャイロスコープなどの身体に装着する慣性センサを利用する方法に移行した.その結果,いつでもどこでも人間の活動を認識することができるようになりつつある.
* ### HARの重要性(歴史)
学術的にも産業的にも人間の活動を認識することは重要である. 1990年代末から身体装着型センサーを用いた活動認識に関する研究が始まり,これまで様々な分野で応用されてきた.特に注目を集めたのは,日常生活動作( ADLs:Activities of Daily Living )とヘルスケアであった.さらに近年では,エンターテインメント分野でもHARは重要な要素になっている.例えば,Nintendo WiiやMicrosoft Kinectなどのゲーム機は、ジェスチャーや全身の動きを認識することで、ゲーム体験を根本的に変えた [^1].またスポーツ分野でも,モーションセンサを組み込んだ道具を用いてアマチュアおよびプロのアスリートにパフォーマンスに関するフィードバックを提供するシステムが登場した(Nike+,Philips DirectLife).
* ### HARの重要性(他分野との関わり)
活動認識は,画像認識や音声認識などの他の分野と同様な方法論的課題を抱えています.一方で,多くのユニークな課題にも直面しており,他分野(画像認識や音声認識など)で開発されたものを拡張した専用の計算方法が必要である.例えば,画像認識や音声認識は,「画像の中の物体を検出する」「文章の中の話し言葉を検出する」といった明確な問題定義が可能であり,センシング環境はカメラやマイクの数,種類などは固定されている.これに対してHARは,システム設計や実装の自由度が高いのが特徴です.第一に,人間の活動に関する共通の定義,言語,構造がないため,明確で簡潔な問題提起(どの活動を認識しなければならないか,特定の活動はどのように特徴づけられるか)を行うことができない.第二に,人間の活動は非常に多様であり,その認識には,能力や特性が異なる複数のセンサを利用する必要があります.そのセンサはアプリケーション要求によって異なる.
---
## HARの課題(Research)
HARにおける課題を,
* 一般的なパターン認識の分野と同様の課題
* HARにユニークな課題
に分けて紹介する.
### Common Research Challenges
> パターン認識の勉強をしていないので分からなかった.
* #### Intraclass Variability
* #### Interclass Similarity
* #### The NULL Class Problem
### Challenges Specific to HAR
* #### 身体活動の定義と多様性
* #### Class Imbalance
* #### Ground Truth Annotation
* #### Data Collection and Experiment Design
## HARの課題(Application)
* #### Variability in Sensor Characteristics
* #### Tradeoffs in Human Activity Recognition System Design
----
## THE ACTIVITY RECOGNITION CHAIN
### 概要
一般的なHARシステムのアーキテクチャを説明する.アクティビティ・レコグニション・チェーン(ARC)は,信号処理,パターン認識,機械学習などの技術を組み合わせて特定のアクティビティ認識システムの動作を実現するものである(図1参照).
ARCへの入力は,身体に装着された複数のセンサーを用いて取得したセンサーデータのストリームで構成される.センサデータはまず,ノイズ除去や単位の変換などの前処理が行われる[^2].次に,前処理されたデータは,活動やジェスチャーが含まれている可能性の高い区間にセグメント化される.その後,各セグメント区間に対して,活動の特徴を表現した特徴量を抽出する.学習フェーズでは、抽出された特徴量とそれに対応するグランドトゥルースのクラスラベルが,トレーニングステージで分類器モデルを学習するための入力として使用されます.推定フェーズでは,特徴量と事前に学習したモデルを使用して,各アクティビティクラスのスコアを計算し,分類ステージでこれらのスコアを1つのクラスラベルにマッピングする.複数のセンサーや分類器が使用されている場合、複数の分類器の出力を1つの判定に融合することができます.さらに、通常は設計時にのみ使用されるが、性能評価段階ではARCの性能を評価することができる.
### Sensor Data Acquisition and Preprocessing
一般的なARCの最初の段階では,体のさまざまな場所に取り付けられた複数のセンサー及び環境中に設置されたセンサーを使って生データを取得する.例えば加速度センサでは3つのデータを記録することができるため,生データ$\boldsymbol{s}$は次のように表される.
\begin{eqnarray}
\boldsymbol{s}_i = (\boldsymbol{d}^1, \boldsymbol{d}^2, \boldsymbol{d}^3,...,\boldsymbol{d}^t)\quad for \quad i=1,...,k
\end{eqnarray}
ただし,$k$はセンサの数,$\boldsymbol{d}^i$は時刻$t$における複数のセンサ値を表す.例えば,6軸IMUの場合は
\begin{eqnarray}
\boldsymbol{s}_1 &=& (\boldsymbol{d}_1^1, \boldsymbol{d}_1^2, \boldsymbol{d}_1^3,...,\boldsymbol{d}_1^t)\\
\boldsymbol{d}_1^t&=&(a_x^t, a_y^t, a_z^t)^\mathsf{T} \\
\boldsymbol{s}_2 &=& (\boldsymbol{d}_2^1, \boldsymbol{d}_2^2, \boldsymbol{d}_2^3,...,\boldsymbol{d}_1^t)\\
\boldsymbol{d}_2^t&=&(\omega_x^t, \omega_y^t, \omega_z^t)^\mathsf{T}
\end{eqnarray}と表すことができる.このように,各センサは一定の時間間隔でサンプリングされて多変量の時系列となる.しかし,センサーの種類によってサンプリングレートが異なることに注意する必要がある.
ARCの第2段階である前処理は,生のデータに対してデータ間の時刻同期やノイズ除去などを行い,ARCの次のステージ(特徴抽出)へ向けて準備することです.変換の目的は,信号処理アルゴリズムを適用して,特徴抽出のロバスト性を高めることにあります.同時に,対象となる活動に関する情報を有する信号特性を維持する必要がある.ここで重要なのは,前処理が汎用的なものであること,つまり,データそのもの以外に依存しないことです.例えば、特定の人を対象としたものであってはいけない.
多変量で非同期な時系列データ$\boldsymbol{s}$に対して前処理を行なった結果得られる時系列データは次のように表される.
\begin{eqnarray}
\boldsymbol{D'}&=& (\boldsymbol{d'}^1, \boldsymbol{d'}^2, \boldsymbol{d'}^3,...,\boldsymbol{d'}^t)^\mathsf{T} \\
&=&\begin{pmatrix}
d'^1_{1} &\ldots & d'^t_{1} \\
\vdots & \ldots &\vdots \\
d'^1_{n} &\ldots & d'^t_{n}
\end{pmatrix}
\end{eqnarray}
ここで,$n$はセンサの数を,$t$はサンプル数を表す.例として,加速度計やジャイロスコープの信号の前処理には,キャリブレーション,単位変換,正規化,リサンプリング,同期,信号レベルの融合などがある[^3].
### Data Segmentation
ARCの第三段階では,前処理されたデータストリームの中からアクティビティに関する情報が含まれている可能性の高い区間(セグメント)を特定する.セグメンテーションの目的は時系列データから特定のアクションに関する情報を含んだ区間を見つけ出すことである.また,この処理を行うことによってARCの次の段階(分類)を実行しやすくすることにつながる.他にも例えば,リアルタイムARCの場合には,アクティビティが感知されないときはシステムの状態をオフにして電力を節約することができる.
セグメント$W$は各セグメント$\boldsymbol{w}_i$を要素とした集合であり,次のように表される.
\begin{eqnarray}
W&=& \left\{\boldsymbol{w}_1, \boldsymbol{w}_2, \ldots,\boldsymbol{w}_m\right\} \\
\boldsymbol{w}_i &=& (t^i_{start},t^i_{end})
\end{eqnarray}
ここで,$t^i_{start}$及び$t^i_{end}$は各セグメントの開始時刻と終了時刻である.$m$は対象とする行動が含まれているセグメントの個数である.例えば,認識対象を歩行としたセグメントの$m$は人間の歩数と一致する(べきである).
しかし,現実には連続したセンサーストリームをセグメント化するのは難しい問題である.これは,アクテビティを明確に定義することが困難であることに起因する[^4].以下では,これまで提案されてきたセグメント化手法を紹介する.
* #### Sliding Window
このアプローチでは,時系列データの上に一定の時間幅を持つウィンドウを一定間隔(ステップ幅またはオーバーラップ率)で移動させてデータセグメントを抽出する.ウィンドウサイズを大きくしすぎると,ARCの次の段階で行われる処理でより多くの時間を要するため認識システムの遅延につながる.ステップ幅は,セグメント数と計算負荷に影響を与える.ステップ幅が大きいほどセグメント数$m$は小さくなり,ARCの後続のステージの計算負荷が軽減される.逆に,ステップ幅が小さいとセグメント数$m$は大きくなるが,ARCの計算負荷は増大する.最適なウィンドウサイズとステップ幅を求める一般的に一般的な方法はない.
* #### Energy Based
このアプローチでは,アクテビティごとに信号の強度異なることを利用してデータセグメンテーションを行う.信号$S$のエネルギーは
\begin{eqnarray}
E = \int_{-\infty}^{\infty} |s(t)|^2 dt
\end{eqnarray}
で表される.この$E$に閾値を設定することでデータをセグメント化することができる.例えば,静的な活動(座る)と動的な活動(走る)を認識するARCでこのアプローチが採用される.動的な活動の方は静的な活動に比べて信号[^5]のエネルギーが大きくなるので,$E$に閾値を設定することで区別することが可能である.
* #### Additional Sensors and Contextual Sources
このアプローチでは,あるセンサデータをセグメント化するために追加で別のセンサから得られる情報を用いる.例として人間の走りを分析する場合は,特徴のわかりづらい加速度データをセグメント化するために周期性を示す角速度データを使用するなどが考えられる[^6].
---
## Feature Extraction and Selection
* ### Signal-based features
* ### Body model features
* ### Event-based features
* ### Multilevel features
---
## Training and Classification
---
## Decision Fusion
---
## Performance Evaluation
[^1]:ゲーム分野の例(Nintendo Wii)が時代遅れだというの文句は論文の著者に言ってほしい.Introductionについては,私は必要なところを翻訳しただけなのだから.
[^2]: Tom Fawcett. An introduction to ROC analysis. Pattern Recognition Letters,27:861-874, 2006.
[^3]:[Davide Figo, Pedro Diniz, Diogo Ferreira, and Joao Cardoso. 2010. Preprocessing techniques for context recognition from accelerometer data. Personal and Ubiquitous Computing 14, 7 (2010), 645–662.](https://link.springer.com/article/10.1007/s00779-010-0293-9)
[^4]: 詳細は,ARCの課題(Resarch)の行動の定義をご覧いただきたい.
[^5]:この場合の信号は加速度なのが挙げられる.座っている時よりは知っている時の方が加速度信号のエネルギーが大きくなるということ.
[^6]:あくまで例としてあげただけであり,実際にこの手法を試した研究があるわけではないのでご注意ください.単に私の思いつきです.実際は加速度も周期性を示すことがほとんどです