Создавайте потрясающие изображения с помощью ИИ: пошаговое руководство по созданию приложения Test-to-Image
В нашем быстро меняющемся мире ИИ занимает центральное место. Неудивительно, что ИИ привлек наше внимание, потому что он может повысить эффективность в различных отраслях. Возможно, вы экспериментировали с инструментами преобразования текста в изображение, такими как Midjourney и Dream Studio, но в этой статье я покажу вам пошаговое руководство по созданию вашего собственного приложения для преобразования текста в изображение с нуля с использованием стабильной диффузии. Это около 30 строк кода. Поскольку стабильная диффузия имеет открытый исходный код, модель бесплатна.
Предпосылки
Давайте удостоверимся, что у вас есть все необходимое, прежде чем погрузиться в создание собственного приложения для преобразования текста в изображение.
- Вам нужен ноутбук с графическим процессором. Не беспокойтесь, если на вашем компьютере нет графического процессора, вы можете использовать Google Colab для доступа к бесплатному графическому процессору, но использование ноутбука с графическим процессором более оптимально.
- Настройте интегрированную среду разработки (IDE) со средой Python.
С этими жизненно важными условиями все готово.
Введение
Давайте кратко разберемся в мире моделей диффузии, которые используются для создания изображений из текста. Диффузионная модель использует цепь Маркова для постепенного введения шума в данные, затем обращает процесс вспять и создает желаемую выборку данных из шума. Известные примеры моделей диффузии включают DALE 2 от OpenAI, Imagen от Google и стабильную диффузию, разработанную StabilityAI. В этой статье мы сосредоточимся на использовании Stable Diffusion от Stability AI для создания нашего приложения. Несмотря на то, что генеративные модели, такие как генеративно-состязательные сети (GAN), вариационные автоэнкодеры (VAE) и модели на основе потоков, хорошо известны, диффузионные модели являются более новыми, эффективными и дают лучшие результаты.
Настройка и установка
Мы можем получить доступ к модели стабильной диффузии через 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.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)
Загрузить стабильную диффузионную модель с обнимающего лица — используйте платформу с обнимающим лицом, чтобы получить стабильную диффузионную модель. Эта модель послужит основой для создания изображений на основе текста или подсказок.
# 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.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 из стабильного ИИ с помощью Hugging Face в 30 строках кода. Теперь вы можете создать свой собственный инструмент для преобразования текста в изображение с помощью ИИ.