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.