※こちらはディープラーニングガジェット品評会のネタです。
#やりたかったこと
- 映画「マイノリティリポート」に出てくる格好いいやつを作りたかった
- タッチパネルが使えない状況(手が汚れている等)でも使用可能なインターフェイスを作りたかった
#結果
まずは、結果をご覧ください。
#環境
- Raspberry Pi 3
- USB camera
- NCS2
#実はクソアプリ
このアプリ、全く使い物に立ちません。その理由は以下のとおりです。
- もっと便利な商品がある
- ハード代が高価(3万円弱)
- 使うと腕が疲れる
#アルゴリズム
アルゴリズムは簡単です。
まず、handtracking-OpenVINOを使って、手を検出します。
そして、検出した手が閉じていると、「入力あり」と見なしています。
手の開閉は、手の検出枠(バウンディングボックス)の「縦横比」で判定しています。
縦長(手が開いている)であれば「入力なし」、それ以外であれば「入力あり」と判定しています。
ただ、縦横比をはっきりさせるために、親指を曲げて手を開いています。
お釈迦様のような手にしないといけません。
また、手のひらをカメラに向けると、手が二つあるように認識してしまい、
うまく判定ができません。
従って、手の甲をカメラに向けています。
#改善に向けて
今のところ、完成度が低いため、コードは公開しませんが、改善できたら
公開しようと思います。
少しでもクソアプリから脱却すべく、以下の項目を改善したいです。
##手の認識
前述したように、手の動作に制約があります。
制約を無くすためには、DOCやTripletLossを使うと、高速にかつ正確に
手の開閉を認識できるようになります。
親指を曲げて手を開く必要もないですし、手の甲を見せる必要もなくなるでしょう。
##価格について
現状はハード代が高価です。
ハードをJetson Nanoに代えると、価格を一万円強に抑えることができます。
スピードは未知数ですが、10FPSくらいにはなると思います。
#最後に
handtrackingは、元々普通のPCで動くように開発されたものです。(CPUで10FPS)
従って、元のリポジトリを改造すれば、普通のPCでもこのアプリを動かすことができます。
やってみたいという方がいましたら、チャレンジしてみてください!