lllyasviel/Fooocus · error · FaceWarpException
No paddings to do, output_size must be None or {}
Error message
No paddings to do, output_size must be None or {} What it means
In get_reference_facial_points, when inner_padding_factor is 0 and outer_padding is (0,0) there is no padding to compute, so the function can only return the un-padded 5-point layout; if the caller additionally demands a specific output_size different from the natural crop size, it raises FaceWarpException telling you output_size must be None or exactly tmp_crop_size.
Source
Thrown at extras/facexlib/detection/align_trans.py:73
tmp_5pts = np.array(REFERENCE_FACIAL_POINTS)
tmp_crop_size = np.array(DEFAULT_CROP_SIZE)
# 0) make the inner region a square
if default_square:
size_diff = max(tmp_crop_size) - tmp_crop_size
tmp_5pts += size_diff / 2
tmp_crop_size += size_diff
if (output_size and output_size[0] == tmp_crop_size[0] and output_size[1] == tmp_crop_size[1]):
return tmp_5pts
if (inner_padding_factor == 0 and outer_padding == (0, 0)):
if output_size is None:
return tmp_5pts
else:
raise FaceWarpException('No paddings to do, output_size must be None or {}'.format(tmp_crop_size))
# check output size
if not (0 <= inner_padding_factor <= 1.0):
raise FaceWarpException('Not (0 <= inner_padding_factor <= 1.0)')
if ((inner_padding_factor > 0 or outer_padding[0] > 0 or outer_padding[1] > 0) and output_size is None):
output_size = tmp_crop_size * \
(1 + inner_padding_factor * 2).astype(np.int32)
output_size += np.array(outer_padding)
if not (outer_padding[0] < output_size[0] and outer_padding[1] < output_size[1]):
raise FaceWarpException('Not (outer_padding[0] < output_size[0] and outer_padding[1] < output_size[1])')
# 1) pad the inner region according inner_padding_factor
if inner_padding_factor > 0:
size_diff = tmp_crop_size * inner_padding_factor * 2
tmp_5pts += size_diff / 2
tmp_crop_size += np.round(size_diff).astype(np.int32)
View on GitHub (pinned to ae05379cc9)
Solutions
- Pass output_size=None when both paddings are zero
- Or set output_size equal to the (possibly squared) crop_size
- If you need a different output size, use a nonzero inner_padding_factor or outer_padding instead
Example fix
// before pts = get_reference_facial_points((256,256), 0, (0,0), False, output_size=(512,512)) // after pts = get_reference_facial_points((256,256), 0, (0,0), False, output_size=None)
Defensive patterns
Strategy: validation
Validate before calling
if inner_padding_factor == 0 and outer_padding == (0, 0):
output_size = None # or exactly crop_size Prevention
- Keep output_size=None when paddings are zeroed
- Centralize alignment parameters in one config object
- Document that output_size is only meaningful with padding
When it happens
Trigger: Calling get_reference_facial_points(crop_size, inner_padding_factor=0, outer_padding=(0,0), output_size=some_other_size) where output_size != crop_size (after the square-crop adjustment).
Common situations: Custom alignment code copied from GFPGAN/face-restoration pipelines that hardcodes an output_size while zeroing padding factors; passing (0,0) padding from a config that also sets a fixed output resolution.
Related errors
- Not (0 <= inner_padding_factor <= 1.0)
- Not (outer_padding[0] < output_size[0] and outer_padding[1]
- Must have (output_size - outer_padding)= some_scale * (crop_
- reference_pts.shape must be (K,2) or (2,K) and K>2
- facial_pts.shape must be (K,2) or (2,K) and K>2
AI-assisted analysis of lllyasviel/Fooocus@ae05379cc9 (2026-08-15).
Data as JSON: /api/errors/47e3e9ba07a453f4.
Report an issue: GitHub.