Hasilkan Gambar menakjubkan dengan AI, panduan langkah demi langkah untuk membuat Aplikasi Test-to-Image

Di dunia yang berubah dengan cepat, AI menjadi pusat perhatian. Tidak mengherankan jika AI menarik perhatian kita karena berpotensi meningkatkan efisiensi di berbagai industri. Anda mungkin telah bereksperimen dengan alat teks ke gambar seperti Midjourney dan Dream Studio, tetapi dalam artikel ini, saya akan memandu Anda panduan langkah demi langkah dalam membuat aplikasi pembuat teks ke gambar "tengah perjalanan" Anda sendiri dari awal menggunakan Difusi stabil. Ini sekitar 30 baris kode. Karena difusi stabil adalah sumber terbuka, modelnya gratis.

Prasyarat

Pastikan Anda memiliki semua yang Anda perlukan sebelum mulai membuat aplikasi pembuat teks-ke-gambar Anda sendiri.

  • Anda membutuhkan laptop dengan GPU. Jangan khawatir jika komputer Anda kekurangan GPU, Anda bisa menggunakan Google Colab untuk mengakses GPU gratis, namun menggunakan laptop dengan GPU lebih optimal.
  • Siapkan Lingkungan Pengembangan Terpadu (IDE) dengan lingkungan python.

Dengan adanya kondisi penting ini, Anda sudah siap.

Pendahuluan

Mari kita memahami secara singkat dunia model difusi yang digunakan untuk menghasilkan gambar dari teks. Model difusi menggunakan rantai markov untuk memasukkan derau ke data secara bertahap, lalu membalikkan prosesnya dan menghasilkan sampel data yang diinginkan dari derau. Contoh penting model difusi termasuk DALLE 2 oleh OpenAI, Imagen oleh Google, dan Difusi stabil yang dikembangkan oleh StabilityAI. Dalam artikel ini, fokus kami adalah menggunakan Difusi Stabil dari Stability AI untuk membangun Aplikasi kami. Meskipun model generatif seperti Generative Adversarial Networks (GANs), Variational Autoencoders (VAEs) dan model berbasis Flow sudah terkenal, model difusi lebih baru, efisien dan memberikan hasil yang lebih baik.

Penyiapan dan pemasangan

Kita bisa mendapatkan akses ke model difusi stabil melalui Hugging face. Hugging face adalah komunitas dan platform yang menyediakan akses ke model dan kumpulan data pembelajaran mesin sumber terbuka. Karena modelnya open source, pelukan wajah gratis meskipun ada juga yang berbayar. Penting untuk membuat profil tentang pelukan wajah jika Anda belum memilikinya. Setelah membuat profil, Anda memerlukan "Token akses".

  • Klik ikon profil Anda
  • Klik pada "Pengaturan"
  • Arahkan ke “Access Tokens” di tab kiri
  • Anda dapat membuat token baru atau menggunakan token yang sudah ada.
  • Salin tokennya

Token yang diperlukan untuk mengakses model difusi Stabil gratis yang menjadikan pelukan wajah sebagai sumber daya yang kuat.

Buat file "authtoken.py". File ini akan berisi token akses Anda ke wajah berpelukan

# authtoken.py

# How to get one: https://huggingface.co/docs/hub/security-tokens
auth_token = "{COPY ACCESS TOKEN FROM HUGGING FACE}"

Pasang semua persyaratan

Buat file “persyaratan.txt”. Jika Anda familiar dengan coding dengan python, Anda pasti sudah tahu untuk apa file ini digunakan. File “requirements.txt” berisi semua perpustakaan yang diperlukan untuk diinstal untuk proyek 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

Jalankan perintah di bawah ini untuk menginstal perpustakaan di persyaratan.txt Anda

persyaratan pemasangan pip.txt

Membangun aplikasi

Untuk memastikan pemahaman yang jelas tentang prosesnya, mari kita uraikan pendekatan langkah demi langkah yang akan kita ikuti dalam membangun aplikasi.

  • Terapkan fungsi “generate_image” Impor semua perpustakaan yang diperlukan
  • Buat antarmuka pengguna dengan Tkinter dan Customtkinter
  • Unduh model Difusi Stabil dari Hugging Face
  • Terapkan fungsi "hasilkan_gambar".
  • Buat tombol untuk memicu "fungsi hasilkan_gambar"

Impor semua perpustakaan yang diperlukan— Kita mulai dengan memasukkan perpustakaan yang diperlukan ke dalam kode kita, ini akan memberi aplikasi kita akses ke semua fungsi aplikasi yang diperlukan.

# 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

Buat antarmuka pengguna dengan Tkinter dan Customtkinter— Tkinter adalah pustaka python terkenal yang dapat digunakan untuk membuat Antarmuka Pengguna Grafis (GUI) untuk suatu aplikasi. Pengguna akan memiliki antarmuka visual untuk berinteraksi dengan model difusi stabil dan melihat hasil yang dihasilkan oleh model tersebut.

# 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)

Unduh model difusi stabil dari pelukan wajah — gunakan platform pelukan wajah untuk mendapatkan model difusi yang stabil. Model ini akan berfungsi sebagai tulang punggung untuk menghasilkan gambar berdasarkan teks atau petunjuk.

# 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) 

Terapkan fungsi “generate_image” — Kembangkan fungsi yang disebut “generate_image” yang akan dipicu setiap kali peristiwa klik terjadi pada antarmuka pengguna. Fungsi ini akan mengirimkan teks atau prompt ke model difusi stabil dan menerima gambar sebagai respons. Gambar kemudian akan ditampilkan dalam antarmuka pengguna.

# 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) 

Buat tombol untuk memicu “fungsi hasilkan_gambar” — terapkan tombol dalam antarmuka pengguna yang dapat diklik pengguna untuk memulai fungsi “hasilkan_gambar”. Dengan bantuan tombol tersebut, pengguna akan memiliki cara mudah untuk membuat gambar berdasarkan teks masukan mereka.

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()

Jalankan Aplikasi

Untuk mengeksekusi kode, mari kita gabungkan semua kode yang diperlukan ke dalam skrip python bernama “app.py”. Skrip ini akan berfungsi sebagai repositori pusat untuk aplikasi kita. Setelah kami selesai menulis kode dan menyimpannya sebagai "app.py", Anda dapat menjalankan skrip menggunakan perintah berikut di antarmuka baris perintah atau terminal Anda

aplikasi python.py

Menjalankan perintah ini akan memulai eksekusi skrip python, meluncurkan aplikasi kita dan memungkinkan pengguna berinteraksi dengan aplikasi kita.

# 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()

Anda juga dapat menemukan proyek lengkapnya di github saya

Kesimpulan

Kami mempelajari proses pembuatan aplikasi teks ke gambar menggunakan Tkinter untuk antarmuka pengguna dan model Difusi Stabil dari AI stabilitas melalui Hugging Face dalam 30 baris kode. Sekarang, Anda dapat membuat alat pembuat teks ke gambar Anda sendiri menggunakan AI.