Home

Awesome

3D reconstruction with Neural Networks

Note: This repo is no longer under development.

Introduction

This is work that I did as part of my Senior thesis at Princeton University. It is an implementation in Tensorflow of the network described by Choy et al in 3D-R2N2: A Unified Approach for Single and Multi-view 3D Object Reconstruction. The project is a neural network capable of performing 3D reconstruction using a variable number of images.

Demonstration

See the video below to see the network in action over a period of 40 epochs. The more red a voxel is the more certain the network is of its prediction at that position.

IMAGE ALT TEXT HERE

Getting Started

The network was trained using an AWS EC2 p2.xlarge instance.

Prerequisite

The projects make use of the several python packages. It is possible install these packages using pip. Use the following command to install the list packages in the requirements.txt.

pip3 install -r requirements.txt

It is possible to install tensorflow using pip as shown above but if you are having issues installing tensorflow on your specific platform follow the instructions here.

Usage

You can use preexisting shell scripts to make some of the tasks easier. For example

Setup

To start training the network, one must first setup the network using a shell script. This creates folders for the data, models and a JSON file to store the parameters of the network being trained.

sh scripts/setup_dir.sh

After setting up the dirs, we use a shell script to download the renders and low dimensional voxel models used by choy et al to train the their network. We then preprocesses the dataset by serializing the data to numpy npy files for easy loading and manipulation.

sh scripts/preprocess_dataset.sh

Training

After preparing the dataset for training, you can start training the network with the following shell script

sh scripts/train.sh