Mesh Datasets
Mesh datasets contains data in the form of Meshes.Mesh
. See Meshes.jl for a better understanding of Meshes.
Index
Documentation
MLDatasets.FAUST
— TypeFAUST(split=:train; dir=nothing)
The MPI FAUST dataset (2014).
FAUST contains 300 real, high-resolution human scans of 10 different subjects in 30 different poses, with automatically computed ground-truth correspondences.
Each scan is a high-resolution, triangulated, non-watertight mesh acquired with a 3D multi-stereo system.
FAUST is subdivided into a training and a test set. The training set includes 100 scans (10 per subject) with their corresponding ground-truth alignments. The test set includes 200 scans. The FAUST benchmark defines 100 preselected scan pairs, partitioned into two classes – 60 requiring intra-subject matching, 40 requiring inter-subject matching.
The dataset required to be downloaded manually from the website and extracted in the correct location. For information about where to place the dataset, refer to the example section.
Dataset Variables
scans
: Vector of non-watertight scans in the form ofMesh
.registrations
: Vector of registrations corresponding to each scan inscans
.registrations
likescans
are also in the form ofMesh
.labels
: For each scan in the training set, we provide the boolean Vector of length equal to the number of vertices in the corresponding scan. It represents which vertices were reliably registered by the corresponding registration.metadata
: A dictionary containing additional information on the dataset. Currently only:test
split has metadata containing information about the registrations required for the inter and intra challenge proposed by the author.
Examples
Loading the dataset
julia> using MLDatasets
julia> dataset = FAUST()
[ Info: This program requested access to the data dependency MPI-FAUST
[ Info: It could not be found on your system. It requires manual installation.
┌ Info: Please install it to one of the directories in the DataDeps load path: /home/user/.julia/packages/DataDeps/EDWdQ/deps/data/MPI-FAUST,
│ /home/user/.julia/datadeps/MPI-FAUST,
│ /home/user/.julia/juliaup/julia-1.7.3+0.x86/local/share/julia/datadeps/MPI-FAUST,
│ /home/user/.julia/juliaup/julia-1.7.3+0.x86/share/julia/datadeps/MPI-FAUST,
│ /home/user/datadeps/MPI-FAUST,
│ /scratch/datadeps/MPI-FAUST,
│ /staging/datadeps/MPI-FAUST,
│ /usr/share/datadeps/MPI-FAUST,
└ or /usr/local/share/datadeps/MPI-FAUST
[ Info: by following the instructions:
┌ Info: Dataset: MPI-FAUST.
└ Website: http://faust.is.tue.mpg.de/
Once installed please enter 'y' reattempt loading, or 'a' to abort
[y/a]
Now download and extract the dataset into one of the given locations. For unix link systems, an example command can be
unzip -q <path-to-filename</filename.zip ~/.julia/datadeps
The corresponding folder tree should look like
├── test
│ ├── challenge_pairs
│ └── scans
└── training
├── ground_truth_vertices
├── registrations
└── scans
Press y
to re-attept loading.
dataset FAUST:
scans => 100-element Vector{Any}
registrations => 100-element Vector{Any}
labels => 100-element Vector{Vector{Bool}}
metadata => Dict{String, Any} with 0 entries
Load train and test split
julia> train_faust = FAUST(:train)
dataset FAUST:
scans => 100-element Vector{Any}
registrations => 100-element Vector{Any}
labels => 100-element Vector{Vector{Bool}}
metadata => Dict{String, Any} with 0 entries
julia> test_faust = FAUST(:test)
dataset FAUST:
scans => 200-element Vector{Any}
registrations => 0-element Vector{Any}
labels => 0-element Vector{Vector{Bool}}
metadata => Dict{String, Any} with 2 entries
Scan, registrations and ground-truth
julia> dataset = FAUST(); # defaults to train split
julia> scan = dataset.scans[1] # pick one scan
Mesh{3, Float32, Triangle}:
Triangle(Float32[-0.0045452323, 0.08537669, 0.22134435], Float32[-0.0030340434, 0.08542955, 0.22206494],
Float32[-0.0042151767, 0.08697654, 0.22171047])
Triangle(Float32[-0.05358432, 0.08490027, 0.17748278], Float32[-0.05379858, 0.083174236, 0.17670263],
Float32[-0.052645437, 0.08346437, 0.17816517])
.
.
.
Triangle(Float32[-0.07851, -1.0956081, 0.07093428], Float32[-0.06905176, -1.0986279, 0.07775441],
Float32[-0.069199145, -1.0928112, 0.06812464])
julia> registration = dataset.registrations[1] # The corresponding registration
Mesh{3, Float32, Triangle}:
Triangle(Float32[0.12491254, 0.51199615, 0.29041073], Float32[0.11376736, 0.5156298, 0.3007352],
Float32[0.119374536, 0.50043654, 0.29687837])
Triangle(Float32[0.119374536, 0.50043654, 0.29687837], Float32[0.11376736, 0.5156298, 0.3007352],
Float32[0.10888693, 0.5008964, 0.30557302])
.
.
.
Triangle(Float32[0.033744745, 0.030968456, 0.2359996], Float32[0.058017172, 0.044458304, 0.23422624],
Float32[0.03615713, 0.04858183, 0.23596591])
julia> label = dataset.labels[1] # The ground-truth/labels for each vertices in scan
176387-element Vector{Bool}:
1
1
1
.
.
.
0
0
0
References
Bogo, Federica & Romero, Javier & Loper, Matthew & Black, Michael. (2014). FAUST: Dataset
and evaluation for 3D mesh registration. Proceedings of the IEEE Computer Society Conference on Computer Vision and Pattern Recognition. 10.1109/CVPR.2014.491.