Home

Awesome

Ubisoft La Forge Animation Dataset ("LAFAN1")

LaFAN1

Ubisoft La Forge Animation dataset and accompanying code for the SIGGRAPH 2020 paper Robust Motion In-betweening.

Shot in May 2017.

This dataset can be used under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License (see license.txt).

If you use this dataset or transition benchmarking code, please consider citing the paper:

@article{harvey2020robust,
author    = {Félix G. Harvey and Mike Yurick and Derek Nowrouzezahrai and Christopher Pal},
title     = {Robust Motion In-Betweening},
booktitle = {ACM Transactions on Graphics (Proceedings of ACM SIGGRAPH)},
publisher = {ACM},
volume    = {39},
number    = {4},
year      = {2020}
}

You may also want to consider the following papers, as they also use this dataset (or parts of it):

Cloning this repository using git lfs

This repository contains large files, e.g. lafan1/lafan1.zip (137M). In order to clone this repository including the complete zip files, you need to use git lfs.

Example using Ubuntu 20.04:

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install
git clone https://github.com/ubisoft/ubisoft-laforge-animation-dataset.git

If you do not have git lfs installed, you will see this error when trying to run evaluate.py:

BadZipfile: File is not a zip file

Data

The animation data is contained in the lafan1.zip file.
All the animation sequences are in the BVH file format.
There are 5 subjects in the dataset, 77 sequences, and 496,672 motion frames at 30fps (~4.6 hours).
Every BVH file is named with the following convention: [theme][take number]_[subject ID].bvh.
Any sequences sharing the same theme and take_number were recorded at the same time in the studio.
Themes are high level indicators of the actions in the sequences.

The following themes are present in the LaFAN1 dataset:

ThemeDescriptionNumber of sequences
ObstaclesLocomotion on uneven terrain17
WalkWalking locomotion, with different styles12
DanceFree dancing8
Fall and get upFalling on the ground and getting back up6
AimingLocomotion while handling or aiming a gun5
GroundLocomotion while crawling and crouching5
Multiple actionsMiscellaneous/multiple movements per sequence4
RunJogging/Running locomotion4
FightVarious fight movements3
JumpsLocomotion with one and two-leg jumps3
Fight and sportsFight and sports movements2
Push and stumblePushing, stumbling and recovery3
Push and fallPushing, falling, and getting up2
SprintSprinting locomotion2
PushPushing adversary1

Code

Requirements

You should only need numpy installed in a python 3.X environment, but the code was developed with python 3.7 and numpy 1.17.4

You can easily create a test environment with conda :

conda create -n lafan_env python=3.7 numpy=1.17.4

Evaluating baselines

From the command line:

python evaluate.py

To validate that the results produced by the baseline evaluations are within the expected ranges, you can subsequently run:

python evaluate_test.py


The first run may take several minutes, as it will compute the training statistics.
Following runs should go faster.

The training statistics for normalization are computed on windows of 50 frames offset by 20 frames.
We sample our test windows from Subject 5 at every 40 frames, and retrieve 2232 sequences for evaluation.

In the Zero-Velocity baseline, the last seed frame is repeated during the whole transition.
In the Interpolation baseline, the global root position is linearly interpolated (LERP), and quaternions are spherically linearly interpolated (SLERP).


You should obtain the following results:

<img src="images/benchmark_results.png" alt="results" width="533"/>

Evaluation metrics

When running the baseline evaluations, we report three different metrics on global quaternions on positions to assess the quality of the generated transition.

Global quaternion loss

The global quaternion loss (L2Q) is the L2 distance computed between estimated and ground-truth global quaternion vectors g, averaged over each time step t and over all sequences s in the test set.

<img src="images/L2Q.png" alt="L2Qloss" width="300"/>

Global position loss

The global position loss (L2P) is the L2 distance computed between estimated and ground-truth normalized global position vectors p, averaged over each time step t and over all sequences s in the test set.

<img src="images/L2P.png" alt="L2Ploss" width="300"/>

Normalized Power Spectrum Similarity (NPSS) on global quaternions

This is a distance metric based on the power spectrum of joint angles, as proposed by Gopalakrishnan et al. (2019).
It is reported to correlate better with human judgement about motion.
Its motivation and implementation details can be found in their paper.

© [2018] Ubisoft Entertainment. All Rights Reserved