From 160b400427b53dffa6e8c3cd162f82f0b93aac96 Mon Sep 17 00:00:00 2001 From: AIrjen Date: Tue, 25 Jul 2023 21:01:10 +0200 Subject: [PATCH] Fix for issue in 1.5 Also added base size in, for handling SD XL 1024 formats. Unsure yet about other ratio's --- call_txt2img.py | 28 +++++++++++++++++++--------- main.py | 32 ++++++++++++++++++++++++++------ scripts/onebuttonprompt.py | 7 +++++-- 3 files changed, 50 insertions(+), 17 deletions(-) diff --git a/call_txt2img.py b/call_txt2img.py index 12cb196..d5c5e01 100644 --- a/call_txt2img.py +++ b/call_txt2img.py @@ -9,7 +9,7 @@ from model_lists import * import time import random -def call_txt2img(passingprompt,ratio,upscale,debugmode,filename="",model = "currently selected model",samplingsteps = "40",cfg= "7",hiressteps ="0",denoisestrength="0.6",samplingmethod="DPM++ SDE Karras", upscaler="R-ESRGAN 4x+",hiresscale="2",apiurl="http://127.0.0.1:7860", qualitygate=False,quality="7.6",runs="5",negativeprompt="",qualityhiresfix = False, qualitymode = "highest", qualitykeep="keep used"): +def call_txt2img(passingprompt,ratio,upscale,debugmode,filename="",model = "currently selected model",samplingsteps = "40",cfg= "7",hiressteps ="0",denoisestrength="0.6",samplingmethod="DPM++ SDE Karras", upscaler="R-ESRGAN 4x+",hiresscale="2",apiurl="http://127.0.0.1:7860", qualitygate=False,quality="7.6",runs="5",negativeprompt="",qualityhiresfix = False, qualitymode = "highest", qualitykeep="keep used", basesize="512"): @@ -29,18 +29,28 @@ def call_txt2img(passingprompt,ratio,upscale,debugmode,filename="",model = "curr cfg_scale = cfg #size - if(ratio=='wide'): - width = "768" - height = "512" - elif(ratio=='portrait'): - width = "512" - height = "768" + # from base ratio + if(ratio=='wide' and basesize != "1024"): + width = str(int(basesize) + 256) + height = basesize + elif(ratio=='wide' and basesize == "1024"): + width = "1152" + height = "896" + elif(ratio=='portrait' and basesize != "1024"): + width = basesize + height = str(int(basesize) + 256) + elif(ratio=='portrait' and basesize == "1024"): + width = "896" + height = "1152" elif(ratio=='ultrawide'): width = "1280" height = "360" + elif(ratio=='ultraheight'): + width = "360" + height = "1280" else: - width = "512" - height = "512" + width = basesize + height = basesize #upscaler enable_hr = upscale if(debugmode==1 or qualityhiresfix == True): diff --git a/main.py b/main.py index 1b9aaca..ae76499 100644 --- a/main.py +++ b/main.py @@ -13,7 +13,7 @@ from call_extras import * from model_lists import * -def generateimages(amount = 1, size = "all",model = "currently selected model",samplingsteps = "40",cfg= "7",hiresfix = True,hiressteps ="0",denoisestrength="0.6",samplingmethod="DPM++ SDE Karras", upscaler="R-ESRGAN 4x+", hiresscale="2",apiurl="http://127.0.0.1:7860",qualitygate=False,quality="7.6",runs="5",insanitylevel="5",subject="all", artist="all", imagetype="all",silentmode=False, workprompt="", antistring="",prefixprompt="", suffixprompt="", negativeprompt="",promptcompounderlevel = "1", seperator="comma", img2imgbatch = "1", img2imgsamplingsteps = "20", img2imgcfg = "7", img2imgsamplingmethod = "DPM++ SDE Karras", img2imgupscaler = "R-ESRGAN 4x+", img2imgmodel = "currently selected model", img2imgactivate = False, img2imgscale = "2", img2imgpadding = "64",img2imgdenoisestrength="0.3",ultimatesdupscale=False,usdutilewidth = "512", usdutileheight = "0", usdumaskblur = "8", usduredraw ="Linear", usduSeamsfix = "None", usdusdenoise = "0.35", usduswidth = "64", usduspadding ="32", usdusmaskblur = "8",controlnetenabled=False, controlnetmodel="",img2imgdenoisestrengthmod="-0.05",enableextraupscale = False,controlnetblockymode = False,extrasupscaler1 = "all",extrasupscaler2 ="all",extrasupscaler2visiblity="0.5",extrasupscaler2gfpgan="0",extrasupscaler2codeformer="0.15",extrasupscaler2codeformerweight="0.1",extrasresize="2",onlyupscale="false",givensubject="",smartsubject=True,giventypeofimage="",imagemodechance=20, gender="all", chosensubjectsubtypeobject="all", chosensubjectsubtypehumanoid="all", chosensubjectsubtypeconcept="all", increasestability = False, qualityhiresfix = False, qualitymode = "highest", qualitykeep="keep used"): +def generateimages(amount = 1, size = "all",model = "currently selected model",samplingsteps = "40",cfg= "7",hiresfix = True,hiressteps ="0",denoisestrength="0.6",samplingmethod="DPM++ SDE Karras", upscaler="R-ESRGAN 4x+", hiresscale="2",apiurl="http://127.0.0.1:7860",qualitygate=False,quality="7.6",runs="5",insanitylevel="5",subject="all", artist="all", imagetype="all",silentmode=False, workprompt="", antistring="",prefixprompt="", suffixprompt="", negativeprompt="",promptcompounderlevel = "1", seperator="comma", img2imgbatch = "1", img2imgsamplingsteps = "20", img2imgcfg = "7", img2imgsamplingmethod = "DPM++ SDE Karras", img2imgupscaler = "R-ESRGAN 4x+", img2imgmodel = "currently selected model", img2imgactivate = False, img2imgscale = "2", img2imgpadding = "64",img2imgdenoisestrength="0.3",ultimatesdupscale=False,usdutilewidth = "512", usdutileheight = "0", usdumaskblur = "8", usduredraw ="Linear", usduSeamsfix = "None", usdusdenoise = "0.35", usduswidth = "64", usduspadding ="32", usdusmaskblur = "8",controlnetenabled=False, controlnetmodel="",img2imgdenoisestrengthmod="-0.05",enableextraupscale = False,controlnetblockymode = False,extrasupscaler1 = "all",extrasupscaler2 ="all",extrasupscaler2visiblity="0.5",extrasupscaler2gfpgan="0",extrasupscaler2codeformer="0.15",extrasupscaler2codeformerweight="0.1",extrasresize="2",onlyupscale="false",givensubject="",smartsubject=True,giventypeofimage="",imagemodechance=20, gender="all", chosensubjectsubtypeobject="all", chosensubjectsubtypehumanoid="all", chosensubjectsubtypeconcept="all", increasestability = False, qualityhiresfix = False, qualitymode = "highest", qualitykeep="keep used", basesize = "512"): loops = int(amount) # amount of images to generate steps = 0 upscalefilelist=[] @@ -36,8 +36,7 @@ def generateimages(amount = 1, size = "all",model = "currently selected model",s originalimg2imgdenoisestrength = img2imgdenoisestrength originalimg2imgpadding = img2imgpadding - optionsresponse = requests.get(url=f'{apiurl}/sdapi/v1/options') - optionsresponsejson = optionsresponse.json() + modellist=get_models() samplerlist=get_samplers() @@ -45,9 +44,30 @@ def generateimages(amount = 1, size = "all",model = "currently selected model",s img2imgupscalerlist=get_upscalers_for_img2img() img2imgsamplerlist=get_samplers_for_img2img() - currentlyselectedmodel = optionsresponsejson["sd_model_checkpoint"] - tempmodel = "v1-5-pruned-emaonly.safetensors [6ce0161689]" + + optionsresponse = requests.get(url=f'{apiurl}/sdapi/v1/options') + optionsresponsejson = optionsresponse.json() + + currentlyselectedmodelhash = optionsresponsejson["sd_checkpoint_hash"] + + sdmodelsrespone = requests.get(url=f'{apiurl}/sdapi/v1/sd-models') + sdmodelsresponsejson = sdmodelsrespone.json() + + for item in sdmodelsresponsejson: + if(item['sha256'] == currentlyselectedmodelhash): + currentlyselectedmodel = item['title'] + break + + # Print the 'title' if found + if currentlyselectedmodel is not None: + print("current selected model is:") + print(currentlyselectedmodel) + else: + print("Cannot find current model.") + currentlyselectedmodel = tempmodel + + while(currentlyselectedmodel == tempmodel or tempmodel not in modellist): tempmodel = random.choice(modellist) @@ -187,7 +207,7 @@ def generateimages(amount = 1, size = "all",model = "currently selected model",s - txt2img = call_txt2img(randomprompt, size ,hiresfix, 0, filenamecomplete,model ,samplingsteps,cfg, hiressteps, denoisestrength,samplingmethod, upscaler,hiresscale,apiurl,qualitygate,quality,runs,negativeprompt, qualityhiresfix, qualitymode, qualitykeep) + txt2img = call_txt2img(randomprompt, size ,hiresfix, 0, filenamecomplete,model ,samplingsteps,cfg, hiressteps, denoisestrength,samplingmethod, upscaler,hiresscale,apiurl,qualitygate,quality,runs,negativeprompt, qualityhiresfix, qualitymode, qualitykeep, basesize) originalimage = txt2img[0] #Set this for later use originalpnginfo = txt2img[1] #Sort of hacky way of bringing this forward. But if it works, it works continuewithnextpart = txt2img[2] diff --git a/scripts/onebuttonprompt.py b/scripts/onebuttonprompt.py index b39e11a..2118075 100644 --- a/scripts/onebuttonprompt.py +++ b/scripts/onebuttonprompt.py @@ -33,7 +33,8 @@ qualitymodelist = ["highest", "gated"] qualitykeeplist = ["keep used","keep all"] #for autorun and upscale -sizelist = ["all", "portrait", "wide", "square", "ultrawide"] +sizelist = ["all", "portrait", "wide", "square", "ultrawide", "ultraheight"] +basesizelist = ["512", "768", "1024"] modellist = get_models() modellist.insert(0,"all") @@ -651,6 +652,8 @@ class Script(scripts.Script): amountofimages = gr.Slider(1, 50, value="20", step=1, label="Amount of images to generate") size = gr.Dropdown( sizelist, label="Size to generate", value="all") + basesize = gr.Dropdown( + basesizelist, label="base size", value="512") with gr.Row(scale=1): samplingsteps = gr.Slider(1, 100, value="20", step=1, label="Sampling steps") cfg = gr.Slider(1,20, value="6.0", step=0.1, label="CFG") @@ -785,7 +788,7 @@ class Script(scripts.Script): prompt4toworkflow.click(prompttoworkflowprompt, inputs=prompt4, outputs=workprompt) prompt5toworkflow.click(prompttoworkflowprompt, inputs=prompt5, outputs=workprompt) - startmain.click(generateimages, inputs=[amountofimages,size,model,samplingsteps,cfg,hiresfix,hiressteps,denoisestrength,samplingmethod, upscaler,hiresscale, apiurl, qualitygate, quality, runs,insanitylevel,subject, artist, imagetype, silentmode, workprompt, antistring, prefixprompt, suffixprompt,negativeprompt,promptcompounderlevel, seperator, img2imgbatch, img2imgsamplingsteps, img2imgcfg, img2imgsamplingmethod, img2imgupscaler, img2imgmodel,img2imgactivate, img2imgscale, img2imgpadding,img2imgdenoisestrength,ultimatesdupscale,usdutilewidth, usdutileheight, usdumaskblur, usduredraw, usduSeamsfix, usdusdenoise, usduswidth, usduspadding, usdusmaskblur, controlnetenabled, controlnetmodel,img2imgdenoisestrengthmod,enableextraupscale,controlnetblockymode,extrasupscaler1,extrasupscaler2,extrasupscaler2visiblity,extrasupscaler2gfpgan,extrasupscaler2codeformer,extrasupscaler2codeformerweight,extrasresize,onlyupscale,givensubject,smartsubject,giventypeofimage,imagemodechance, chosengender, chosensubjectsubtypeobject, chosensubjectsubtypehumanoid, chosensubjectsubtypeconcept, increasestability, qualityhiresfix, qualitymode, qualitykeep]) + startmain.click(generateimages, inputs=[amountofimages,size,model,samplingsteps,cfg,hiresfix,hiressteps,denoisestrength,samplingmethod, upscaler,hiresscale, apiurl, qualitygate, quality, runs,insanitylevel,subject, artist, imagetype, silentmode, workprompt, antistring, prefixprompt, suffixprompt,negativeprompt,promptcompounderlevel, seperator, img2imgbatch, img2imgsamplingsteps, img2imgcfg, img2imgsamplingmethod, img2imgupscaler, img2imgmodel,img2imgactivate, img2imgscale, img2imgpadding,img2imgdenoisestrength,ultimatesdupscale,usdutilewidth, usdutileheight, usdumaskblur, usduredraw, usduSeamsfix, usdusdenoise, usduswidth, usduspadding, usdusmaskblur, controlnetenabled, controlnetmodel,img2imgdenoisestrengthmod,enableextraupscale,controlnetblockymode,extrasupscaler1,extrasupscaler2,extrasupscaler2visiblity,extrasupscaler2gfpgan,extrasupscaler2codeformer,extrasupscaler2codeformerweight,extrasresize,onlyupscale,givensubject,smartsubject,giventypeofimage,imagemodechance, chosengender, chosensubjectsubtypeobject, chosensubjectsubtypehumanoid, chosensubjectsubtypeconcept, increasestability, qualityhiresfix, qualitymode, qualitykeep, basesize]) automatedoutputsfolderbutton.click(openfolder)