fix: florence2 — hide irrelevant Upscale Ratios + Tiled Sampling fields; add diagnostic log
Upscale Ratios is meaningless for florence2_hires (it inpaints a region, not the whole image — Target MP controls the internal pass size). Tiled Sampling is also irrelevant since Florence2 crops are too small to need tiling. Diagnostic log line: '[Florence2HiResFix] src=(WxH) crop=(WxH) requested_MP=X -> internal_pass=(WxH)=Y MP'. This will reveal whether target_megapixels is actually being applied to the resize step.
This commit is contained in:
+7
-2
@@ -538,8 +538,13 @@ def run_florence2_step(
|
||||
|
||||
# 7. Megapixel resize (NHWC -> NCHW for common_upscale -> NHWC back)
|
||||
import comfy.utils
|
||||
target_w, target_h = compute_target_dims(
|
||||
crop_w, crop_h, float(step_config.get("target_megapixels", 1.0))
|
||||
requested_mp = float(step_config.get("target_megapixels", 1.0))
|
||||
target_w, target_h = compute_target_dims(crop_w, crop_h, requested_mp)
|
||||
actual_mp = (target_w * target_h) / (1024 * 1024)
|
||||
print(
|
||||
f"[Florence2HiResFix] src=({source_image.shape[2]}x{source_image.shape[1]}) "
|
||||
f"crop=({crop_w}x{crop_h}) requested_MP={requested_mp:.3f} "
|
||||
f"-> internal_pass=({target_w}x{target_h})={actual_mp:.3f}MP"
|
||||
)
|
||||
cropped_nchw = cropped_img.movedim(-1, 1)
|
||||
resized_nchw = comfy.utils.common_upscale(
|
||||
|
||||
@@ -5964,13 +5964,17 @@ export function renderUpscalingSection(node, container, modelLists) {
|
||||
|
||||
// --- HiRes fields (multi-value: ratios, denoise) ---
|
||||
if (showHires) {
|
||||
const ratiosInput = document.createElement("input");
|
||||
ratiosInput.type = "text";
|
||||
ratiosInput.className = "cb-input";
|
||||
ratiosInput.value = ucfg.upscale_ratios || "1.5";
|
||||
ratiosInput.placeholder = "1.2, 1.5, 2.0";
|
||||
ratiosInput.onchange = () => { ucfg.upscale_ratios = ratiosInput.value; node.saveState(); };
|
||||
grid.appendChild(createInputGroup("Upscale Ratios", ratiosInput));
|
||||
// Upscale Ratios is irrelevant for florence2_hires (it inpaints a region,
|
||||
// not the whole image; Target MP controls the internal pass size instead).
|
||||
if (!showFlorence2) {
|
||||
const ratiosInput = document.createElement("input");
|
||||
ratiosInput.type = "text";
|
||||
ratiosInput.className = "cb-input";
|
||||
ratiosInput.value = ucfg.upscale_ratios || "1.5";
|
||||
ratiosInput.placeholder = "1.2, 1.5, 2.0";
|
||||
ratiosInput.onchange = () => { ucfg.upscale_ratios = ratiosInput.value; node.saveState(); };
|
||||
grid.appendChild(createInputGroup("Upscale Ratios", ratiosInput));
|
||||
}
|
||||
|
||||
// NOTE: renderUpscalingSection is a session-level section (no configArray param).
|
||||
// Cannot use isLTXConfigArray() here — left as node.state.model_type guard intentionally.
|
||||
@@ -5995,13 +5999,17 @@ export function renderUpscalingSection(node, container, modelLists) {
|
||||
grid.appendChild(createInputGroup("HiRes Steps (0=same)", stepsInput));
|
||||
|
||||
// --- HiRes Tiled Sampling (tile the latent for KSampler to prevent OOM on large upscales) ---
|
||||
const tiledSamplingCb = document.createElement("input");
|
||||
tiledSamplingCb.type = "checkbox";
|
||||
tiledSamplingCb.checked = ucfg.hires_tiled_sampling || false;
|
||||
tiledSamplingCb.onchange = () => { ucfg.hires_tiled_sampling = tiledSamplingCb.checked; node.saveState(); renderPipelines(); };
|
||||
grid.appendChild(createInputGroup("HiRes Tiled Sampling", tiledSamplingCb));
|
||||
// Hidden for florence2_hires — tiled sampling doesn't apply to its
|
||||
// crop-then-paste pipeline (crops are too small to need tiling).
|
||||
if (!showFlorence2) {
|
||||
const tiledSamplingCb = document.createElement("input");
|
||||
tiledSamplingCb.type = "checkbox";
|
||||
tiledSamplingCb.checked = ucfg.hires_tiled_sampling || false;
|
||||
tiledSamplingCb.onchange = () => { ucfg.hires_tiled_sampling = tiledSamplingCb.checked; node.saveState(); renderPipelines(); };
|
||||
grid.appendChild(createInputGroup("HiRes Tiled Sampling", tiledSamplingCb));
|
||||
}
|
||||
|
||||
if (ucfg.hires_tiled_sampling) {
|
||||
if (ucfg.hires_tiled_sampling && !showFlorence2) {
|
||||
const htWidthInput = document.createElement("input");
|
||||
htWidthInput.type = "number";
|
||||
htWidthInput.className = "cb-input";
|
||||
|
||||
Reference in New Issue
Block a user