AutoFaceMonker
Automatic 3D facial template registration using MVMP landmark detection and MeshMonk nonrigid surface registration.
Given a template mesh and a target 3D face scan, AutoFaceMonker detects 478 MediaPipe facial landmarks via MVMP, aligns the template with Procrustes analysis, then refines the fit with MeshMonk nonrigid registration — no manual intervention required.
Installation
pip install autofacemonker
Requires Python ≥ 3.11.
Quick Start
autofacemonker subject.obj -o warped.ply
This uses the bundled template mesh and built-in 5-point anatomical landmark correspondences.
Python API
from autofacemonker import AutoFaceMonker
# Use default template and correspondences
monker = AutoFaceMonker()
warped_vertices = monker.register("subject.obj", save_path="warped.ply")
Custom template and correspondences
monker = AutoFaceMonker(
template="my_template.ply",
correspondences=[
(0, 3572), # nasion → template vertex 3572
(4, 3589), # nose tip → template vertex 3589
(133, 2436), # left eye → template vertex 2436
(362, 4648), # right eye → template vertex 4648
(61, 2310), # left mouth → template vertex 2310
(291, 4849), # right mouth → template vertex 4849
(152, 3543), # chin → template vertex 3543
],
num_iterations=200,
)
warped = monker.register("subject.obj")
CLI
usage: autofacemonker <target.obj> [options]
positional arguments:
target Path to target .obj mesh
options:
-t, --template Template mesh path (default: bundled template.ply)
-c, --correspondences
JSON file with landmark→vertex mapping
-o, --out Output PLY path (default: <target>_warped.ply)
-n, --iterations MeshMonk nonrigid iterations (default: 80)
Correspondence JSON format
{"0": 3572, "4": 3589, "133": 2436, "362": 4648, "61": 2310, "291": 4849, "152": 3543}
How It Works
-
MVMP detects 478 MediaPipe facial landmarks on the target mesh using multi-view 2D projections with 5 zone cameras.
-
Procrustes rigidly aligns the template using the 5 anatomical landmark correspondences (upper lip, both inner canthi, both mouth corners), computing rotation, translation, and uniform scale.
-
MeshMonk nonrigid refines the fit by deforming the template to match the target surface. The target is first cropped to the region around the aligned template, and the nonrigid registration uses parameters matching Cliniface's rNonRigid configuration (80 iterations, sigma 1.6, push-pull equalisation).
Requirements
- Python ≥ 3.11
- meshmonk ≥ 0.3.0
- mvmp ≥ 1.3.0
- trimesh
- numpy
License
MIT
Metadata
Release files for autofacemonker 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| autofacemonker-0.2.0.tar.gz | 159.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| autofacemonker-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 314.2 kB
Release files / autofacemonker-0.2.0.tar.gz
| Download URL | autofacemonker-0.2.0.tar.gz |
|---|---|
| Size | 159.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c5adedf86ac24c33bd82d2f76ca23455a8b0ec6814c471ff74e7202cc496ab22
|
|
BLAKE2b-256 checksum How to use checksums |
4e11794f08b14edc95b6d511bb17db40186acd8b24b31d1177dc8103d9ba1fa8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 3, 2026.
Transparency logRelease files / autofacemonker-0.2.0-py3-none-any.whl
| Download URL | autofacemonker-0.2.0-py3-none-any.whl |
|---|---|
| Size | 155.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
828b58ecda143cb0097c84656254f01bfae17bbb46ff5093c2cd902d2edc9f0b
|
|
BLAKE2b-256 checksum How to use checksums |
47586515e1185bdd20f2f43a00d61f223835762a66134b87b7fca3fc804bde92
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 3, 2026.
Transparency log