mirror of
https://github.com/easydiffusion/easydiffusion.git
synced 2025-08-10 16:17:45 +02:00
Option to select Distilled Guidance Scale; Show warnings for Euler Ancestral sampler with Flux
This commit is contained in:
@ -14,6 +14,10 @@ const taskConfigSetup = {
|
||||
sampler_name: "Sampler",
|
||||
num_inference_steps: "Inference Steps",
|
||||
guidance_scale: "Guidance Scale",
|
||||
distilled_guidance_scale: {
|
||||
label: "Distilled Guidance Scale",
|
||||
visible: ({ reqBody }) => reqBody?.distilled_guidance_scale,
|
||||
},
|
||||
use_stable_diffusion_model: "Model",
|
||||
clip_skip: {
|
||||
label: "Clip Skip",
|
||||
@ -76,6 +80,8 @@ let numOutputsParallelField = document.querySelector("#num_outputs_parallel")
|
||||
let numInferenceStepsField = document.querySelector("#num_inference_steps")
|
||||
let guidanceScaleSlider = document.querySelector("#guidance_scale_slider")
|
||||
let guidanceScaleField = document.querySelector("#guidance_scale")
|
||||
let distilledGuidanceScaleSlider = document.querySelector("#distilled_guidance_scale_slider")
|
||||
let distilledGuidanceScaleField = document.querySelector("#distilled_guidance_scale")
|
||||
let outputQualitySlider = document.querySelector("#output_quality_slider")
|
||||
let outputQualityField = document.querySelector("#output_quality")
|
||||
let outputQualityRow = document.querySelector("#output_quality_row")
|
||||
@ -1051,6 +1057,9 @@ function makeImage() {
|
||||
if (guidanceScaleField.value == "") {
|
||||
guidanceScaleField.value = guidanceScaleSlider.value / 10
|
||||
}
|
||||
if (distilledGuidanceScaleField.value == "") {
|
||||
distilledGuidanceScaleField.value = distilledGuidanceScaleSlider.value / 10
|
||||
}
|
||||
if (hypernetworkStrengthField.value == "") {
|
||||
hypernetworkStrengthField.value = hypernetworkStrengthSlider.value / 100
|
||||
}
|
||||
@ -1419,6 +1428,9 @@ function getCurrentUserRequest() {
|
||||
newTask.reqBody.control_filter_to_apply = controlImageFilterField.value
|
||||
}
|
||||
}
|
||||
if (stableDiffusionModelField.value.toLowerCase().includes("flux")) {
|
||||
newTask.reqBody.distilled_guidance_scale = parseFloat(distilledGuidanceScaleField.value)
|
||||
}
|
||||
|
||||
return newTask
|
||||
}
|
||||
@ -1866,14 +1878,14 @@ function checkGuidanceValue() {
|
||||
let guidanceWarningText = document.querySelector("#guidanceWarningText")
|
||||
if (sdModelField.value.toLowerCase().includes("flux")) {
|
||||
if (guidance > 1.5) {
|
||||
guidanceWarningText.innerText = "Flux recommends a guidance scale of 1"
|
||||
guidanceWarningText.innerText = "Flux recommends a 'Guidance Scale' of 1"
|
||||
guidanceWarning.classList.remove("displayNone")
|
||||
} else {
|
||||
guidanceWarning.classList.add("displayNone")
|
||||
}
|
||||
} else {
|
||||
if (guidance < 2) {
|
||||
guidanceWarningText.innerText = "A higher Guidance Scale is recommended!"
|
||||
guidanceWarningText.innerText = "A higher 'Guidance Scale' is recommended!"
|
||||
guidanceWarning.classList.remove("displayNone")
|
||||
} else {
|
||||
guidanceWarning.classList.add("displayNone")
|
||||
@ -1884,6 +1896,37 @@ sdModelField.addEventListener("change", checkGuidanceValue)
|
||||
guidanceScaleField.addEventListener("change", checkGuidanceValue)
|
||||
guidanceScaleSlider.addEventListener("change", checkGuidanceValue)
|
||||
|
||||
function checkGuidanceScaleVisibility() {
|
||||
let guidanceScaleContainer = document.querySelector("#distilled_guidance_scale_container")
|
||||
if (sdModelField.value.toLowerCase().includes("flux")) {
|
||||
guidanceScaleContainer.classList.remove("displayNone")
|
||||
} else {
|
||||
guidanceScaleContainer.classList.add("displayNone")
|
||||
}
|
||||
}
|
||||
sdModelField.addEventListener("change", checkGuidanceScaleVisibility)
|
||||
|
||||
function checkFluxSampler() {
|
||||
let samplerWarning = document.querySelector("#fluxSamplerWarning")
|
||||
if (sdModelField.value.toLowerCase().includes("flux")) {
|
||||
if (samplerField.value == "euler_a") {
|
||||
samplerWarning.classList.remove("displayNone")
|
||||
} else {
|
||||
samplerWarning.classList.add("displayNone")
|
||||
}
|
||||
} else {
|
||||
samplerWarning.classList.add("displayNone")
|
||||
}
|
||||
}
|
||||
sdModelField.addEventListener("change", checkFluxSampler)
|
||||
samplerField.addEventListener("change", checkFluxSampler)
|
||||
|
||||
document.addEventListener("refreshModels", function() {
|
||||
checkGuidanceValue()
|
||||
checkGuidanceScaleVisibility()
|
||||
checkFluxSampler()
|
||||
})
|
||||
|
||||
// function onControlImageFilterChange() {
|
||||
// let filterId = controlImageFilterField.value
|
||||
// if (filterId.includes("openpose")) {
|
||||
@ -2012,6 +2055,27 @@ guidanceScaleSlider.addEventListener("input", updateGuidanceScale)
|
||||
guidanceScaleField.addEventListener("input", updateGuidanceScaleSlider)
|
||||
updateGuidanceScale()
|
||||
|
||||
/********************* Distilled Guidance **************************/
|
||||
function updateDistilledGuidanceScale() {
|
||||
distilledGuidanceScaleField.value = distilledGuidanceScaleSlider.value / 10
|
||||
distilledGuidanceScaleField.dispatchEvent(new Event("change"))
|
||||
}
|
||||
|
||||
function updateDistilledGuidanceScaleSlider() {
|
||||
if (distilledGuidanceScaleField.value < 0) {
|
||||
distilledGuidanceScaleField.value = 0
|
||||
} else if (distilledGuidanceScaleField.value > 50) {
|
||||
distilledGuidanceScaleField.value = 50
|
||||
}
|
||||
|
||||
distilledGuidanceScaleSlider.value = distilledGuidanceScaleField.value * 10
|
||||
distilledGuidanceScaleSlider.dispatchEvent(new Event("change"))
|
||||
}
|
||||
|
||||
distilledGuidanceScaleSlider.addEventListener("input", updateDistilledGuidanceScale)
|
||||
distilledGuidanceScaleField.addEventListener("input", updateDistilledGuidanceScaleSlider)
|
||||
updateDistilledGuidanceScale()
|
||||
|
||||
/********************* Prompt Strength *******************/
|
||||
function updatePromptStrength() {
|
||||
promptStrengthField.value = promptStrengthSlider.value / 100
|
||||
|
Reference in New Issue
Block a user