fix: avoid rejecting final scale adjust candidate
This commit is contained in:
parent
be0b398e5c
commit
8ded477edd
@ -1476,6 +1476,13 @@ export async function POST(request: NextRequest) {
|
||||
: {}),
|
||||
}
|
||||
: undefined;
|
||||
const scaleAdjustFinalRetryVerificationConfig =
|
||||
scaleAdjustVerificationConfig && useFalScaleAdjustMockup
|
||||
? {
|
||||
...scaleAdjustVerificationConfig,
|
||||
allowOutsideChangedWhenChangedInside: true,
|
||||
}
|
||||
: scaleAdjustVerificationConfig;
|
||||
|
||||
const imageRequest: CanvasGenerateImageRequest = {
|
||||
aspectRatio: resolvedAspectRatio,
|
||||
@ -1576,7 +1583,7 @@ export async function POST(request: NextRequest) {
|
||||
prompt: falScaleAdjustGuideOnlyPrompt,
|
||||
promptExtend: false,
|
||||
referenceImages: [annotatedUpload.url],
|
||||
scaleAdjustVerification: scaleAdjustVerificationConfig,
|
||||
scaleAdjustVerification: scaleAdjustFinalRetryVerificationConfig,
|
||||
},
|
||||
]
|
||||
: undefined,
|
||||
|
||||
@ -52,6 +52,7 @@ export interface CanvasLocalEditCompositeConfig {
|
||||
}
|
||||
|
||||
export interface CanvasScaleAdjustVerificationConfig {
|
||||
allowOutsideChangedWhenChangedInside?: boolean;
|
||||
protectedRegions?: CanvasLocalEditCompositeRegion[];
|
||||
rejectFailedCandidates?: boolean;
|
||||
sourceImageUrl: string;
|
||||
@ -388,6 +389,8 @@ function normalizeScaleAdjustVerificationConfig(
|
||||
? {
|
||||
sourceImageUrl,
|
||||
regions,
|
||||
allowOutsideChangedWhenChangedInside:
|
||||
value.allowOutsideChangedWhenChangedInside === true,
|
||||
rejectFailedCandidates: value.rejectFailedCandidates === true,
|
||||
...(targetRegions.length > 0 ? { targetRegions } : {}),
|
||||
...(typeof scalePercent === "number" ? { scalePercent } : {}),
|
||||
@ -1161,9 +1164,25 @@ async function applyScaleAdjustVerificationToImages(params: {
|
||||
score: Number(scoreEvaluation(selected).toFixed(2)),
|
||||
});
|
||||
|
||||
const outsideChangeAccepted =
|
||||
verification.allowOutsideChangedWhenChangedInside &&
|
||||
selected.changedInside &&
|
||||
selected.outsideChanged;
|
||||
if (outsideChangeAccepted) {
|
||||
console.warn("[Canvas Generate Image] Scale adjust accepting best AI candidate despite outside-frame diff:", {
|
||||
debugLabel,
|
||||
imageIndex: selected.index,
|
||||
outsidePixelStats: {
|
||||
changedRatio: Number(selected.outsidePixelStats.changedRatio.toFixed(4)),
|
||||
meanDiff: Number(selected.outsidePixelStats.meanDiff.toFixed(2)),
|
||||
},
|
||||
regionDiffScores: selected.diffScores.map((score) => Number(score.toFixed(2))),
|
||||
});
|
||||
}
|
||||
|
||||
if (
|
||||
verification.rejectFailedCandidates &&
|
||||
(!selected.changedInside || selected.outsideChanged)
|
||||
(!selected.changedInside || (selected.outsideChanged && !outsideChangeAccepted))
|
||||
) {
|
||||
throw new ScaleAdjustOutputRejectedError({
|
||||
reason: selected.outsideChanged
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user