# Real-time Hand Gesture Detection and Classification Using Convolutional Neural Networks
{%hackmd theme-dark %}
###### tags: `paper`
###### description: 論文読んだまとめ記事
---
- Conference
- Authors
Okan Kop¨ ukl ¨ u¨ , Ahmet Gunduz , Neslihan Kose , Gerhard Rigoll
- URL
https://arxiv.org/abs/1901.10323
https://github.com/ahmetgunduz/Real-time-GesRec
---
## どんなもの?
リアルタイムなジェスチャー認識システムには必要なものが3つある
- 精度
- Fast reaction
- Single-time Activation
先行研究の多くは精度にのみ注力しており、他の要素を満たしていない。
私達の手法では、階層的なアーキテクチャを採用して動作しているかどうかを識別するモジュール(Detector)と動作のラベルを推定するモジュール(Classifier)を用いてこの問題に取り組む。
Detectorには軽量化した浅い3DCNNを使い、ClassifierにはC3D・ResNetベースの3DCNNを使う。
また、動的なジェスチャーを認識するための復数の工夫が行われている.
:star: キーワード: `Early detection(Fast reaction)`, `Single-time Activation`

## 先行研究と比べて何がすごい?
リアルタイムにdetectionとclassificationを行う手法はいくつか存在している.
しかし、クリティカルにsingle time activationに取り組んでいる論文はまだない.
:star: **本研究の最大の貢献は、`Single-time Activation`な手法で初めてのdeep learning beseな手のジェスチャー認識**を行ったことだ
## 技術の手法や肝は?
Single-time Activationとearly detectionのためのアルゴリズムを提案している.
Detectorが動作しているという結果を出力している時から出力が止まるまでの間のフレームに対してリアルタイムに推定していく.
- Early detection
重み付け平均した確率にmaxを取り、確率上位1位と2位の差が閾値$\tau_{early}$であればそこで一連の動作のラベルが決定する.
- Late detection
最終的に動作が終了するまでに動作ラベルが決定していない時も重み付け平均した確率にmaxをとった値が$\tau_{late}$以上であれば一連の動作のラベルが決定される.
重み付け平均の必要性を説明する図


## どうやって有効だと検証したか
下記2つのデータセットに対して、Classifierに使うモデルのアーキテクチャと入力と
(EgoGesture and NVIDIA, Dynamic Hand Gestures dataset)
## 次に読むべき論文は?
## 参考文献
---
## Instruction
ジェスチャー認識には以下の3つがある。
(i)グローブベース (ii)スケルトンデータを入力とする方法 (iii)生の画像データ
(i)は身に付ける必要があるし、(ii)はコンピューターの計算コストがかかる.
そういうわけで本研究ではRGB-Dの生データからジェスチャー認識をする.
リアルタイムなジェスチャー認識システムには以下の要素が必要である.
(i)精度(ii)fastreaction(iii)resource efficiency(iv)single-time activation
多くの手法は(i)にのみ注力しており、他の要素をことごとく満たしていない。
私達の手法では、classifierに3DCNNを使い、detectorに軽量化した浅い3DCNNを使う。
軽量なdetectorを使い、モーションがない場合はclassifierは使用されないためにエネルギー消費が少なくなる.
特に動作開始時は、似たような動作のクラス確率が同時に高くなる現象がある。
この現象によって動作開始時のジェスチャーによって最終的なジェスチャー推定結果が影響されることを避けるためにクラス確率に重み付けを行った。
私達の提案手法はジェスチャーが終了するよりも前に、ジェスチャーが核心的な動作をしている時に一連のジェスチャーラベルの検出結果を出す(single time activation)ことができる(Early detection).
なお、実際のコンピューターインターフェイスとしては一回のジェスチャーにつき一回だけ出力を出してほしいためにsingle time activationであることが望まれている.
## Related work
2DCNNを使う手法ではSegmentationしたあとにTemporal-sparialな画像をCNNにかけた後にLSTMを使う手法がある.
2DCNNは画像解析には適しているがモーションのパターンを学習するのには限界があり、より適した手法としては3DCNNがある.
リアルタイムにdetectionとclassificationを行う手法はいくつか存在しており、HOG特徴量をSVMと共に使う手法[^15]がある.
**しかしクリティカルにsingle time activationに取り組んでいる論文はまだない.**
**本研究の最大の貢献は、single time activationな手法で初めてのdeep learning beseな手のジェスチャー認識を行ったことだ**
## Methodology
3DCNNは動画においてフレームごとの空間的な特長を関連付けることに突出している。
しかし3DCNNをリアルタイムなシステムでどのように使うかについての説明はされていない。
そのため本workではこのギャップを埋めることを目的とする。
### Detector
システム全体の精度はDetectorに大きく依存する.
役割はたった1つで、gestureかno gestureかを識別してgestureだった場合はイメージをClassificationのキューに入れる.
- 入力
画像
- 誤差
クロスエントロピー誤差
- 評価
gestureではないものをgestureとしてclassifierに渡すことは避けなければいけないためにFPを使って評価する.
ResNetとResNetXtのアーキテクチャを使っている.
重み付け
### Classifier
3DCNNアーキテクチャであるC3D [19] and ResNext-101 [7] を使っている.
なお、全結合層のノード数を4098から2024に落としている.
3DCNNは2DCNNよりもパラメータ数が多く、overfitを避けるためにより多くのデータセットが必要になる。
**そのためClassifierアーキテクチャはJester dataset [1]でプレトレーニングしてその後にgoGesture and nvGestureで学習する.
この試みによって精度とトレーニングにかかる時間が劇的に変わった**
### Post-processing
DynamicHandGestureでは(ジェスチャー中に?)カメラ外に手が出ていく可能性がある。
これでは精度が落ちるためにその対策として以前推定した$k$個の結果をキューに入れて$q_l$に何かしらの処理をすることで対応することにした。
それらの平均を取る方法、重み付き平均を取る方法、中央値を取る方法が考えられたが実験の結果では中央値を取るほうがいいという結論となった。
### Single-time Activation
リアルタイムなジェスチャー認識では応答時間が短くジェスチャーごとに一度だけ結果を出力することが重要だ.