{"record":{"id":"696ec3d5936b8c8f","repo":"lllyasviel/Fooocus","slug":"not-0-inner-padding-factor-1-0","errorCode":null,"errorMessage":"Not (0 <= inner_padding_factor <= 1.0)","messagePattern":"Not \\(0 <= inner_padding_factor <= 1\\.0\\)","errorType":"validation","errorClass":"FaceWarpException","httpStatus":null,"severity":"error","filePath":"extras/facexlib/detection/align_trans.py","lineNumber":77,"sourceCode":"    # 0) make the inner region a square\n    if default_square:\n        size_diff = max(tmp_crop_size) - tmp_crop_size\n        tmp_5pts += size_diff / 2\n        tmp_crop_size += size_diff\n\n    if (output_size and output_size[0] == tmp_crop_size[0] and output_size[1] == tmp_crop_size[1]):\n\n        return tmp_5pts\n\n    if (inner_padding_factor == 0 and outer_padding == (0, 0)):\n        if output_size is None:\n            return tmp_5pts\n        else:\n            raise FaceWarpException('No paddings to do, output_size must be None or {}'.format(tmp_crop_size))\n\n    # check output size\n    if not (0 <= inner_padding_factor <= 1.0):\n        raise FaceWarpException('Not (0 <= inner_padding_factor <= 1.0)')\n\n    if ((inner_padding_factor > 0 or outer_padding[0] > 0 or outer_padding[1] > 0) and output_size is None):\n        output_size = tmp_crop_size * \\\n            (1 + inner_padding_factor * 2).astype(np.int32)\n        output_size += np.array(outer_padding)\n    if not (outer_padding[0] < output_size[0] and outer_padding[1] < output_size[1]):\n        raise FaceWarpException('Not (outer_padding[0] < output_size[0] and outer_padding[1] < output_size[1])')\n\n    # 1) pad the inner region according inner_padding_factor\n    if inner_padding_factor > 0:\n        size_diff = tmp_crop_size * inner_padding_factor * 2\n        tmp_5pts += size_diff / 2\n        tmp_crop_size += np.round(size_diff).astype(np.int32)\n\n    # 2) resize the padded inner region\n    size_bf_outer_pad = np.array(output_size) - np.array(outer_padding) * 2\n\n    if size_bf_outer_pad[0] * tmp_crop_size[1] != size_bf_outer_pad[1] * tmp_crop_size[0]:","sourceCodeStart":59,"sourceCodeEnd":95,"githubUrl":"https://github.com/lllyasviel/Fooocus/blob/ae05379cc97bc4361ec8b4ec90193dab21be763f/extras/facexlib/detection/align_trans.py#L59-L95","documentation":"get_reference_facial_points validates that inner_padding_factor lies in [0, 1.0]; it controls how much margin is added inside the face crop, and values outside that range produce nonsensical geometry, so the function raises FaceWarpException before computing points.","triggerScenarios":"Calling get_reference_facial_points with inner_padding_factor=-0.1 or 1.5; e.g. from a config where padding was specified as a percentage (25) instead of a fraction (0.25).","commonSituations":"Config units confusion (percent vs fraction); hand-tuning alignment margins; misreading GFPGAN example values.","solutions":["Clamp/set inner_padding_factor to a value in [0.0, 1.0] (typical usage: 0.25 for 512x512 crops)","Validate config values at load time: assert 0 <= inner_padding_factor <= 1"],"exampleFix":"// before\nget_reference_facial_points((512,512), inner_padding_factor=25, outer_padding=(0,0))\n\n// after\nget_reference_facial_points((512,512), inner_padding_factor=0.25, outer_padding=(0,0))","handlingStrategy":"validation","validationCode":"assert 0 <= inner_padding_factor <= 1.0, 'inner_padding_factor must be in [0, 1]'","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Validate padding factors at config load","Use fractions (0.25) not percentages (25)","Reuse known-good presets (e.g. 0.25 for 512 crops)"],"tags":["facexlib","face-alignment","padding","argument-validation"],"backgroundTag":null,"analyzedSha":"ae05379cc97bc4361ec8b4ec90193dab21be763f","analyzedAt":"2026-08-15T04:23:59.533Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}