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;
|
: undefined;
|
||||||
|
const scaleAdjustFinalRetryVerificationConfig =
|
||||||
|
scaleAdjustVerificationConfig && useFalScaleAdjustMockup
|
||||||
|
? {
|
||||||
|
...scaleAdjustVerificationConfig,
|
||||||
|
allowOutsideChangedWhenChangedInside: true,
|
||||||
|
}
|
||||||
|
: scaleAdjustVerificationConfig;
|
||||||
|
|
||||||
const imageRequest: CanvasGenerateImageRequest = {
|
const imageRequest: CanvasGenerateImageRequest = {
|
||||||
aspectRatio: resolvedAspectRatio,
|
aspectRatio: resolvedAspectRatio,
|
||||||
@ -1576,7 +1583,7 @@ export async function POST(request: NextRequest) {
|
|||||||
prompt: falScaleAdjustGuideOnlyPrompt,
|
prompt: falScaleAdjustGuideOnlyPrompt,
|
||||||
promptExtend: false,
|
promptExtend: false,
|
||||||
referenceImages: [annotatedUpload.url],
|
referenceImages: [annotatedUpload.url],
|
||||||
scaleAdjustVerification: scaleAdjustVerificationConfig,
|
scaleAdjustVerification: scaleAdjustFinalRetryVerificationConfig,
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
: undefined,
|
: undefined,
|
||||||
|
|||||||
@ -52,6 +52,7 @@ export interface CanvasLocalEditCompositeConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface CanvasScaleAdjustVerificationConfig {
|
export interface CanvasScaleAdjustVerificationConfig {
|
||||||
|
allowOutsideChangedWhenChangedInside?: boolean;
|
||||||
protectedRegions?: CanvasLocalEditCompositeRegion[];
|
protectedRegions?: CanvasLocalEditCompositeRegion[];
|
||||||
rejectFailedCandidates?: boolean;
|
rejectFailedCandidates?: boolean;
|
||||||
sourceImageUrl: string;
|
sourceImageUrl: string;
|
||||||
@ -388,6 +389,8 @@ function normalizeScaleAdjustVerificationConfig(
|
|||||||
? {
|
? {
|
||||||
sourceImageUrl,
|
sourceImageUrl,
|
||||||
regions,
|
regions,
|
||||||
|
allowOutsideChangedWhenChangedInside:
|
||||||
|
value.allowOutsideChangedWhenChangedInside === true,
|
||||||
rejectFailedCandidates: value.rejectFailedCandidates === true,
|
rejectFailedCandidates: value.rejectFailedCandidates === true,
|
||||||
...(targetRegions.length > 0 ? { targetRegions } : {}),
|
...(targetRegions.length > 0 ? { targetRegions } : {}),
|
||||||
...(typeof scalePercent === "number" ? { scalePercent } : {}),
|
...(typeof scalePercent === "number" ? { scalePercent } : {}),
|
||||||
@ -1161,9 +1164,25 @@ async function applyScaleAdjustVerificationToImages(params: {
|
|||||||
score: Number(scoreEvaluation(selected).toFixed(2)),
|
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 (
|
if (
|
||||||
verification.rejectFailedCandidates &&
|
verification.rejectFailedCandidates &&
|
||||||
(!selected.changedInside || selected.outsideChanged)
|
(!selected.changedInside || (selected.outsideChanged && !outsideChangeAccepted))
|
||||||
) {
|
) {
|
||||||
throw new ScaleAdjustOutputRejectedError({
|
throw new ScaleAdjustOutputRejectedError({
|
||||||
reason: selected.outsideChanged
|
reason: selected.outsideChanged
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user