Software

DeepGRU: Deep Gesture Recognition Utility (MIT License)

DeepGRU is (yet another) deep learning-based gesture recognizer. However, I designed this network model with three very important goals in mind: the network should be super easy to understand and implement, yet data agnostic and powerful while offering fast and efficient training. My intent was to show that good deep learning-based recognizer need not be mind-boggling or convoluted (pun intended): on the contrary, one could design a very simple network model with basic GRU building blocks that could beat most state-of-the-art methods.

DeepGRU is written in Python and uses the PyTorch framework. Its reference source code is available on GitHub.

Gesture Path Stochastic Resampling (GPSR): (US Patent 10,133,949)

Our patent pending method intelligently resamples time series data (such as handwritten strokes, gestures, etc.) and produces realistic variations of the data. Through evaluations, we established GPSR as a viable means of producing synthetic gesture data to train various gesture recognizers. A live demo of our approach is available here.

Source code for GPSR is available as a part of the Jackknife recognizer on GitHub.

Jackknife Gesture Recognizer: (UCF License)

Jackknife is an award winning, general purpose gesture recognizer for C++, C#, and JavaScript that is designed to work with a variety of input devices including Kinect, WiiMote, Leap Motion, as well as touch and stylus devices. Our recognizer can even be used to detect hand gestures passing through inaudible sound waves due to the doppler effect. If the input can be represented as a sequence of points through time, there is a good chance that our recognizer can be used to detect input patterns with high accuracy. Jackknife is also designed for gesture customization. This means that a user or developer only needs to provide one or two examples of a gesture pattern to work, whereas other recognizers require lots of training data, which may be quite difficult to collect.

Reference source code for Jackknife is available on GitHub.

librealsense with ARM support: (Apache v2)

A fork of the original librealsense library with the addition of ARM support. librealsense uses SSSE3 SIMD instructions for unpacking frames to the desired color format. This was necessary probably due to the nature of the pixel unpacking operations as they are inherently slow and are data parallel. Since SSSE3 is specific to x86 architecture, workarounds are needed for getting the code to compile under ARM. These workarounds are implemented in this fork. This library follows the original Apache v2.0 license of librealsense and is available on GitHub.

CodeFull Toolkit: (Apache v2)

CodeFull Toolkit is an OpenGL-based visualization toolkit for .NET. The goal of this toolkit is to provide 3D visualization tools equivalent to the WPF 3D framework. CodeFull Toolkit is written in C# and uses OpenTK for OpenGL interop. This toolkit is released under Apache v2.0 license and is available on GitHub.
Some screenshots are available below.

CarveSharp: (GPL v3)

Carve is a fast, robust constructive solid geometry library. CarveSharp is a .NET wrapper for Carve’s mesh boolean operations. Using CarveSharp, set operations such as intersection, union, differencing etc. can be performed on triangular meshes. CarveSharp is written in C# and released under GPL v3 license in GitHub. CarveSharp uses the CodeFull Toolkit library.

Below is the result of subtracting a cube mesh from a chair mesh (the chair mesh was obtained using Kinect Fusion).

CarveSharp demo CarveSharp demo

CarveSharp demo CarveSharp demo

CudaHoG: (Apache v2)

CudaHoG is an efficient implementation of Dalal & Triggs Histogram of Oriented Gradients in CUDA.
It is written in C++11 with optimization in mind. Features can be extracted using the library or the MATLAB MEX interface that it provides. The project is open source (Apache v2.0 license) and available on GitHub.

Here are some screenshots of the results of feature extraction (click each image to enlarge).

Visualized Features

Visualized Features

Visualized Features

CUDA Extensions for Genetic Programming in ECJ: (Apache v2)

This library provides support for automatic parallel tree evaluation and fitness calculation on GPU for ECJ using JCuda and TransScale. The project is still under development. However, most problems should be able to benefit from the massive processing power of the graphics cards with minor modifications. The project is open source and available on GitHub.