ComfyUI Node

Face: SMIRK

Turn a blank stare into actual expression

By ameliacode·Created 5 months ago·Updated 2 months ago· 5
Face: SMIRK
  • model
  • image
  • smplx_face

Face: SMIRK is the smallest node in this pack and arguably the highest bang-for-buck. Your SMPL-X body estimates come out of the box with a neutral, expressionless face - the estimators don't recover facial expression unless you ask for it. This node is how you ask. It runs the SMIRK encoder on a face crop, turns the result into SMPL-X expression coefficients plus jaw_pose, and hands it over as an smplx_face result for a body estimator to graft.

Like its sibling Hand: WiLoR, this is a partial-SMPL-X node: the output carries only the face, no body, no hands. It's not a dead-end though - it wires into Body: NLF or Full Body: Multi-HMR2 via their smplx_face input. Note the precedence rule: when both smplx_hands and smplx_face are connected, the dedicated face input wins for jaw and expression. So wire WiLoR into smplx_hands and this into smplx_face, and each specialist owns its domain.

The one input that matters

  • model - the SMIRK_MODEL output from Load SMIRK.
  • image - this is where all the real tuning lives, and the tooltip says it plainly: give it a face crop, roughly centred. SMIRK resizes to 224×224 internally, so a tight head-region crop is what you want - the face should dominate the frame. Feeding it the full body photo is the most common mistake, and you get mushier expression as a result. Crop to the head, keep the face centered, done.

Output is a single smplx_face connection feeding the body estimator.

Installing

Standard pack install - ComfyUI Manager, search SMPLx Estimator, install, restart - or:

cd ComfyUI/custom_nodes
git clone https://github.com/ameliacode/ComfyUI-SMPLx-Estimator.git
cd ComfyUI-SMPLx-Estimator
pip install -r requirements.txt
python install.py

The source clones into vendor/smirk automatically; the only manual download is SMIRK_em1.pt into models/smirk/ (from the georgeretsi/smirk repo). No registration wall, no MANO-style surprise - this is the friendliest path in the pack to get running.

Common issues

  • Weak or absent expression. Almost always a crop problem, not a node problem. The face is too small in the frame or off-center. Crop tighter, re-run, compare.
  • Forgetting the wire. smplx_face is optional, so a missing connection is silent - your graph runs, the face just stays neutral. Double-check the wire if your output looks blank-faced.
  • License nuance. SMIRK code is MIT, but it drives FLAME, which is MPI non-commercial. In practice: research use only, same as the rest of the pack.

There's no depth to this node, and there doesn't need to be. Load SMIRK, crop a face, wire it in, and your body estimates finally start looking like people who are actually doing something with their face.

CategorySMPLx Estimator

Inputs (2)

NameTypeDefaultDescription
modelSMIRK_MODEL
imageIMAGEFace crop (roughly centred). Resized to 224x224 for SMIRK. Use the head region for best results.

Outputs (1)

NameTypeDescription
smplx_faceSMPLX