{"record":{"id":"47e3e9ba07a453f4","repo":"lllyasviel/Fooocus","slug":"no-paddings-to-do-output-size-must-be-none-or","errorCode":null,"errorMessage":"No paddings to do, output_size must be None or {}","messagePattern":"No paddings to do, output_size must be None or (.+?)","errorType":"validation","errorClass":"FaceWarpException","httpStatus":null,"severity":"error","filePath":"extras/facexlib/detection/align_trans.py","lineNumber":73,"sourceCode":"\n    tmp_5pts = np.array(REFERENCE_FACIAL_POINTS)\n    tmp_crop_size = np.array(DEFAULT_CROP_SIZE)\n\n    # 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","sourceCodeStart":55,"sourceCodeEnd":91,"githubUrl":"https://github.com/lllyasviel/Fooocus/blob/ae05379cc97bc4361ec8b4ec90193dab21be763f/extras/facexlib/detection/align_trans.py#L55-L91","documentation":"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.","triggerScenarios":"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).","commonSituations":"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.","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"],"exampleFix":"// before\npts = get_reference_facial_points((256,256), 0, (0,0), False, output_size=(512,512))\n\n// after\npts = get_reference_facial_points((256,256), 0, (0,0), False, output_size=None)","handlingStrategy":"validation","validationCode":"if inner_padding_factor == 0 and outer_padding == (0, 0):\n    output_size = None  # or exactly crop_size","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep output_size=None when paddings are zeroed","Centralize alignment parameters in one config object","Document that output_size is only meaningful with padding"],"tags":["facexlib","face-alignment","padding","argument-validation"],"backgroundTag":null,"analyzedSha":"ae05379cc97bc4361ec8b4ec90193dab21be763f","analyzedAt":"2026-08-15T04:23:59.533Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}