Windowsに標準搭載されているCopilotにPythonスクリプトをGradioアプリ化してとお願いしたら実際に動作可能なスクリプトを書いてくれました(感動)

もとのスクリプト

touch-sp.hatenablog.com
こちらのスクリプトを使いました。

import torch
from diffusers import StableCascadeDecoderPipeline, StableCascadePriorPipeline

prior = StableCascadePriorPipeline.from_pretrained(
    "stabilityai/stable-cascade-prior",
    torch_dtype=torch.bfloat16,
    variant="bf16",
).to("cuda")

decoder = StableCascadeDecoderPipeline.from_pretrained(
    "stabilityai/stable-cascade",
    torch_dtype=torch.bfloat16,
    variant="bf16",
).to("cuda")

num_images_per_prompt = 1
prompt = "a cat playing with a white ball in the forest"
negative_prompt = "poor quality, worst quality"

prior_output = prior(
    prompt=prompt,
    height=1024,
    width=1024,
    negative_prompt=negative_prompt,
    guidance_scale=4.0,
    num_images_per_prompt=num_images_per_prompt,
    num_inference_steps=20
)
decoder_output = decoder(
    image_embeddings=prior_output.image_embeddings,
    prompt=prompt,
    negative_prompt=negative_prompt,
    guidance_scale=0.0,
    output_type="pil",
    num_inference_steps=10
).images[0]

decoder_output.save("result.png")

結果

「次のスクリプトをGradioアプリ化して下さい」と書いてその後にそのままスクリプトをコピペしました。

そしたら以下のスクリプトを返してくれました。

そのまま動きます。

import torch
import gradio as gr
from diffusers import StableCascadeDecoderPipeline, StableCascadePriorPipeline

def generate_image(prompt, negative_prompt):
    prior = StableCascadePriorPipeline.from_pretrained(
        "stabilityai/stable-cascade-prior",
        torch_dtype=torch.bfloat16,
        variant="bf16",
    ).to("cuda")

    decoder = StableCascadeDecoderPipeline.from_pretrained(
        "stabilityai/stable-cascade",
        torch_dtype=torch.bfloat16,
        variant="bf16",
    ).to("cuda")

    num_images_per_prompt = 1

    prior_output = prior(
        prompt=prompt,
        height=1024,
        width=1024,
        negative_prompt=negative_prompt,
        guidance_scale=4.0,
        num_images_per_prompt=num_images_per_prompt,
        num_inference_steps=20
    )
    decoder_output = decoder(
        image_embeddings=prior_output.image_embeddings,
        prompt=prompt,
        negative_prompt=negative_prompt,
        guidance_scale=0.0,
        output_type="pil",
        num_inference_steps=10
    ).images[0]

    return decoder_output

def main():
    def generate_image_fn(prompt, negative_prompt):
        return generate_image(prompt, negative_prompt)

    gr.Interface(
        fn=generate_image_fn,
        inputs=["text", "text"],
        outputs="image",
        title="Image Generation App",
        description="Generate an image based on prompts.",
    ).launch()

if __name__ == "__main__":
    main()

プロンプトを引数にとるようになどとは指定していないにも関わらず、勝手にプロンプトとネガティブプロンプトを引数にとるようなアプリになっています。



このエントリーをはてなブックマークに追加