Published August 1, 2012 | Version v1

Choreography dataset

Authors/Creators

  • 1. INRIA

Contributors

  • 1. INRIA

Description

More information: https://flowers.inria.fr/choreo/doc/

Presentation

This database contains choreography motions recorded through a kinect device. These motions have a combinatorial structure: from a given set of primitive dance motions, choreographies are constructed as simultaneous execution of some of these primitive motions.

Primitive dance motions are chosen from a total set of 48 motions and are spanned over one or two limbs, either the legs (e.g. walk, squat), left or right arm (e.g. wave hand, punch) or both arms (e.g. clap in hands, paddle).

Complex choreographies are produced as the simultaneous demonstration of two or three of these primitive motion: either one for legs and one for both arm, or one for legs and one for each arm.

Each example (or record) contained in the dataset consists in two elements:

  • the motion data,
  • labels identifying which primitive motions are combined to produce the choreography.

3 separate sets of examples are included in this dataset:

  • primitive: in each example, only one primitive motion is demonstrated, the set of labels associated to each example is thus a singleton (326 examples)
  • mixed small: demonstrations of complex choreographies composed of primitive motions taken in a subset of 16 possible motions (137 examples).
  • mixed full: demonstrations of complex choreographies composed of primitive motions taken in all the possible motions (277 examples).

Description of the data

The data has been acquired through a kinect camera and the OpenNI drivers, which yields a stream of values of markers on the body.

Each example from the dataset is associated to a sequence of 3D positions of each of the 24 markers. Thus for a sequence of length T, the example would corresponds to T*24*3 values.

The kinect device recognizes the following list of markers:

head, neck, waist, left_hip, left_shoulder, left_elbow, left_hand, left_knee, left_foot, left_collar, left_wrist, left_fingertip, left_ankle, right_hip, right_shoulder, right_elbow, right_hand, right_knee, right_foot, right_collar, right_wrist, right_hand, right_fingertip, right_ankle

These markers are however not tracked with the same accuracy and it might be better to filter to keep only a subset of these markers. For examples the following list is a good start:

head, neck, left_hip, left_shoulder, left_elbow, left_hand, left_knee, left_foot, right_hip, right_shoulder, right_elbow, right_hand, right_knee, right_hand, right_foot

Labels are provided as lists of one (primitive set), or two or three (other sets) identifiers.

A list of primitives and their descriptions can be found at the end of this document.

Format

This data is accessible in three data formats:

  • text
  • numpy
  • Matlab

The text format

The set of examples consists in:

  • a json file describing metadata and labels,
  • a directory containing one text file for each example.

These are distributed in a compressed archive (tar.gz).

An example of a json file is given below. They all have a similar structure.

{ "marker-names": [ "head", "neck", ... ], "data-dir": "mixed_partial_data", "name": "mixed_partial", "records": [ { "data-id": 0, "labels": [ 20, 26 ] }, { "data-id": 1, "labels": [ 19, 28 ] }, ... ] }

It contains the following data:

  • name: name of the set of examples,
  • marker-names: list of name of the markers in the same order as they appear in data,
  • data-dir: path to the data directory,
  • records: list of records. Each record contains: - a data-id fields, - a labels field containing a list of label as integers.

For each record listed in th json file there exists a text file in the ‘data-dir’ directory, which name is the ‘data-id’ plus a ‘.txt’ extension.

The text files contains the sequence of positions of the marker. Each set of values at a given time is given as a line of space separated floating numbers (formated as ‘5.948645401000976562e+01’).

Each line contains 3 successive values for each marker which are there 3D coordinates, as provided by the OpenNI framework during capture. Thus each line contains 3M values with M the number of markers.

The numpy format

In this format each set of examples is described by two files: a json file and a compressed numpy data file (.npz).

The json file is very similar to the one from the text format, the only difference is that the ‘data-dir’ element is replaced by a ‘data-file’ element containing the path to the data file.

The data file is a numpy compressed data file storing one array for each example. The name of the array is given by the ‘data-id’ element. Each data array (one for each record) is of shape (T, M, 3) where T is the length of the example and M the number of markers.

The following code can be used to load a set of example in python:

import os import json import numpy as np FILE = 'path/to/mixed_full.json' with open(FILE, 'r') as meta_file: meta = json.load(meta_file) # meta is a dictionary containing data from the json file path_to_data = os.path.join(os.path.dirname(FILE), meta['data-file']) loaded_data = np.load(path_to_data) data = [] labels = [] for r in meta['records']: data.append(loaded_data[str(r['data-id'])]) # numpy array labels.append(r['labels']) # list of labels as integers print "Loaded %d examples for ``%s`` set." % (len(data), meta['name']) print "Each data example is a (T, %d, 3) array." % len(meta['marker-names']) print "The second dimension corresponds to markers:" print "\t- %s" % '\n\t- '.join(meta['marker-names']) return (data, labels, meta['marker-names'])

The Matlab format

In the Matlab format, a set of examples is described by a single ‘.mat’ file containing the following elements:

  • a ‘name’ variable (string) containing the name of the set of examples,
  • a ‘marker_names’ variable containing a list of marker names (strings),
  • a ‘data’ variable containing a list of data arrays (one for each record) of size (T, M, 3) where T is the length of the example and M the number of markers,
  • a ‘labels’ variable which is a list of list of labels (one list of labels for each example).

Files

mixed_full.json

Files (32.5 MB)

Name Size Download all
md5:fc385baecb6ca0d1efb7a648943de77b
26.8 kB Preview Download
md5:2461c628f0e3351deea680af057d2f43
4.9 MB Download
md5:baeec4b4c2bca59615d16082698d4581
4.9 MB Download
md5:095f457ebfd07d53fb340b7f6be9c29a
2.9 MB Download
md5:19f5b1408a1c7193b6b47bd257c07b37
12.9 kB Preview Download
md5:4b8602536bb332fc9146403c48f4f0fd
2.4 MB Download
md5:abd9f4fcb2f01a4818d75d3e7ed7a031
2.4 MB Download
md5:4cedb35f91ab7f3d93290a46d9504db4
1.4 MB Download
md5:51634e73c23f6e65e72eeae172323983
18.6 kB Preview Download
md5:544fd7a0f595e703fc9c2939454643bc
5.2 MB Download
md5:44354817bddb502b1b4c891ab4ded2c7
5.2 MB Download
md5:8b0df73336a024e298790349a38ba3d9
3.0 MB Download

Additional details

References

  • Mangin, Olivier and Oudeyer, Pierre-Yves "Learning to recognize parallel combinations of human motion primitives with linguistic descriptions using non-negative matrix factorization" International Conference on Intelligent Robots and Systems (IROS 2012) (2012)