Skip to content

Human 3D model partiality representation via Mean Curvature Flow

Notifications You must be signed in to change notification settings

luismautone/human-body-mcf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mean Curvature Flow for Fairness

The Python script creates a random human 3D model with a leg partiality. The code simulates an amputation through the deformation of the human shape: firstly vertices and faces belonging to the limb are identified; next a Mean Curvature Flow is applied to them: it has the effect of "smoothing out" the geometry.

The explored method is part of my CS Master's thesis at Sapienza University titled Fairness in Geometry Processing.

Run

Follow the smplpytorch setup procedure described here. Run the script by typing python main.py command inside terminal.

Python dependencies

  • PyTorch
  • Trimesh
  • Scipy & Numpy
  • robust-laplacian

Acknowledgements

The SMPL Pytorch module was cloned from gulvarol repository, that implements SMPL human body layer for PyTorch.

Thesis description

The thesis context is Fair Machine Learning, the study of correcting bias respect to sensitive variables in automated decision processes based on ML models. Generally current human body model generation methods create human bodies compliant with the standard person capabilities and we have very little material on bodies considered a deviation from the norm. The objective is to work on geometric methods that favor a representation of all human bodies in their diversity.

In particular we focused on the body modeling aspect of Virtual Humans and its creation given by statistical body models. Statistical body models are geometric models that describe human pose and body shape in a unified framework by leveraging an encoding for mesh surfaces; this technique fastly produces a human 3D model with a quite satisfactory level of detail. We chose SMPL as our statistical model.

We generated a 3D dataset with two types of classes: α shapes have the most common appearance for a human body; β shapes reproduce the appearance of a person that no longer possesses a limb. It was important for having a realistic appearance that we did not have a clean cut near the point of amputation, but instead a "smooth" deformation. Specifically we applied a Conformalized Mean Curvature Flow and we took mkazhdan code as a reference, so convergence problems like extreme expansion of the shape were avoided.

Schermata 2022-10-17 alle 12 06 27

Schermata 2022-10-17 alle 12 06 33

Next we trained an Autoencoder Neural Network on the dataset for the creation of latent spaces that contain the representation for both classes of bodies. For further details on this part go here.