Используйте модель OpenAI DALL·E 2 для создания изображений с помощью Python.

Если вы когда-либо использовали ChatGPT, то вы видели его интуицию. С API-интерфейсами OpenAI генерация кода, завершение текста, сравнение текста, обучение моделей и создание изображений — все это доступно разработчикам для изучения и интеграции в приложения.

В этом руководстве вы узнаете, как использовать API OpenAI с Python для создания, редактирования и изменения изображений с помощью подсказок на естественном языке.

Начало работы с OpenAI с использованием Python

Перед началом этого урока вам нужно настроить несколько вещей. Во-первых, убедитесь, что на вашем компьютере установлена ​​последняя версия Python. Если вы используете дистрибутив Linux, такой как Ubuntu, вы также можете увидеть как установить питон на убунту.

Создайте новую папку для своего проекта и откройте командную строку в каталоге вашего проекта.

Далее идет установка пакета OpenAI. Вам нужно установить подушка для преобразования изображений в RGBA при использовании конечной точки редактирования изображений. Вы также можете установить

instagram viewer
python-dotenv; вы будете использовать это для маскировки секретных ключей.

Мы рекомендуем создать выделенная виртуальная среда Python для изоляции зависимостей.

Код, используемый в этом проекте, доступен в Репозиторий GitHub и вы можете использовать его бесплатно по лицензии MIT.

Чтобы установить python-dotenv, подушка, и опенай пакеты, выполните в терминале следующую команду:

pip установить подушку openai python-dotenv

Теперь отправляйтесь в OpenAI и войдите в свою панель инструментов, чтобы получить ключ API:

  1. После входа в систему щелкните значок своего профиля в правом верхнем углу.
  2. Идти к Просмотр ключей API. Если ваш ключ API не отображается, нажмите Создать новый секретный ключ для создания нового.
  3. Скопируйте сгенерированный секретный ключ и вставьте его в безопасное место на своем компьютере. Возможно, вы захотите вставить его в файл переменной среды в корневом каталоге вашего проекта для безопасности.

Как создавать и редактировать изображения с помощью API OpenAI в Python

Генерация изображений OpenAI API включает конечные точки для создания новых изображений, создания вариантов изображений и их редактирования.

В следующих разделах вы изучите эти конечные точки для создания, редактирования, настройки и загрузки изображений с помощью подсказок на естественном языке.

Генерация изображений с помощью OpenAI API

Конечная точка создания изображения принимает три аргумента ключевого слова. К ним относятся быстрый, н, и размер.

быстрый ключевое слово — это строка текста, описывающая изображение, которое вы хотите создать, а н количество изображений, которые необходимо сгенерировать во время вызова API. размер — это размер изображения, и на момент написания он принимает только 256x256, 512x512 и 1024x1024 пикселей, согласно официальному OpenAI документация по генерации изображений.

Следующий код генерирует изображения с помощью подсказок на естественном языке и выводит их URL (адреса изображений):

Импортировать опенай
Импортировать Операционные системы
Импортировать Запросы
от дотенв Импортировать load_dotenv
от ПИЛ Импортировать Изображение
load_dotenv()

сортГенератор изображений:
деф__в этом__(себя) -> ул:
self.image_url: ул
openai.api_key = os.getenv("OPENAI_API_KEY")
себя. APIKey = openai.api_key
само.имя = Никто

дефсгенерировать изображение(самостоятельно, подсказка, ImageCount, ImageSize):
пытаться:
себя. APIКлюч
ответ = опенай. Изображение.создать(
подсказка = подсказка,
n = количество изображений,
размер = размер изображения,
)
self.image_url = ответ['данные']

self.image_url = [изображение["адрес"] для изображение в self.image_url]
печать (self.image_url)
возвращаться self.image_url
кроме опенай.ошибка. OpenAIError как е:
печать (e.http_status)
печать (e.ошибка)

дефскачатьизображение(я, имена)-> Никто:
пытаться:
self.name = имена
для URL в self.image_url:
изображение = запросы.get (ссылка)
для имя в собственное имя:
с открыть("{}.png".формат (имя), "ВБ") как ф:
f.write (изображение.содержимое)
кроме:
Распечатать("Произошла ошибка")
возвращаться собственное имя

# Создать экземпляр класса
imageGen = Генератор изображений ()

# Генерация изображений:
imageGen.generateImage(
Подсказка = "Гигантский лев, медведь, обезьяна и тигр стоят на водопаде",
Количество изображений = 2,
Размер изображения = «1024x1024»
)

# Загрузите изображения:
imageGen.downloadImage (имена = [
"Животные",
"Животные2"
])

Приведенный выше код содержит Генератор изображений класс с URL изображения и APIКлюч атрибуты. сгенерировать изображение Метод адаптирует требования к конечной точке создания изображения. Он генерирует н URL-адреса с приглашением на естественном языке, в зависимости от ImageCount ценить.

Однако, self.image_url извлекает сгенерированные URL-адреса изображений из ответа JSON в список, используя цикл for в понимании списка.

Вывод выглядит следующим образом:

Наконец, скачатьизображение Метод загружает каждое изображение, запрашивая сгенерированные адреса. Этот метод принимает н количество имен, которые вы хотите дать каждому изображению.

Редактирование изображений с помощью OpenAI API

Конечная точка редактирования позволяет редактировать существующее изображение на основе шаблона маски. Маска имеет формат RGBA с аннотированной прозрачной областью и должна быть того же размера, что и изображение, которое вы хотите отредактировать.

Когда вы предоставляете маску, конечная точка редактирования заменяет свою маскируемую область новой подсказкой в ​​существующем изображении, чтобы создать новую. Добавьте следующие методы к предыдущему классу:

сортГенератор изображений:
деф__в этом__(себя, ...):
...

дефконвертироватьИзображение(я, имя_маски):
изображение = изображение.открыть("{}.png".format (имя_маски))
rgba_image = изображение.конвертировать(«РГБА»)
rgba_image.save("{}.png".format (имя_маски))

возвращаться rgba_image


дефизменить изображение(я, imageName, maskName, ImageCount, ImageSize, Prompt) -> ул:
self.convertImage (имя_маски)
ответ = опенай. Изображение.create_edit(
изображение = открыть("{}.png".формат (имя изображения), "рб"),
маска = открыть("{}.png".формат (имя_маски), "рб"),
подсказка = подсказка,
n = количество изображений,
размер = размер изображения,
)
self.image_url = ответ['данные']
self.image_url = [изображение["адрес"] для изображение в self.image_url]

печать (self.image_url)
возвращаться self.image_url

# Отредактируйте существующее изображение:
imageGen.editImage(
имя_изображения = "Животные",
имя_маски = "маска",
Количество изображений = 1,
Размер изображения = "1024x1024",
Подсказка = "Орел стоит на берегу реки и пьет воду с большой горы"
)

# Загрузите отредактированное изображение:
imageGen.downloadImage (имена = [
«Новые животные»,
])

конвертироватьИзображение метод преобразует изображение маски в формат RGBA. Вы можете добиться этого с помощью конвертировать метод из пакета Python Pillow (импортированный как PIL).

После преобразования он сохраняет новую маску как замену существующей. Таким образом, преобразование изображения является первой задачей метода редактирования (изменить изображение) выполняет.

изображение считывает целевое изображение из существующего файла, в то время как маска считывает преобразованное изображение маски, которое должно иметь прозрачную область.

Вы можете выделить прозрачную область в маске, используя программное обеспечение для редактирования фотографий как гимп или фотошоп.

Например, изображение, которое мы хотим отредактировать с помощью подсказки в коде выше:

Теперь предположим, что вы хотите заменить антилопу, стоящую на берегу реки, на орла, как указано в подсказке.

Вот как выглядит маска:

Поскольку ключевое слово в приглашении из приведенного выше кода говорит «орел, стоящий на берегу реки», пустое место заполняется орлом, заменяющим антилопу, которая была там ранее.

Вот новое изображение в этом случае:

Вы можете попробовать поиграть с конечной точкой редактирования изображения, используя другие фотографии.

Генерация вариантов изображений в Python с использованием API OpenAI

Конечная точка варианта создает альтернативные изображения из существующего изображения. Расширьте класс генератора изображений, добавив метод изменения изображения, как показано ниже:

сортГенератор изображений:
деф__в этом__(себя) -> ул:
...

дефimageВариации(я, ImageName, VariationCount, ImageSize):
ответ = опенай. Изображение.create_variation(
изображение = открыть("{}.png".формат (имя изображения), "рб"),
n = количество вариантов,
размер = размер изображения
)

self.image_url = ответ['данные']

self.image_url = [изображение["адрес"] для изображение в self.image_url]
печать (self.image_url)
возвращаться self.image_url

# Создать экземпляр класса
imageGen = Генератор изображений ()

# Создание вариантов для существующего изображения
imageGen.imageVariations(
ИмяИзображения = "Новые_животные",
Счетчик вариантов = 2,
Размер изображения = "1024x1024"
)

# Скачать варианты
imageGen.downloadImage (имена = [
"Вариация1",
"Вариация2",
]
)

Приведенный выше код генерирует варианты изображения.

Используйте OpenAI в своих интересах

Хотя некоторые люди опасаются, что ИИ может лишить их работы, в конце концов, он может стать убежищем — если вы научитесь контролировать и использовать его. Это руководство по созданию изображений OpenAI — лишь один из многих вариантов использования ИИ в реальном мире. API-интерфейсы OpenAI предоставляют удобные предварительно обученные модели, которые вы можете легко интегрировать в свое приложение. Таким образом, вы можете принять вызов и создать что-то стоящее из этого урока.

Хотя на момент написания API для генерации изображений все еще находится в стадии бета-тестирования, он уже позволяет создавать воображаемые произведения искусства. Будем надеяться, что он получит дальнейшие обновления, позволяющие увеличивать масштаб и принимать изображения разных размеров.