使用Gradio和擁抱Face的擴散器構建交互式文本對圖像生成應用程序的步驟

在本教程中,我們將使用Google COLAB訪問的交互式文本到圖像生成器應用程序,並使用擁抱Face的擴散器庫和Gradio訪問了公共鏈接。您將學習如何通過利用最先進的穩定擴散模型和GPU加速度將簡單的文本提示轉換為詳細的圖像。我們將逐步設置環境,安裝依賴項,緩存模型以及創建一個直觀的應用程序接口,以實時參數調整。

!pip install diffusers transformers accelerate gradio

首先,我們使用PIP安裝了四個必需的Python軟件包。擴散器提供了用於使用擴散模型的工具,Transformers為各種任務提供了驗證的模型,加速在不同的硬件設置上優化性能,並且Gradio可以創建交互式機器學習接口。這些圖書館構成了我們在Google Colab中文本到圖像生成演示的骨幹。將運行時間設置為GPU。

import torch
from diffusers import StableDiffusionPipeline
import gradio as gr


# Global variable to cache the pipeline
pipe = None

不,我們導入必要的庫:用於張量計算和GPU加速度的火炬,從擴散器庫中的StablediffusionPipeline加載和運行穩定的擴散模型,以及用於構建交互式演示的Gradio。此外,稍後將一個全局變量管初始化為無需緩存加載的模型管道,這有助於避免在每個推理調用上重新加載模型。

print("CUDA available:", torch.cuda.is_available())

上面的代碼行指示是否有啟用CUDA的GPU。它使用Pytorch的Torch.cuda.is_available()函數,如果檢測到GPU並準備好進行計算,則返回true,否則否則否則,有助於確保您的代碼可以利用GPU加速。

pipe = StableDiffusionPipeline.from_pretrained(
    "runwayml/stable-diffusion-v1-5",
    torch_dtype=torch.float16
)
pipe = pipe.to("cuda")

上面的代碼片段使用“ RunwayMl/穩定 – 擴散-V1-5”的驗證模型加載穩定的擴散管道。它將其數據類型設置為16位浮點(Torch.float16),以優化內存使用和性能。然後,它將整個管道移至GPU(“ CUDA”),以利用硬件加速度以獲得更快的圖像生成。

def generate_sd_image(prompt, num_inference_steps=50, guidance_scale=7.5):
    """
    Generate an image from a text prompt using Stable Diffusion.


    Args:
        prompt (str): Text prompt to guide image generation.
        num_inference_steps (int): Number of denoising steps (more steps can improve quality).
        guidance_scale (float): Controls how strongly the prompt is followed.
       
    Returns:
        PIL.Image: The generated image.
    """
    global pipe
    if pipe is None:
        print("Loading Stable Diffusion model... (this may take a while)")
        pipe = StableDiffusionPipeline.from_pretrained(
            "runwayml/stable-diffusion-v1-5",
            torch_dtype=torch.float16,
            revision="fp16"
        )
        pipe = pipe.to("cuda")
   
    # Use autocast for faster inference on GPU
    with torch.autocast("cuda"):
        image = pipe(prompt, num_inference_steps=num_inference_steps, guidance_scale=guidance_scale).images(0)
   
    return image

上面的函數,Generate_SD_Image,採用文本提示符以及推理步驟和指導量表的參數,以使用穩定的擴散生成圖像。它檢查模型管道是否已經加載在全局管變量中。如果沒有,它將加載並用半精度(FP16)加載模型並將其移至GPU。然後,它利用火炬。用於有效的混合精液推理並返回生成的圖像。

# Define the Gradio interface
demo = gr.Interface(
    fn=generate_sd_image,
    inputs=(
        gr.Textbox(lines=2, placeholder="Enter your prompt here...", label="Text Prompt"),
        gr.Slider(minimum=10, maximum=100, step=5, value=50, label="Inference Steps"),
        gr.Slider(minimum=1, maximum=20, step=0.5, value=7.5, label="Guidance Scale")
    ),
    outputs=gr.Image(type="pil", label="Generated Image"),
    title="Stable Diffusion Text-to-Image Demo",
    description="Enter a text prompt to generate an image using Stable Diffusion. Adjust the parameters to fine-tune the result."
)


# Launch the interactive demo
demo.launch()

在這裡,我們定義了將Generate_SD_IMAGE函數連接到交互式Web UI的Gradio接口。它提供了三個輸入小部件,一個用於輸入文本提示符的文本框以及用於調整推理步驟和指導量表數量的滑塊。相反,輸出小部件顯示生成的圖像。該界面還包括一​​個標題和描述性文本來指導用戶,並最終啟動了交互式演示。

由公共URL上的代碼生成的應用接口

您還可以通過公共網址訪問Web應用程序:https://7dc6833297cf83b160.gradio.live/(活動72小時)。您的代碼也將生成類似的鏈接。

總之,該教程演示瞭如何將擁抱面孔的擴散器與Gradio集成,以在Google COLAB和Web應用程序中創建功能強大的交互式文本對圖像應用程序。從設置GPU加速環境並緩存穩定的擴散模型到構建用於動態用戶交互的接口,您就可以實現並進一步開發先進的生成模型。


這是 COLAB筆記本 對於上述項目。另外,別忘了跟隨我們 嘰嘰喳喳 並加入我們 電報頻道LinkedIn GrOUP。別忘了加入我們的 75K+ ml子雷迪特

🚨 推薦的閱讀-LG AI研究釋放Nexus:一個高級系統集成代理AI系統和數據合規性標準,以解決AI數據集中的法律問題


Asif Razzaq是Marktechpost Media Inc.的首席執行官。作為一位有遠見的企業家和工程師,ASIF致力於利用人工智能的潛力來實現社會利益。他最近的努力是推出了人工智能媒體平台Marktechpost,該平台的深入覆蓋了機器學習和深度學習新聞,既在技術上都可以聽起來,既可以通過技術上的聲音,又可以被廣泛的受眾理解。該平台每月有超過200萬個觀點,說明了其在受眾中的受歡迎程度。

Source link

Scroll to Top