import gradio as gr from gradio_client import Client import os import numpy as np import random hf_token = os.environ.get("HF_TKN") MAX_SEED = np.iinfo(np.int32).max def get_caption(image_in): client = Client("https://fffiloni-moondream1.hf.space/", hf_token=hf_token) result = client.predict( image_in, # filepath in 'image' Image component "Describe the image", # str in 'Question' Textbox component api_name="/predict" ) print(result) return result def get_lcm(prompt): client = Client("https://latent-consistency-lcm-lora-for-sdxl.hf.space/") result = client.predict( prompt, # str in 'parameter_5' Textbox component 0.3, # float (numeric value between 0.0 and 5) in 'Guidance' Slider component 8, # float (numeric value between 2 and 10) in 'Steps' Slider component 0, # float (numeric value between 0 and 12013012031030) in 'Seed' Slider component True, # bool in 'Randomize' Checkbox component api_name="/predict" ) print(result) return result[0] def get_sdxl_lightning(prompt): client = Client("AP123/SDXL-Lightning") result = client.predict( prompt, # str in 'parameter_1' Textbox component "4-Step", api_name="/generate_image" ) print(result) return result def get_turbo(prompt): seed = random.randint(0, MAX_SEED) print(f"SEED: {seed}") client = Client("https://diffusers-unofficial-sdxl-turbo-i2i-t2i.hf.space/") result = client.predict( None, # filepath in 'Webcam' Image component prompt, # str in 'parameter_5' Textbox component 0.7, # float (numeric value between 0.0 and 1.0) in 'Strength' Slider component 8, # float (numeric value between 1 and 10) in 'Steps' Slider component seed, # float (numeric value between 0 and MAX_SEED) in 'Seed' Slider component api_name="/predict" ) print(result) return result def infer(image_in, chosen_method): caption = get_caption(image_in) if chosen_method == "LCM" : img_var = get_lcm(caption) elif chosen_method == "SDXL Lightning" : img_var = get_sdxl_lightning(caption) elif chosen_method == "SDXL Turbo" : img_var = get_turbo(caption) return img_var gr.Interface( title = "Supa Fast Image Variation", description = "Get quick image variation from image input, using moondream1 for caption, and LCM SDXL, SDXL Lightning or SDXL Turbo for image generation", fn = infer, inputs = [ gr.Image(type="filepath", label="Image input"), gr.Dropdown(label="Choose a model", choices=["LCM", "SDXL Lightning", "SDXL Turbo"], value="SDXL Lightning") ], outputs = [ gr.Image(label="Image variation") ], examples = [ ["examples/frog_clean.jpg", "LCM"], ["examples/martin_pecheur.jpeg", "SDXL Turbo"], ["examples/forest_deer.png", "SDXL Lightning"] ], cache_examples = False, concurrency_limit = 2 ).queue(max_size=25).launch(show_api=False, show_error=True)