added common prompt; todo convert old json prompts to 1.1 schema

pull/59/head
GeorgLegato 2023-04-24 14:12:00 +02:00
parent 365bb7e82a
commit b0cb75399e
6 changed files with 82 additions and 56 deletions

View File

@ -122,4 +122,5 @@ def clearPrompts():
return [
gr.DataFrame.update(value=[[0, "Infinite Zoom. Start over"]]),
gr.Textbox.update(""),
gr.Textbox.update("")
]

View File

@ -1,49 +1,60 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"prompts": {
"type": "object",
"properties": {
"data": {
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "1.1",
"type": "object",
"properties": {
"prompts": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "array",
"items": [
{
"oneOf": [
{
"type": "integer",
"minimum": 0
},
{
"type": "string"
}
]
},
{
"type": "string"
}
],
"minItems": 0,
"maxItems": 999,
"uniqueItems": false
},
"minItems": 0
"items": [
{
"oneOf": [
{
"type": "integer",
"minimum": 0
},
{
"type": "string"
}
]
},
{
"type": "string"
}
],
"minItems": 0,
"maxItems": 999,
"uniqueItems": false
},
"headers": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 2
}
"minItems": 0
},
"required": ["data", "headers"]
"headers": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 3
}
},
"negPrompt": {
"type": "string"
}
"required": [
"data",
"headers"
]
},
"required": ["prompts", "negPrompt"]
}
"negPrompt": {
"type": "string"
},
"commonPrompt": {
"type": "string"
}
},
"required": [
"prompts",
"negPrompt",
"commonPrompt"
]
}

View File

@ -16,6 +16,7 @@ from .video import write_video
def create_zoom(
common_prompt,
prompts_array,
negative_prompt,
num_outpainting_steps,
@ -46,6 +47,7 @@ def create_zoom(
for i in range(batchcount):
print(f"Batch {i+1}/{batchcount}")
result = create_zoom_single(
common_prompt,
prompts_array,
negative_prompt,
num_outpainting_steps,
@ -76,6 +78,7 @@ def create_zoom(
def create_zoom_single(
common_prompt,
prompts_array,
negative_prompt,
num_outpainting_steps,
@ -139,8 +142,9 @@ def create_zoom_single(
"infzoom_txt2img_model", progress, "Loading Model for txt2img: "
)
pr = prompts[min(k for k in prompts.keys() if k >= 0)]
processed, newseed = renderTxt2Img(
prompts[min(k for k in prompts.keys() if k >= 0)],
f"{common_prompt}\n{pr}" if common_prompt else pr,
negative_prompt,
sampler,
num_inference_steps,
@ -203,8 +207,9 @@ def create_zoom_single(
)
print("using Custom Exit Image")
else:
pr = prompts[max(k for k in prompts.keys() if k <= i)]
processed, newseed = renderImg2Img(
prompts[max(k for k in prompts.keys() if k <= i)],
f"{common_prompt}\n{pr}" if common_prompt else pr,
negative_prompt,
sampler,
num_inference_steps,

View File

@ -5,20 +5,18 @@ import modules.sd_samplers
default_prompt = """
{
"prompts":{
"headers":["outpaint steps","prompt"],
"headers":["outpaint steps","prompt","img"],
"data":[
[0,"Huge spectacular Waterfall in a dense tropical forest,epic perspective,(vegetation overgrowth:1.3)(intricate, ornamentation:1.1),(baroque:1.1), fantasy, (realistic:1) digital painting , (magical,mystical:1.2) , (wide angle shot:1.4), (landscape composed:1.2)(medieval:1.1), divine,cinematic,(tropical forest:1.4),(river:1.3)mythology,india, volumetric lighting, Hindu ,epic, Alex Horley Wenjun Lin greg rutkowski Ruan Jia (Wayne Barlowe:1.2) <lora:epiNoiseoffset_v2:0.6> "]
[0,"Huge spectacular Waterfall in a dense tropical forest,epic perspective,(vegetation overgrowth:1.3)(intricate, ornamentation:1.1),(baroque:1.1), fantasy, (realistic:1) digital painting , (magical,mystical:1.2) , (wide angle shot:1.4), (landscape composed:1.2)(medieval:1.1), divine,cinematic,(tropical forest:1.4),(river:1.3)mythology,india, volumetric lighting, Hindu ,epic"]
]
},
"negPrompt":"frames, borderline, text, character, duplicate, error, out of frame, watermark, low quality, ugly, deformed, blur bad-artist"
"negPrompt":"frames, border, edges, borderline, text, character, duplicate, error, out of frame, watermark, low quality, ugly, deformed, blur bad-artist",
"commonPrompt":"style by Alex Horley Wenjun Lin greg rutkowski Ruan Jia (Wayne Barlowe:1.2), <lora:epiNoiseoffset_v2:0.6> "
}
"""
available_samplers = [
s.name for s in modules.sd_samplers.samplers if "UniPc" not in s.name
]
empty_prompt = (
'{"prompts":{"data":[],"headers":["outpaint steps","prompt"]},"negPrompt":""}'
'{"prompts":{"data":[],"headers":["outpaint steps","prompt"]},"negPrompt":"", commonPrompt:""}'
)
invalid_prompt = {
@ -27,7 +25,13 @@ invalid_prompt = {
"headers": ["outpaint steps", "prompt"],
},
"negPrompt": "Invalid prompt-json",
"commonPrompt": "Invalid prompt"
}
available_samplers = [
s.name for s in modules.sd_samplers.samplers if "UniPc" not in s.name
]
current_script_dir = scripts.basedir().split(os.sep)[
-2:
] # contains install and our extension foldername

View File

@ -49,6 +49,10 @@ def on_ui_tabs():
except Exception:
jpr = invalid_prompt
main_common_prompt = gr.Textbox(
value=jpr["commonPrompt"], label="Common Prompt"
)
main_prompts = gr.Dataframe(
type="array",
headers=["outpaint step", "prompt"],
@ -79,7 +83,7 @@ def on_ui_tabs():
exportPrompts_button.click(
None,
_js="exportPrompts",
inputs=[main_prompts, main_negative_prompt],
inputs=[main_common_prompt, main_prompts, main_negative_prompt],
outputs=None,
)
importPrompts_button.upload(
@ -97,7 +101,7 @@ def on_ui_tabs():
clearPrompts_button.click(
fn=clearPrompts,
inputs=[],
outputs=[main_prompts, main_negative_prompt],
outputs=[main_prompts, main_negative_prompt, main_common_prompt],
)
with gr.Row():
seed = gr.Number(
@ -237,6 +241,7 @@ Our best experience and trade-off is the R-ERSGAn4x upscaler.
generate_btn.click(
fn=wrap_gradio_gpu_call(create_zoom, extra_outputs=[None, "", ""]),
inputs=[
main_common_prompt,
main_prompts,
main_negative_prompt,
main_outpaint_steps,

View File

@ -1,7 +1,7 @@
// Function to download data to a file
function exportPrompts(p, np, filename = "infinite-zoom-prompts.json") {
function exportPrompts(cp,p, np, filename = "infinite-zoom-prompts.json") {
let J = { prompts: p, negPrompt: np }
let J = { prompts: p, negPrompt: np, commonPrompt: cp }
var file = new Blob([JSON.stringify(J)], { type: "text/csv" });
if (window.navigator.msSaveOrOpenBlob) // IE10+