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

TransScale: (Apache v2)

TransScale provides transparent scalability for using multiple GPUs with JCuda. The library facilitates agile CUDA development in Java using JCuda. With TransScale, it is now easy to load modules on single or multiple CUDA-enabled GPUs and harness their processing power.

TransScale also provides wrappers for 2D CUDA primitive arrays of structs with arbitrary number of fields (such as a 2D array of char’s representing an array of colors in ARGB space). These 2D allocations can be automatically pitched if possible and the pitch values are converted to a number that can be treated as a regular “width” similar to any 2D allocated array. The wrapped pointers are extensions of CUdeviceptr which allows transparent manipulation using JCuda. The project is open source (Apache v2.0 license) and available on GitHub.

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.

M2X Messenger: (GPL v3)

As a hobby project, I worked on an open source Yahoo! messenger client for the Android OS. Surprisingly, there are no other open source Yahoo! messenger clients for Android despite the fact that Yahoo! is very popular. The project is open source and available here. The graphics and UI design (excluding some of the icons) as well the application logos are all done solely by me.

Here are a few screenshots of the program in action (click each image to enlarge).

Login Screen Friends list

Conversation window Settings