IntelRealSense / hand_tracking_samples

:wave: :ok_hand: research codebase for depth-based hand pose estimation using dynamics based tracking and CNNs
https://realsense.intel.com/
Apache License 2.0
217 stars 74 forks source link
cnn computer-vision hand-pose-estimation hand-tracking machine-learning physics-engine

DISCONTINUATION OF PROJECT

This project will no longer be maintained by Intel. Intel has ceased development and contributions including, but not limited to, maintenance, bug fixes, new releases, or updates, to this project. Intel no longer accepts patches to this project. # Hand Tracking Samples

License is Apache 2.0

Platform Build Status
Visual Studio 2015 Build status

This project provides C++ code to demonstrate hand pose estimation via depth data, namely Intel® RealSense™ depth cameras. Additionally, this project showcases the utility of convolutional neural networks as a key component of real-time hand tracking pipelines. A variety of tools and apps are provided, including an OpenVR demo showing hand tracking from an egocentrically-mounted depth camera. A YouTube video demonstrating some functionality the hand tracking code can be found here.

The software provided here works with the currently available Intel® RealSense™ depth cameras supported by librealsense.
The release of this repository closely coincides with the availibility of the latest-gen RS400 camera. Support for this device will added after it begins shipping.

Hand Tracking Samples is experimental code and not an official Intel® product. It is subject to incompatible changes in future updates.

Sample Applications

Each sample application comes with a separate readme further explaining its purpose and usage.

Building

The code is primarily developed on Windows and includes Visual Studio solution files for VS2015 and VS2017 (hand_tracking_samples_vs2015.sln). Linux and MacOS support is preliminary and compilation on these operating systems is not guaranteed.

Audience

The code in this repository is authored for computer-vision and machine-learning students and researchers in the field of 3D pose estimation. The CNN implementation provided is intended to be used as a reference for training nets based on annotated ground-truth data; researchers may instead prefer to import captured datasets into other frameworks such as Google's TensorFlow.

Known Limitations

The project does not aim to provide a comprehensive hand pose estimation pipeline suitable for production use.

Future Work

The approach to dynamic-based tracking was first described by Melax Et Al. in Dynamics Based 3D Skeletal Hand Tracking (2013) and later released in binary form for evaluation. Hand Tracking Samples implements an identical solver and builds upon dynamics-based tracking, taking inspiration from Jonathan Tompson's Real-Time Continuous Pose Recovery of Human Hands Using Convolutional Networks (2014) as a means of further constraining pose estimates. A comprehensive survey of papers in hand pose estimation have been helpfully assembled here.

To extend this work further, there exist a number of incompletely solved steps in the pipeline:

License

Copyright 2017 Intel Corporation

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this project except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.