FaceRefine Plus and method B: tests and examples

Measured, side-by-side tests of ComfyUI-H3-FaceRefine-Plus and of method B against the official ComfyUI-H3-FaceRefine, on small and medium faces in MiniMax H3 video shots. This repository holds no code: only the test videos and this page.

1. How the tests were run

Every refine of a shot uses the same shot, the same MiniMax H3 prompt, the same reference pictures (face reference, character sheet, keyref) and the same seed (42). Only the refine settings change. All times are real render times on one NVIDIA RTX 5090 with the models already loaded. Each video plays at normal speed, then again at half speed.

SettingOfficial FaceRefine (its example workflow)FaceRefine Plus (one-shot example workflow)
SourceVHS Load VideoVHS Load Video FFmpeg, then RTX Video Super Resolution x2
Face cropH3 Face Track Crop, crop_factor 3.0H3 Face Track Crop, crop_factor 2.2
Samplerer_sde, 8 stepser_sde, 8 steps
Denoise0.400.15 (standard) or 0.30 (strong)
Per-frame multiplier1.0 at 30 px down to 0.35 at 120 px face height1.0 at every size
Paste backH3 Face Stitch (face_only, colour_match 1.0)H3 Face Stitch Plus (freq_sep) on the 2x base
After the pastenothingH3 Face Flow Lock, H3 Face Tone Match (lip fix), scale back to the source size

Note that the official multiplier lowers its own strength on bigger faces: at about 104 px the official refine runs at about 0.4 x 0.47 = 0.19, while Plus runs at its preset value on every frame.

Metrics

2. Test 1: small face (mara, 41-62 px)

A wide shot from the example assets of the FaceRefine Plus repo: 107 frames (4.46 s) at 1536x896, face 41-62 px tall. mara is an invented character; nothing here shows a real person.

Face zooms: H3 original | official FaceRefine | FaceRefine Plus 0.15 | FaceRefine Plus 0.30.
Whole source frame on top, to show how small the face is in the scene; face zooms below: original | official | Plus.
Whole frame, native size: official FaceRefine | FaceRefine Plus 0.15. Open the video full screen to see the faces.
Whole frame: official FaceRefine | FaceRefine Plus 0.30.
Whole frame: H3 original | official FaceRefine.
mara wide shot (107 f, face 41-62 px)WobbleFace sharpnessColour (dL / db)Identity vs close-upsRTX 5090
H3 original-3851-0.23-
Official FaceRefine0.70 %1613-0.9 / -2.20.6087 s
FaceRefine Plus 0.150.42 %2979-0.2 / -0.50.41256 s
FaceRefine Plus 0.300.45 %2948-0.2 / -0.50.68239 s

Plus keeps the face steadier (-40 % wobble), sharper (1.8x) and in the shot's colours. At the standard strength it stays close to the face H3 drew, so identity vs the close-ups is lower than with the official refine, which re-draws more (denoise 0.40). At the strong strength Plus overtakes the official on identity too (0.68 vs 0.60) and keeps the same wobble, sharpness and colour. Plus takes about three times as long.

3. Refine strength: standard 0.15 vs strong 0.30

FaceRefine Plus has a preset node, H3 FaceRefine Plus Strength, for the sampler denoise. These videos show the whole source frame on top and one row of face zooms: original | official | Plus 0.15 | Plus 0.30. The two Plus versions differ only in the denoise.

mara, face 41-62 px.
Vespa shot, the singer's face, 92-110 px.
WobbleFace sharpnessColour (dL / db)Identity vs close-upsRTX 5090
mara, Plus 0.150.42 %2979-0.2 / -0.50.41256 s
mara, Plus 0.300.45 %2948-0.2 / -0.50.68239 s
Vespa, Plus 0.150.12 %1094-0.3 / -0.20.43210 s
Vespa, Plus 0.300.12 %1009-0.3 / -0.20.42208 s

Doubling the strength does not add detail. On a small face it re-draws the face toward the reference pictures (identity 0.41 to 0.68). On a medium face the two presets measure almost the same. Use strong when the face must look more like the character; keep standard when it must stay the face H3 drew.

4. Method B: the same face in normal and refined shots

Method devised by the author of FaceRefine Plus. A refined wide shot can look like a slightly different person from the same character in the clip's close-ups, which H3 rendered straight from the reference. Method B makes the refined face the character's reference from the start:

  1. Render the clip from the original face reference.
  2. Run FaceRefine Plus on its wide shot.
  3. Turn the refined face into a new neutral reference portrait (Qwen Image 2.1 Edit).
  4. Rebuild the character sheet from it and re-render the clip from scratch: same prompt, same seed, new reference and sheet.
  5. Cut the new wide shot, make its keyref and run FaceRefine Plus on it again.

The workflows for every step are in the FaceRefine Plus repo.

Face zooms: H3 original | FaceRefine Plus | method B: H3 original | method B: FaceRefine Plus.
Whole source frame on top; zooms below: original | FaceRefine Plus | method B + FaceRefine Plus.
Whole frame: H3 original | FaceRefine Plus.
Whole frame: H3 original | method B + FaceRefine Plus (clip re-rendered from scratch, 315 s, then Plus 259 s).

Measured on the four example characters of the FaceRefine Plus repo (ArcFace cosine vs the close-up shot of the same clip; refined = the wide shot after FaceRefine Plus 0.15):

CharacterA: wideA: refinedB: wideB: refined
mara0.230.410.370.50
teo0.450.570.570.76
ines0.300.610.360.62
bruno0.490.620.570.74
mean0.370.550.470.65

Method B costs one extra clip render, so use it at the start of a new video, before the other clips: it changes the face a little, so don't switch mid-project. On a music video the same method took the refined face from 0.56 to 0.75.

5. Test 2: medium face (Vespa shot, 92-110 px)

Shot 1 of clip C05 of a music video (frames 0-89, 3.75 s at 1536x896): the singer's face only, 92-110 px tall. Same settings, prompt, five reference pictures and seed for every refine. For method B the whole C05 clip was re-rendered from scratch with a new reference of the singer made from his FaceRefine Plus face, and a character sheet made from it (same graph, prompt and seed), then the same Plus graph ran on the new shot.

Whole source frame on top; zooms: original | official | Plus | method B + Plus.
Face zooms only: original | official | Plus | method B + Plus.
Whole frame: official FaceRefine | FaceRefine Plus.
Whole frame: H3 original | official FaceRefine.
Whole frame: H3 original | FaceRefine Plus.
Whole frame: H3 original | method B + FaceRefine Plus.
Vespa shot (90 f, face 92-110 px)WobbleFace sharpnessColour (dL / db)Identity vs close-upRTX 5090
H3 original-1372-0.40-
Official FaceRefine0.20 %481-1.1 / -1.80.4492 s
FaceRefine Plus 0.150.12 %1094-0.3 / -0.20.43210 s
Method B + FaceRefine Plus0.11 %1413-0.3 / -0.20.33 (0.67 vs its new reference)476 s clip + 232 s

On this bigger face the official multiplier lowers its strength, so the identity gap of the mara shot disappears (0.44 vs 0.43). The sharpness gap grows: the official result keeps 35 % of the original's face detail, Plus 80 %. Wobble is 40 % lower with Plus, as on mara. Method B is the only version sharper than the original. Its identity vs the old close-up is low by design, because method B gives the singer a new face; against its own new reference it scores 0.67.

6. The first music-video comparison

The same Vespa shot, earlier settings: original | official FaceRefine (example values, four reference pictures, no keyref) | FaceRefine Plus with Flow Lock and Tone Match at the older default denoise 0.30 | latent hires re-render of the whole clip at 2304x1344, shown at 1536x896.

This was the first comparison, made while FaceRefine Plus was being developed. The tests above use the current settings and the same five reference pictures for every refine.

7. Summary