Side Projects

During my spare time, I also implemented lots of tools/algorithms/papers that I found interesting, all of which are open-source.

project image

Pytorch implementation of World Models


code /

This is a Pytorch implementation of Google World Models.
project image

Tensorflow implementation of TRPO


code /

This is a Tensorflow (v1) implementation of Trust Region Proximal Optimization method. It is purely build on Tensorflow (v1)graphs and encapsulated as a seperate optimizer. You only need to pass the policy function and the cost function to the optimizer and create the cache variables.
project image

RealTimeTrack: A fast algorithm tracking real time deformable planers


code /

This is part of my graduation design. It can track multiple deformable images at the same time at a FPS above 30. The idea is based on the paper Template-based Monocular 3D Shape Recovery using Laplacian Meshes but with some performance improvements.
project image

C++ implementation of Selective Search Windows


code /

This is a C++ implementation of the paper Segmentation as selective search for object recognition. It reproduced the image segmentation result on Lena.
project image

Semantic 3D Reconstruction from a Collection of Images


code /

This project implemented real-time indoor objects segmentation and 3D reconstruction. We used fine-tuned MaskRCNN doing instance segmentation for 51 different objects and build 3D model by Truncated Signed Distance Function Volume Reconstruction with semantic predicted from MaskRCNN. By now, there are two steps to execute the pipe line. First, download datasets from RGB-D SLAM datasets. Using mask_process.py to generate mask images for specific datasets. Second, change configuration in kernel.cpp to execute TSDF.
project image

Pytorch implementation of Sketch-WGAN


code /

This is a Pytorch implementation of the paper A Neural Representation of Sketch Drawings. I use WGAN to mimic the data distribution of sketch drawings, where the key difference from the original sketch-rnn is in the reparameterization of GMM.
project image

A tiny renderer based on PBRT


code /

This is a naive tiny C++ renderer that is supposed to work on all platforms, based on the famous PBRT book.
project image

PyTorch implementation of QENet


code /

This is an unofficial PyTorch implementation of QENet, based on the paper Quaternion Equivariant Capsule Networks for 3D Point Clouds. However, it fails to converge for some unknown reason. I am still invesitigating the issue...
project image

Pytorch Implementation of Various Point Transformers


code /

Recently, various methods applied transformers to point clouds: PCT: Point Cloud Transformer (Meng-Hao Guo et al.), Point Transformer (Nico Engel et al.), Point Transformer (Hengshuang Zhao et al.). This repo is a pytorch implementation for these methods and aims to compare them under a fair setting. Currently, all three methods are implemented, while tuning their hyperparameters.
project image

A numpy implementation of PMVS


code /

This is an unofficial python implementation of PMVS, decribed in Accurate, dense, and robust multi-view stereopsis, PAMI2010. The implementation is slow (no multi-thread and cuda) and it is for only study and illustration purpose.
project image

Perception3D: An Open-Source Deep Learning Framework for 3D Perception


code /

An Open-Source Deep Learning Framework for 3D Perception (including classification, segmentation, keypoint detection, registration, shape matching, etc.). The documentation (beta) can be built in docs folder. This framework is inspired by mmdetection3d, but with a better configuration system.
project image

Python implementation of PatchMatch Stereo


code /

This repo (partially) implements patch match stereo algorithm described in PatchMatch Stereo - Stereo Matching with Slanted Support Windows.
project image

Pytorch implementation of OctConv


code /

This is a Pytorch implementation of the paper Drop an Octave: Reducing Spatial Redundancy in Convolutional Neural Networks with Octave Convolution
project image

A C++ 3D Object Simplifier


code /

This is a C++ implementation of the paper Surface Simplification Using Quadric Error Metrics. It could reduce the 3D model size by merging vertices and faces.
project image

Tensorflow implementation of Multi-stage Reinforcement Learning For Object Detection


code /

This is a Tensorflow implementation of the paper Multi-stage Reinforcement Learning For Object Detection.
project image

A minimal C++ example of Material Point Method


code /

This is a C++ implementation of Material Point Method, with the hybrid Particle-to-Grid and Grid-to-Partical process.
project image

Tiny Mask-RCNN in Tensorflow


code /

This is a tiny mask rcnn implemented by Tensorflow with only 700+ lines. Thanks to "tf.map_fn".
project image

Python Mahjong game with monte-carlo AI


code /

This is a Mahjong game with GUI. I also implemented a monte-carlo tree search for the AI opponents.
project image

Tensorflow implementation of KdNet


code /

This repo is a neat and precise implementation of KdNet (Escape from Cells: Deep Kd-Networks for the Recognition of 3D Point Cloud Models) in Tensorflow with Tensorpack.
project image

C++ implementation of GrabCut algorithm


code /

This is a C++ implementation of the famous image segmentation algorithm described in GrabCut: interactive foreground extraction using iterated graph cuts
project image

A geometric processing library in C++ & Python


code /

This repo implements a simple 3D geometric processing library, including some famous algorithms like geodesic distance computation and Point Pair Features (PPF) computation with CUDA.
project image

Direct Sparse Odometry for iOS platform


code /

This is an iOS transporation of Direct Sparse Odometry (https://github.com/JakobEngel/dso). You could press "toggle" to switch between depth images/RGB images/point cloud.
project image

A3C for Doom


code /

This is a Tensorflow algorithm to train a RL agent on Doom, with A3C training strategy.
project image

Matlab implementation of Single Image Haze Removal Using Dark Channel Prior


code /

This is a Matlab implementation of Kaiming He's famous papaer Single Image Haze Removal Using Dark Channel Prior.
project image

Implementation of Two-Phase Kernel Estimation for Robust Motion Deblurring


code /

This is an unofficial python implementation of the deblurring algorithm, decribed in Two-Phase Kernel Estimation for Robust Motion Deblurring, ECCV2010.
project image

Cycle-W-GAN


code /

This is a Tensorflow implementation of the famous Cycle-GAN described in the paper Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks. I modified it by add Wasserstein distance to make the training more stable.
project image

Tower-Defense Game in Unity


code /

This is a tower-defense game written in Unity, a long time ago. It may not be compatible with recent Unity versions.
project image

Pytorch implementation of Learning Latent Subspaces in Variational Autoencoders


code /

This is a Pytorch implementation of the paper Learning Latent Subspaces in Variational Autoencoders. It reproduced the experiment on the Swiss Roll toy data.
project image

Tensorflow implementation of Collaborative Learning for Deep Neural Networks


code /

This is a Tensorflow implementation of the paper Collaborative Learning for Deep Neural Networks. I got 6.09% error rate after 300 epochs which is a slightly different from the paper. Maybe the split point is different from the paper: in my implementation splitting is done right after Batch Normalization and Relu of transition layers while it is not clear whether they split before or after or in the transition layers. Besides, in my implementation, gradients would pass through soft label targets (notation "q" in the paper).
project image

Pytorch implementation of adversarial autoencoders


code /

This repo implements the adversarial autoencoders (https://arxiv.org/pdf/1511.05644.pdf), and reproduced the results on MNIST. One difference is that I used Wasserstein distance instead of naive GAN loss.