Как создать приложение для преобразования текста в изображение с бесплатной моделью искусственного интеллекта за 30 строк кода
Создание удивительных изображений с помощью искусственного интеллекта – пошаговое руководство по созданию приложения для тестирования изображений
В нашем быстро меняющемся мире искусственный интеллект занимает центральное место. Неудивительно, что ИИ привлек наше внимание, ведь он способен повысить эффективность в различных отраслях. Возможно, вы уже экспериментировали с такими инструментами преобразования текста в изображение, как Midjourney и Dream Studio, но в этой статье я расскажу вам пошаговое руководство по созданию собственного приложения “midjourney” для генерации текста в изображение с нуля с помощью Stable diffusion. Это около 30 строк кода. Поскольку stable diffusion имеет открытый исходный код, модель бесплатна.
Предварительные условия
Давайте убедимся, что у вас есть все необходимое, прежде чем приступить к созданию собственного приложения для генерации текста в изображение.
– Вам нужен ноутбук с графическим процессором. Не волнуйтесь, если на вашем компьютере нет GPU, вы можете использовать Google Colab для доступа к бесплатному GPU, но использование ноутбука с GPU более оптимально.
– Установите интегрированную среду разработки (IDE) с окружением python.
Соблюдая эти жизненно важные условия, вы готовы к работе.
Введение
Давайте вкратце познакомимся с миром диффузионных моделей, которые используются для генерации изображений из текста. Диффузионная модель использует марковскую цепь для постепенного внесения шума в данные, а затем обратного процесса и получения желаемой выборки данных из шума. Яркими примерами диффузионных моделей являются DALLE 2 от OpenAI, Imagen от Google и Stable diffusion, разработанная StabilityAI. В этой статье мы сосредоточимся на использовании Stable Diffusion от Stability AI для создания нашего APP. Несмотря на то, что генеративные модели, такие как Generative Adversarial Networks (GANs), Variational Autoencoders (VAEs) и Flow-based models, хорошо известны, диффузионные модели являются более современными, эффективными и дают лучшие результаты.
Настройка и установка
Мы можем получить доступ к модели стабильной диффузии через Hugging face. Hugging face – это сообщество и платформа, предоставляющая доступ к моделям машинного обучения с открытым исходным кодом и набору данных. Поскольку модели с открытым исходным кодом, доступ к Hugging Face бесплатный, хотя есть и платный уровень. Необходимо создать профиль на 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 install requirements.txt
Создание приложения
Чтобы обеспечить четкое понимание процесса, давайте изложим пошаговый подход, которому мы будем следовать при создании приложения.
- Реализовать функцию “generate_image “Импортировать все необходимые библиотеки
- Создайте пользовательский интерфейс с помощью Tkinter и Customtkinter
- Загрузите модель стабильной диффузии с сайта 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)
Скачайте модель стабильной диффузии с hugging face – используйте платформу hugging face для получения модели стабильной диффузии. Эта модель будет служить основой для генерации изображений на основе текста или подсказок.
# 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()
Выполнить приложение
Чтобы выполнить код, давайте объединим весь необходимый код в скрипт python с именем “app.py”. Этот скрипт будет служить центральным хранилищем для нашего приложения. После того как мы завершили написание кода и сохранили его как “app.py”, вы можете запустить скрипт с помощью следующей команды в интерфейсе командной строки или терминале
python 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()
Заключение
Мы изучили процесс создания приложения для преобразования текста в изображение с использованием Tkinter для пользовательского интерфейса и модели Stable Diffusion из стабильного AI с помощью Hugging Face за 30 строк кода. Теперь вы можете создать свой собственный инструмент генерации текста в изображение с помощью AI.