Използвайте модела DALL·E 2 на OpenAI, за да генерирате изображения с помощта на Python.
Ако някога сте използвали ChatGPT, значи сте свидетели на неговата интуиция. С API на OpenAI генерирането на код, допълването на текст, сравнението на текст, обучението на модели и генерирането на изображения са в чантата, която разработчиците могат да изследват и интегрират в приложения.
В този урок ще научите как да използвате API на OpenAI с Python, за да генерирате, редактирате и променяте изображения с помощта на подкани на естествен език.
Първи стъпки с OpenAI с помощта на Python
Трябва да настроите няколко неща, преди да започнете този урок. Първо се уверете, че сте инсталирали най-новата версия на Python на вашия компютър. Ако използвате Linux дистрибуция като Ubuntu, може също да искате да видите как да инсталирате Python на Ubuntu.
Създайте нова папка за вашия проект и отворете командния ред в директорията на вашия проект.
Следва инсталирането на пакета OpenAI. Трябва да инсталирате възглавница
за конвертиране на изображения в RGBA, докато използвате крайната точка за редактиране на изображения. Може също да искате да инсталирате python-dotenv; ще използвате това, за да маскирате секретни ключове.Препоръчваме да създадете a специална виртуална среда на Python за изолиране на зависимости.
Кодът, използван в този проект, е наличен в a GitHub хранилище и е безплатен за използване под лиценза на MIT.
За да инсталирате python-dotenv, възглавница, и openai пакети, изпълнете следната команда в терминала:
pip инсталирайте openai python-dotenv възглавница
Сега се насочете към OpenAI и влезте в таблото си за управление, за да вземете вашия API ключ:
- След като влезете, щракнете върху иконата на вашия профил в горната дясна секция.
- Отидете на Вижте API ключове. Ако вашият API ключ не се вижда, щракнете Създайте нов таен ключ за генериране на нов.
- Копирайте генерирания таен ключ и го поставете на сигурно място на вашия компютър. Може да искате да го поставите във файл с променлива на средата в основната директория на вашия проект за сигурност.
Как да генерирате и редактирате изображения с OpenAI API в Python
Генерирането на изображения на OpenAI API включва крайни точки за генериране на нови изображения, създаване на варианти на изображения и редактирането им.
В следващите раздели ще изследвате тези крайни точки, за да генерирате, редактирате, настройвате и изтегляте изображения с помощта на подкани на естествен език.
Генериране на изображения с помощта на OpenAI API
Крайната точка за генериране на изображение приема три ключови аргумента. Те включват подкана, н, и размер.
The подкана ключовата дума е низ от текст, описващ изображението, което искате да генерирате, докато н е броят на изображенията, които да се генерират по време на извикване на API. The размер е размерът на изображението и към момента на писане приема само 256x256, 512x512 и 1024x1024 пиксела, според официалния OpenAI документация за генериране на изображения.
Следният код генерира изображения с помощта на подкани на естествен език и извежда техните URL (адреси на изображения):
импортиране openai
импортиране операционна система
импортиране заявки
от dotenv импортиране load_dotenv
от PIL импортиране Изображение
load_dotenv()класГенератор на изображения:
деф__в него__(себе си) -> str:
self.image_url: ул
openai.api_key = os.getenv(„OPENAI_API_KEY“)
себе си. APIKey = openai.api_key
self.name = Нито единдефгенериране на изображение(self, Prompt, ImageCount, ImageSize):
опитвам:
себе си. APIKey
отговор = openai. Image.create(
prompt = Подкана,
n = брой изображения,
размер = Размер на изображението,
)
self.image_url = отговор['данни']
self.image_url = [изображение["url"] за изображение в self.image_url]
печат (self.image_url)
връщане self.image_url
с изключение openai.error. OpenAIError като д:
печат (e.http_status)
печат (e.error)дефdownloadImage(себе си, имена)-> Нито един:
опитвам:
self.name = имена
за URL адрес в self.image_url:
изображение = requests.get (url)
за име в собствено име:
с отворен(„{}.png“.format (име), "wb") като е:
f.write (image.content)
с изключение:
печат ("Възникна грешка")
връщане собствено име# Създаване на класа
imageGen = ImageGenerator()# Генериране на изображения:
imageGen.generateImage(
Подкана = „Гигантски лъв, мечка, маймуна и тигър, стоящи на водопад“,
ImageCount = 2,
Размер на изображението = "1024x1024"
)
# Изтеглете изображенията:
imageGen.downloadImage (имена=[
"Животни",
"Животни 2"
])
Горният код съдържа Генератор на изображения клас с image_url и APIKey атрибути. The генериране на изображение методът адаптира изискванията на крайната точка за генериране на изображение. То генерира н URL адреси, използващи подкана на естествен език, в зависимост от ImageCount стойност.
Въпреки това, self.image_url извлича генерираните URL адреси на изображения от JSON отговора в списък, използвайки цикъла for в разбиране на списък.
Резултатът изглежда така:
И накрая, на downloadImage метод изтегля всяко изображение, като изисква генерираните адреси. Този метод приема н брой имена, които искате да дадете на всяко изображение.
Редактиране на изображения с помощта на OpenAI API
Крайната точка за редактиране ви позволява да редактирате съществуващо изображение въз основа на шаблон на маска. Маската е RGBA формат с анотирана, прозрачна област и трябва да бъде със същия размер като изображението, което искате да редактирате.
Когато предоставите маска, крайната точка за редактиране замества своята маскирана област с новата подкана в съществуващото изображение, за да създаде ново. Добавете следните методи към горния предишен клас:
класГенератор на изображения:
деф__в него__(себе си, ...):
...дефconvertImage(self, maskName):
изображение = Изображение.open(„{}.png“.format (maskName))
rgba_image = image.convert(„RGBA“)
rgba_image.save(„{}.png“.format (maskName))връщане rgba_image
дефeditImage(self, imageName, maskName, ImageCount, ImageSize, Prompt) -> str:
self.convertImage (maskName)
отговор = openai. Image.create_edit(
изображение = отворено(„{}.png“.format (imageName), "rb"),
маска = отворено(„{}.png“.format (maskName), "rb"),
prompt = Подкана,
n = брой изображения,
размер = Размер на изображението,
)
self.image_url = отговор['данни']
self.image_url = [изображение["url"] за изображение в self.image_url]печат (self.image_url)
връщане self.image_url# Редактиране на съществуващо изображение:
imageGen.editImage(
име на изображение = "Животни",
maskName = "маска",
ImageCount = 1,
Размер на изображението = "1024x1024",
Подкана = „Орел, стоящ на брега на реката, пиещ вода с голяма планина“
)
# Изтеглете редактираното изображение:
imageGen.downloadImage (имена=[
"Нови животни",
])
The convertImage метод преобразува изображението на маската във формат RGBA. Можете да постигнете това с помощта на преобразувам метод от пакета възглавници на Python (импортиран като PIL).
Веднъж преобразувана, тя записва новата маска като замяна на съществуващата. По този начин преобразуването на изображения е първата задача на метода за редактиране (editImage) изпълнява.
The изображение чете целевото изображение от съществуващ файл, докато маска чете преобразуваното изображение на маската, което трябва да има прозрачна област.
Можете да маркирате прозрачна област в маската, като използвате софтуер за редактиране на снимки като Gimp или Photoshop.
Например изображението, което искаме да редактираме с помощта на подканата в кода по-горе, е:
Сега приемете, че искате да замените антилопата, стояща до брега на реката, с орел, както е посочено в подканата.
Ето как изглежда маската:
Тъй като ключовата дума в подканата от горния код гласи „орел, стоящ на брега на реката“, празното място се запълва от орел, замествайки антилопата, която е била там преди.
Ето новото изображение в този случай:
Можете да опитате да си поиграете с крайната точка за редактиране на изображения, като използвате други снимки.
Генериране на вариации на изображения в Python с помощта на OpenAI API
Крайната точка на вариацията генерира алтернативни изображения от съществуващо изображение. Разширете допълнително класа на генератора на изображения, като добавите метод за промяна на изображението, както е показано по-долу:
класГенератор на изображения:
деф__в него__(себе си) -> str:
...
дефimageVariations(self, ImageName, VariationCount, ImageSize):
отговор = openai. Image.create_variation(
изображение = отворено(„{}.png“.format (ImageName), "rb"),
n = Брой варианти,
размер = Размер на изображението
)
self.image_url = отговор['данни']
self.image_url = [изображение["url"] за изображение в self.image_url]
печат (self.image_url)
връщане self.image_url
# Създаване на класа
imageGen = ImageGenerator()# Генериране на варианти за съществуващо изображение
imageGen.imageVariations(
Име на изображение = "Нови_животни",
VariationCount = 2,
Размер на изображението = "1024x1024"
)
# Изтеглете вариациите
imageGen.downloadImage (имена=[
"Вариант 1",
"Вариант 2",
]
)
Горният код генерира варианти на изображение.
Използвайте OpenAI във ваша полза
Въпреки че някои хора се страхуват, че изкуственият интелект може да открадне работата им, в крайна сметка това може да е рай – ако се научите да го контролирате и използвате. Този урок за създаване на изображения на OpenAI е само един от многото случаи на използване на AI в реалния свят. API на OpenAI предоставят удобни предварително обучени модели, които можете лесно да интегрирате в приложението си. Така че можете да приемете предизвикателството и да изградите нещо полезно от този урок.
Въпреки че API за генериране на изображения все още е в бета версия към момента на писане, той вече ви позволява да създавате въображаеми произведения на изкуството. Надяваме се, че ще получи допълнителни актуализации, за да позволи мащабиране и да приеме различни размери на изображенията.