SpectreImg2SMPL
SPECTRE Image2SMPL
- spectre_model
- image
- SMPL_MULTIPLE_SUBJECTS
- CROPPED_FACE_IMAGE
While Human4D_Img2SMPL recovers whole bodies from video, SpectreImg2SMPL recovers faces. It takes a sequence of image frames plus a loaded SPECTRE_MODEL and reconstructs a 3D face mesh for every frame - shape, expression, and pose - handed back in the same SMPL_MULTIPLE_SUBJECTS container the body path uses. If you want to capture someone's performance, drive a head with their expressions, or just turn a face track into geometry, this is the node.
It's the face-4D half of the pack, and it fits the pipeline in a familiar way: the output feeds the same multi-subject render node (Render Multiple SMPL Mesh), the multi-subject exporter, and its CROPPED_FACE_IMAGE output gives you the aligned face crops for inspection or downstream use.
How it works
Per frame it detects faces, aligns landmarks, and crops each face to a fixed 224×224 patch. Because SPECTRE uses a temporal convolution with a receptive field of five frames, the video is processed in overlapping chunks (default 50 frames) with the overlap edges dropped to avoid padding artifacts - a classic SPECTRE detail the pack faithfully ports. The model encodes each crop into 3DMM parameters and decodes them into FLAME face vertices, which are packaged like the body path's multi-subject data, complete with a focal length tuned to the 224px crop.
The inputs that matter
spectre_model- fromSpectreFaceReconLoader.image- your frames, batched.chunk_size(default 50, range 10–100) - frames per processing chunk. Lower it if memory is tight (SPECTRE is chunked for exactly this reason); higher chunks are faster but hungrier.
Outputs: SMPL_MULTIPLE_SUBJECTS (face meshes per frame) and CROPPED_FACE_IMAGE (the aligned 224×224 crops).
Installation
Part of Fannovel16/ComfyUI-MotionDiff. Install via ComfyUI Manager (search "ComfyUI MotionDiff") or clone into ComfyUI/custom_nodes, install requirements, restart. The SPECTRE checkpoint auto-downloads on first use, and the pack overall is a heavy install (smplx, pyrender, timm, spacy...).
Gotchas
Naming again: the output is called SMPL, but it's faces - FLAME geometry specifically. Don't wire this into a full-body OpenPose renderer (that node raises NotImplementedError without body keypoints). Instead, render the face meshes with the multi-subject render node.
Faces that go undetected for stretches get landmark interpolation - SPECTRE fills gaps by interpolating between detected frames - but if a face is badly occluded for a long run, the reconstruction drifts and you'll see the mesh lock onto a stale expression. Shorter clips or better-lit footage help. And because the faces are reconstructed in 224px-crop space with their own camera, the rendered heads look like tightly-cropped busts, not full scenes - compose accordingly.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| spectre_model | SPECTRE_MODEL | — | |
| image | IMAGE | — | |
| chunk_size | INT | 5010–100 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| SMPL_MULTIPLE_SUBJECTS | SMPL_MULTIPLE_SUBJECTS | — |
| CROPPED_FACE_IMAGE | IMAGE | — |