สร้างรูปภาพที่น่าทึ่งด้วย AI คำแนะนำทีละขั้นตอนในการสร้างแอปทดสอบเป็นรูปภาพ
ในโลกที่เปลี่ยนแปลงอย่างรวดเร็วของเรา AI กำลังเป็นศูนย์กลาง จึงไม่น่าแปลกใจที่ AI ดึงดูดความสนใจของเราเนื่องจากมีศักยภาพในการปรับปรุงประสิทธิภาพในอุตสาหกรรมต่างๆ คุณอาจเคยทดลองใช้เครื่องมือแปลงข้อความเป็นรูปภาพ เช่น Midjourney และ Dream Studio แต่ใน บทความนี้ ฉันจะแนะนำคุณทีละขั้นตอนในการสร้างแอปสร้างข้อความเป็นรูปภาพ "กลางการเดินทาง" ของคุณเองตั้งแต่ต้นโดยใช้การกระจายที่เสถียร แข็งแกร่ง>. มีโค้ดประมาณ 30 บรรทัด เนื่องจากการแพร่กระจายที่เสถียรเป็นโอเพ่นซอร์ส โมเดลจึงไม่มีค่าใช้จ่าย
ข้อกำหนดเบื้องต้น
ตรวจสอบให้แน่ใจว่าคุณมีทุกสิ่งที่คุณต้องการก่อนที่จะเริ่มสร้างแอปสร้างข้อความเป็นรูปภาพของคุณเอง
- คุณต้องมีแล็ปท็อปที่มี GPU ไม่ต้องกังวลหากคอมพิวเตอร์ของคุณไม่มี GPU คุณสามารถใช้ Google Colab เพื่อเข้าถึง GPU ฟรีได้ แต่การใช้แล็ปท็อปที่มี GPU จะเหมาะสมกว่า
- ตั้งค่า Integrated Development Environment (IDE) ด้วยสภาพแวดล้อม Python
ด้วยเงื่อนไขสำคัญเหล่านี้ คุณก็พร้อมแล้ว
บทนำ
เรามาทำความเข้าใจโดยย่อเกี่ยวกับโลกแห่งแบบจำลองการแพร่กระจายซึ่งใช้ในการสร้างภาพจากข้อความ แบบจำลองการแพร่กระจายใช้ลูกโซ่มาร์กอฟเพื่อค่อยๆ นำสัญญาณรบกวนมาสู่ข้อมูล จากนั้นย้อนกลับกระบวนการและสร้างตัวอย่างข้อมูลที่ต้องการจากสัญญาณรบกวน ตัวอย่างที่โดดเด่นของโมเดลการแพร่กระจาย ได้แก่ DLALLE 2 โดย OpenAI, Imagen โดย Google และการแพร่กระจายที่เสถียรซึ่งพัฒนาโดย StabilityAI ในบทความนี้ เราจะมุ่งเน้นไปที่การใช้ Stable Diffusion จาก Stability AI เพื่อสร้างแอปของเรา แม้ว่าโมเดลเชิงกำเนิด เช่น Generative Adversarial Networks (GAN), Variational Autoencoders (VAE) และโมเดล Flow-based จะเป็นที่รู้จักกันดี แต่โมเดลการแพร่กระจายนั้นมีความใหม่ล่าสุด มีประสิทธิภาพและให้ผลลัพธ์ที่ดีกว่า
การตั้งค่าและการติดตั้ง
เราสามารถเข้าถึงโมเดลการแพร่กระจายที่เสถียรผ่านการกอดใบหน้า Hugging face คือชุมชนและแพลตฟอร์มที่ให้การเข้าถึงโมเดลและชุดข้อมูลการเรียนรู้ของเครื่องแบบโอเพ่นซอร์ส เนื่องจากโมเดลเหล่านี้เป็นโอเพ่นซอร์ส การกอดใบหน้าจึงไม่มีค่าใช้จ่ายแม้ว่าจะมีระดับการจ่ายเงินก็ตาม จำเป็นต้องสร้างโปรไฟล์บนใบหน้ากอดหากคุณยังไม่มี หลังจากสร้างโปรไฟล์แล้ว คุณต้องมี "โทเค็นการเข้าถึง"
- คลิกที่ไอคอนโปรไฟล์ของคุณ
- คลิกที่ “การตั้งค่า”
- ไปที่ "โทเค็นการเข้าถึง" บนแท็บด้านซ้าย
- คุณสามารถสร้างโทเค็นใหม่หรือใช้โทเค็นที่มีอยู่ได้
- คัดลอกโทเค็น
โทเค็นที่จำเป็นในการเข้าถึงโมเดลการแพร่กระจายที่เสถียรนั้นฟรี ซึ่งทำให้การกอดใบหน้าเป็นทรัพยากรที่ทรงพลัง
สร้างไฟล์ “authtoken.py” ไฟล์นี้จะมีโทเค็นการเข้าถึงของคุณเพื่อกอดใบหน้า
# authtoken.py # How to get one: https://huggingface.co/docs/hub/security-tokens auth_token = "{COPY ACCESS TOKEN FROM HUGGING FACE}"
ติดตั้งข้อกำหนดทั้งหมด
สร้างไฟล์ “requirements.txt” หากคุณคุ้นเคยกับการเขียนโค้ดใน Python คุณก็ควรรู้อยู่แล้วว่าไฟล์นี้ใช้ทำอะไร ไฟล์ “requirements.txt” มีไลบรารีที่จำเป็นทั้งหมดที่จำเป็นสำหรับการติดตั้งสำหรับโปรเจ็กต์ Python
# requirements.txt customtkinter==4.6.1 darkdetect==0.7.1 diffusers==0.3.0 filelock==3.8.0 huggingface-hub==0.9.1 idna==3.4 importlib-metadata==4.12.0 numpy==1.23.3 packaging==21.3 Pillow==9.2.0 pyparsing==3.0.9 PyYAML==6.0 regex==2022.9.13 requests==2.28.1 tk==0.1.0 tokenizers==0.12.1 torch==1.12.1+cu113 torchaudio==0.12.1+cu113 torchvision==0.13.1+cu113 tqdm==4.64.1 transformers==4.22.1 typing_extensions==4.3.0 urllib3==1.26.12 zipp==3.8.1
รันคำสั่งด้านล่างเพื่อติดตั้งไลบรารีใน Requirements.txt ของคุณ
ข้อกำหนดในการติดตั้ง pip.txt
การสร้างแอป
เพื่อให้มั่นใจถึงความเข้าใจที่ชัดเจนของกระบวนการ เราจะร่างแนวทางทีละขั้นตอนที่เราจะปฏิบัติตามในการสร้างแอป
- ใช้ฟังก์ชัน "generate_image" นำเข้าไลบรารีที่จำเป็นทั้งหมด
- สร้างส่วนต่อประสานกับผู้ใช้ด้วย Tkinter และ Customtkinter
- ดาวน์โหลดโมเดล Stable Diffusion จาก Hugging Face
- ใช้ฟังก์ชัน "generate_image"
- สร้างปุ่มเพื่อเรียกใช้ฟังก์ชัน "generate_image"
นำเข้าไลบรารีที่จำเป็นทั้งหมด— เราเริ่มต้นด้วยการรวมไลบรารีที่จำเป็นไว้ในโค้ดของเรา ซึ่งจะทำให้แอปของเราสามารถเข้าถึงฟังก์ชันการทำงานของแอปพลิเคชันที่จำเป็นทั้งหมดได้
# Libraries for building GUI import tkinter as tk import customtkinter as ctk # Machine Learning libraries import torch from torch import autocast from diffusers import StableDiffusionPipeline # Libraries for processing image from PIL import ImageTk # private modules from authtoken import auth_token
สร้างส่วนต่อประสานกับผู้ใช้ด้วย Tkinter และ Customtkinter— Tkinter เป็นไลบรารี Python ที่รู้จักกันดีซึ่งสามารถใช้เพื่อสร้างส่วนต่อประสานกราฟิกกับผู้ใช้ (GUI) สำหรับแอปพลิเคชัน ผู้ใช้จะมีอินเทอร์เฟซแบบภาพเพื่อเชื่อมต่อกับโมเดลการแพร่กระจายที่เสถียร และดูผลลัพธ์ที่สร้างโดยโมเดล
# Create app user interface app = tk.Tk() app.geometry("532x632") app.title("Text to Image app") app.configure(bg='black') ctk.set_appearance_mode("dark") # Create input box on the user interface prompt = ctk.CTkEntry(height=40, width=512, text_font=("Arial", 15), text_color="white", fg_color="black") prompt.place(x=10, y=10) # Create a placeholder to show the generated image img_placeholder = ctk.CTkLabel(height=512, width=512, text="") img_placeholder.place(x=10, y=110)
ดาวน์โหลดโมเดลการแพร่กระจายที่เสถียรจากการกอดใบหน้า — ใช้แพลตฟอร์มการกอดใบหน้าเพื่อรับโมเดลการแพร่กระจายที่เสถียร โมเดลนี้จะทำหน้าที่เป็นแกนหลักในการสร้างรูปภาพตามข้อความหรือข้อความแจ้ง
# Download stable diffusion model from hugging face modelid = "CompVis/stable-diffusion-v1-4" device = "cuda" stable_diffusion_model = StableDiffusionPipeline.from_pretrained(modelid, revision="fp16", torch_dtype=torch.float16, use_auth_token=auth_token) stable_diffusion_model.to(device)
ใช้ฟังก์ชัน "generate_image" — พัฒนาฟังก์ชันที่เรียกว่า "generate_image" ซึ่งจะถูกทริกเกอร์ทุกครั้งที่มีเหตุการณ์การคลิกเกิดขึ้นบนอินเทอร์เฟซผู้ใช้ ฟังก์ชั่นนี้จะส่งข้อความหรือแจ้งไปยังโมเดลการแพร่กระจายที่เสถียรและรับรูปภาพเป็นการตอบกลับ รูปภาพนั้นจะแสดงภายในอินเทอร์เฟซผู้ใช้
# Generate image from text def generate_image(): """ This function generate image from a text with stable diffusion""" with autocast(device): image = stable_diffusion_model(prompt.get(),guidance_scale=8.5)["sample"][0] # Save the generated image image.save('generatedimage.png') # Display the generated image on the user interface img = ImageTk.PhotoImage(image) img_placeholder.configure(image=img)
สร้างปุ่มเพื่อทริกเกอร์ "ฟังก์ชัน Generate_image" — ติดตั้งปุ่มภายในอินเทอร์เฟซผู้ใช้ที่ผู้ใช้สามารถคลิกเพื่อเริ่มฟังก์ชัน "generate_image" ด้วยความช่วยเหลือของปุ่ม ผู้ใช้จะมีวิธีง่ายๆ ในการสร้างภาพตามข้อความที่ป้อน
trigger = ctk.CTkButton(height=40, width=120, text_font=("Arial", 15), text_color="black", fg_color="white", command=generate_image) trigger.configure(text="Generate") trigger.place(x=206, y=60) app.mainloop()
ดำเนินการแอป
ในการรันโค้ด ให้เรารวมโค้ดที่จำเป็นทั้งหมดไว้ในสคริปต์หลามชื่อ "app.py" สคริปต์นี้จะทำหน้าที่เป็นพื้นที่เก็บข้อมูลกลางสำหรับแอปพลิเคชันของเรา เมื่อเราเขียนโค้ดเสร็จแล้วและบันทึกเป็น "app.py" คุณสามารถเรียกใช้สคริปต์โดยใช้คำสั่งต่อไปนี้ในอินเทอร์เฟซบรรทัดคำสั่งหรือเทอร์มินัลของคุณ
หลาม app.py
การดำเนินการคำสั่งนี้จะเริ่มต้นการทำงานของสคริปต์ python เรียกใช้แอปพลิเคชันของเรา และทำให้ผู้ใช้สามารถโต้ตอบกับแอปของเราได้
# app.py # Libraries for building GUI import tkinter as tk import customtkinter as ctk # Machine Learning libraries import torch from torch import autocast from diffusers import StableDiffusionPipeline # Libraries for processing image from PIL import ImageTk # private modules from authtoken import auth_token # Create app user interface app = tk.Tk() app.geometry("532x632") app.title("Text to Image app") app.configure(bg='black') ctk.set_appearance_mode("dark") # Create input box on the user interface prompt = ctk.CTkEntry(height=40, width=512, text_font=("Arial", 15), text_color="white", fg_color="black") prompt.place(x=10, y=10) # Create a placeholder to show the generated image img_placeholder = ctk.CTkLabel(height=512, width=512, text="") img_placeholder.place(x=10, y=110) # Download stable diffusion model from hugging face modelid = "CompVis/stable-diffusion-v1-4" device = "cuda" stable_diffusion_model = StableDiffusionPipeline.from_pretrained(modelid, revision="fp16", torch_dtype=torch.float16, use_auth_token=auth_token) stable_diffusion_model.to(device) # Generate image from text def generate_image(): """ This function generate image from a text with stable diffusion""" with autocast(device): image = stable_diffusion_model(prompt.get(),guidance_scale=8.5)["sample"][0] # Save the generated image image.save('generatedimage.png') # Display the generated image on the user interface img = ImageTk.PhotoImage(image) img_placeholder.configure(image=img) trigger = ctk.CTkButton(height=40, width=120, text_font=("Arial", 15), text_color="black", fg_color="white", command=generate_image) trigger.configure(text="Generate") trigger.place(x=206, y=60) app.mainloop()
คุณยังสามารถค้นหาโปรเจ็กต์ทั้งหมดได้ใน "GitHub" ของฉัน
บทสรุป
เราได้เรียนรู้กระบวนการสร้างแอปข้อความเป็นรูปภาพโดยใช้ Tkinter สำหรับอินเทอร์เฟซผู้ใช้และโมเดล Stable Diffusion จาก AI ที่มีความเสถียรผ่าน Hugging Face ในโค้ด 30 บรรทัด ตอนนี้คุณสามารถสร้างเครื่องมือสร้างข้อความเป็นรูปภาพโดยใช้ AI ได้แล้ว