Added README.md
[dyncnn.git] / README.md
1 # Description
2
3 This is an attempt at predicting the dynamics of interacting objects
4 with a deep network.
5
6 I wrote a simple 2d physics engine in C++ that simulates moment of
7 inertia, fluid frictions, and elastic collisions, and a residual
8 network in Lua/Torch that predicts the final configuration of a set of
9 rectangles, given a starting configuration and the location where a
10 force is applied.
11
12 Results and analysis are available
13 in [`Fleuret (2016),`](https://fleuret.org/francois/publications.html#fleuret-2016) and you can have a look at
14 a [`2min video.`](https://fleuret.org/francois/files/fleuret-NIPS-intuitive-physics-spotlight.mp4)
15
16 This package is composed of a simple 2d physics simulator called
17 'flatland' written in C++, to generate the data-set, and a deep
18 residual network 'dyncnn' written in the Lua/Torch7 framework.
19
20 You can run the reference experiment by executing the `run.sh` shell
21 script.
22
23 It will
24
25 1. Generate the data-set of 40k triplets of images,
26
27 2. Train the deep network, and output validation results every 100
28    epochs. This takes ~30h on a GTX 1080 with cuda 8.0, cudnn 5.1, and
29    recent torch.
30
31 3. Generate two pictures of the internal activations.
32
33 4. Generate a graph with the loss curves if gnuplot is installed.