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.
Follow the smplpytorch
setup procedure described here.
Run the script by typing python main.py
command inside terminal.
- PyTorch
- Trimesh
- Scipy & Numpy
- robust-laplacian
The SMPL Pytorch module was cloned from gulvarol repository, that implements SMPL human body layer for PyTorch.
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.
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.