|
from tensorflow import keras |
|
|
|
keras.mixed_precision.set_global_policy("mixed_float16") |
|
|
|
import time |
|
|
|
import gradio as gr |
|
import keras_cv |
|
|
|
from constants import css, examples, img_height, img_width, num_images_to_gen |
|
from share_btn import community_icon_html, loading_icon_html, share_js |
|
|
|
|
|
weights_path = keras.utils.get_file( |
|
origin="https://huggingface.co/mayve/GP/resolve/main/ckpt_epoch_96.h5", |
|
file_hash="4b4348297aa9853ff9dc4da7f52dcb240210564400f164e5155e5f4dc1866626" |
|
) |
|
pokemon_model = keras_cv.models.StableDiffusion( |
|
img_width=img_width, img_height=img_height |
|
) |
|
pokemon_model.diffusion_model.load_weights(weights_path) |
|
|
|
pokemon_model.diffusion_model.compile(jit_compile=True) |
|
pokemon_model.decoder.compile(jit_compile=True) |
|
pokemon_model.text_encoder.compile(jit_compile=True) |
|
|
|
|
|
|
|
|
|
|
|
def generate_image_fn(prompt: str, unconditional_guidance_scale: int) -> list: |
|
start_time = time.time() |
|
|
|
|
|
|
|
images = pokemon_model.text_to_image( |
|
prompt, |
|
batch_size=num_images_to_gen, |
|
unconditional_guidance_scale=unconditional_guidance_scale, |
|
num_steps = 100, |
|
) |
|
end_time = time.time() |
|
print(f"Time taken: {end_time - start_time} seconds.") |
|
return [image for image in images] |
|
|
|
|
|
description = "This Space demonstrates a fine-tuned Stable Diffusion model. You can use it for generating custom pokemons. To get started, either enter a prompt and pick one from the examples below. For details on the fine-tuning procedure, refer to [this repository](https://github.com/sayakpaul/stable-diffusion-keras-ft/)." |
|
article = "This Space leverages a T4 GPU to run the predictions. We use mixed-precision to speed up the inference latency. We further use XLA to carve out maximum performance from TensorFlow." |
|
gr.Interface( |
|
generate_image_fn, |
|
inputs=[ |
|
gr.Textbox( |
|
label="Enter your prompt", |
|
max_lines=1, |
|
placeholder="cute Sundar Pichai creature", |
|
), |
|
gr.Slider(value=10, minimum=8, maximum=50, step=1), |
|
], |
|
outputs=[gr.outputs.Image(type="pil"),gr.outputs.Image(type="pil"),gr.outputs.Image(type="pil"),gr.outputs.Image(type="pil")], |
|
title="Generate custom pokemons", |
|
description=description, |
|
article=article, |
|
examples=[["cute Sundar Pichai creature", 40], ["Hello kitty", 40]], |
|
allow_flagging=False, |
|
).launch() |