Wykorzystaj model DALL·E 2 OpenAI do generowania obrazów za pomocą Pythona.

Jeśli kiedykolwiek korzystałeś z ChatGPT, byłeś świadkiem jego intuicji. Dzięki interfejsom API OpenAI generowanie kodu, uzupełnianie tekstu, porównywanie tekstu, trenowanie modeli i generowanie obrazów są dostępne dla programistów do eksploracji i integracji z aplikacjami.

W tym samouczku dowiesz się, jak używać interfejsu API OpenAI z językiem Python do generowania, edytowania i różnicowania obrazów przy użyciu monitów w języku naturalnym.

Pierwsze kroki z OpenAI przy użyciu Pythona

Przed rozpoczęciem tego samouczka musisz skonfigurować kilka rzeczy. Najpierw upewnij się, że masz zainstalowaną najnowszą wersję Pythona na swoim komputerze. Jeśli używasz dystrybucji Linuksa, takiej jak Ubuntu, możesz również chcieć zobaczyć jak zainstalować Pythona na Ubuntu.

Utwórz nowy folder dla swojego projektu i otwórz wiersz poleceń w katalogu projektu.

Następna jest instalacja pakietu OpenAI. Musisz zainstalować poduszka do konwersji obrazów na RGBA podczas korzystania z punktu końcowego edycji obrazu. Możesz także chcieć zainstalować

instagram viewer
python-dotenv; użyjesz tego do zamaskowania tajnych kluczy.

Zalecamy utworzenie dedykowane środowisko wirtualne Pythona izolować zależności.

Kod użyty w tym projekcie jest dostępny w formacie Repozytorium GitHub i jest darmowy do użytku na licencji MIT.

Aby zainstalować python-dotenv, poduszka, I otwórz pakiety, uruchom następujące polecenie w terminalu:

pip install openai python-dotenv poduszka

Teraz skieruj się do OpenAI i zaloguj się do swojego pulpitu nawigacyjnego, aby pobrać klucz API:

  1. Po zalogowaniu kliknij ikonę swojego profilu w prawym górnym rogu.
  2. Iść do Wyświetl klucze API. Jeśli Twój klucz API nie jest widoczny, kliknij Utwórz nowy tajny klucz aby wygenerować nowy.
  3. Skopiuj wygenerowany tajny klucz i wklej go w bezpiecznym miejscu na komputerze. Możesz ze względów bezpieczeństwa wkleić go do pliku zmiennej środowiskowej w katalogu głównym projektu.

Jak generować i edytować obrazy za pomocą OpenAI API w Pythonie

Generowanie obrazów OpenAI API zawiera punkty końcowe do generowania nowych obrazów, tworzenia odmian obrazów i ich edytowania.

W poniższych sekcjach zapoznasz się z tymi punktami końcowymi, aby generować, edytować, dostosowywać i pobierać obrazy przy użyciu monitów w języku naturalnym.

Generowanie obrazów przy użyciu API OpenAI

Punkt końcowy generowania obrazu akceptuje trzy argumenty słów kluczowych. Obejmują one podpowiedź, N, I rozmiar.

The podpowiedź słowo kluczowe to ciąg tekstu opisujący obraz, który chcesz wygenerować, podczas gdy N to liczba obrazów do wygenerowania podczas wywołania API. The rozmiar to rozmiar obrazu i według oficjalnego OpenAI dokumentacja generowania obrazu.

Poniższy kod generuje obrazy przy użyciu monitów w języku naturalnym i wyświetla ich adresy URL (adresy obrazów):

import otwórz
import os
import upraszanie
z dotenv import ładuj_dotenv
z PIL import Obraz
load_dotenv()

klasaImageGenerator:
pok__w tym__(samego siebie) -> ul:
self.image_url: ul
openai.api_key = os.getenv(„OPENAI_API_KEY”)
samego siebie. APIKey = openai.api_key
imię.własne = Nic

pokwygeneruj obraz(własny, monit, liczba obrazów, rozmiar obrazu):
próbować:
samego siebie. Klucz API
odpowiedź = otwórz. Obraz.utwórz(
zachęta = zachęta,
n = liczba obrazów,
rozmiar = rozmiar obrazu,
)
self.image_url = odpowiedź['dane']

self.image_url = [obraz [„URL”] Do obraz W self.image_url]
drukuj (self.image_url)
powrót self.image_url
z wyjątkiem openai.błąd. Błąd OpenAIE Jak mi:
drukuj (np. http_status)
drukuj (e.błąd)

pokpobierzObraz(ja, imiona)-> Nic:
próbować:
imię.własne = imiona
Do adres URL W self.image_url:
image = request.get (adres URL)
Do nazwa W imię.własne:
z otwarty("{}.png"format (nazwa), "wb") Jak F:
f.write (obraz.zawartość)
z wyjątkiem:
wydrukować("Wystąpił błąd")
powrót imię.własne

# Utwórz instancję klasy
ImageGen = ImageGenerator()

# Generuj obrazy:
imageGen.generateImage(
Monit = „Gigantyczny lew, niedźwiedź, małpa i tygrys stojący na wodospadzie”,
Liczba obrazów = 2,
Rozmiar obrazu = „1024x1024”
)

# Pobierz obrazy:
imageGen.downloadImage (nazwy=[
"Zwierząt",
„Zwierzęta2”
])

Powyższy kod zawiera plik ImageGenerator klasa z obraz_url I Klucz API atrybuty. The wygeneruj obraz metoda dostosowuje wymagania punktu końcowego generowania obrazu. Generuje N Adresy URL korzystające z monitu w języku naturalnym, w zależności od Liczba obrazów wartość.

Jednakże, self.image_url wyodrębnia wygenerowane adresy URL obrazów z odpowiedzi JSON do listy za pomocą pętli for w zrozumieniu listy.

Dane wyjściowe wyglądają następująco:

Wreszcie, pobierzObraz metoda pobiera każdy obraz, żądając wygenerowanych adresów. Ta metoda akceptuje N liczbę nazw, które chcesz nadać każdemu obrazowi.

Edytowanie obrazów za pomocą API OpenAI

Punkt końcowy edycji umożliwia edycję istniejącego obrazu na podstawie szablonu maski. Maska jest w formacie RGBA z przezroczystym obszarem z adnotacjami i musi mieć taki sam rozmiar jak obraz, który chcesz edytować.

Po dostarczeniu maski punkt końcowy edycji zastępuje zamaskowany obszar nowym monitem w istniejącym obrazie, aby utworzyć nowy. Dodaj następujące metody do powyższej poprzedniej klasy:

klasaImageGenerator:
pok__w tym__(samego siebie, ...):
...

pokkonwertuj obraz(ja, maskaNazwa):
obraz = obraz. otwórz ("{}.png".format (nazwa maski))
rgba_image = image.convert(„RGB”)
rgba_image.save("{}.png".format (nazwa maski))

powrót rgba_image


pokEdytuj obraz(self, imageName, maskName, ImageCount, ImageSize, Prompt) -> ul:
self.convertImage (nazwa maski)
odpowiedź = otwórz. Image.create_edit(
obraz = otwórz("{}.png".format (nazwa obrazu), "rb"),
maska ​​= otwórz("{}.png".format (nazwa maski), "rb"),
zachęta = zachęta,
n = liczba obrazów,
rozmiar = rozmiar obrazu,
)
self.image_url = odpowiedź['dane']
self.image_url = [obraz [„URL”] Do obraz W self.image_url]

drukuj (self.image_url)
powrót self.image_url

# Edytuj istniejący obraz:
imageGen.editImage(
nazwa obrazu = "Zwierząt",
nazwa maski = "maska",
Liczba obrazów = 1,
Rozmiar obrazu = „1024x1024”,
Monit = „Orzeł stojący na brzegu rzeki pijący wodę z wielką górą”
)

# Pobierz edytowany obraz:
imageGen.downloadImage (nazwy=[
„Nowe zwierzęta”,
])

The konwertuj obraz metoda konwertuje obraz maski do formatu RGBA. Możesz to osiągnąć za pomocą konwertować metoda z pakietu poduszka Pythona (zaimportowana jako PIL).

Po przekonwertowaniu zapisuje nową maskę jako zastąpienie istniejącej. Zatem konwersja obrazu jest pierwszym zadaniem metody edycji (Edytuj obraz) wykonuje.

The obraz odczytuje obraz docelowy z istniejącego pliku, podczas gdy maska odczytuje przekonwertowany obraz maski, który musi mieć przezroczysty obszar.

Możesz zaznaczyć przezroczysty obszar w masce za pomocą oprogramowanie do edycji zdjęć jak Gimp czy Photoshop.

Na przykład obraz, który chcemy edytować za pomocą monitu w powyższym kodzie, to:

Załóżmy teraz, że chcesz zamienić antylopę stojącą nad brzegiem rzeki na orła, zgodnie z podpowiedzią.

Oto jak wygląda maska:

Ponieważ słowo kluczowe w monicie z powyższego kodu mówi „orzeł stojący na brzegu rzeki”, puste miejsce zostaje wypełnione przez orła, zastępując antylopę, która tam była wcześniej.

Oto nowy obraz w tym przypadku:

Możesz spróbować pobawić się punktem końcowym edycji obrazu, używając innych zdjęć.

Generowanie odmian obrazu w Pythonie przy użyciu API OpenAI

Punkt końcowy odmiany generuje alternatywne obrazy z istniejącego obrazu. Rozwiń dalej klasę generatora obrazów, dodając metodę wariacji obrazu, jak pokazano poniżej:

klasaImageGenerator:
pok__w tym__(samego siebie) -> ul:
...

pokOdmiany obrazu(self, ImageName, VariationCount, ImageSize):
odpowiedź = otwórz. Image.create_variation(
obraz = otwórz("{}.png"format (nazwa obrazu), "rb"),
n = liczba odmian,
rozmiar = rozmiar obrazu
)

self.image_url = odpowiedź['dane']

self.image_url = [obraz [„URL”] Do obraz W self.image_url]
drukuj (self.image_url)
powrót self.image_url

# Utwórz instancję klasy
ImageGen = ImageGenerator()

# Generuj wariacje dla istniejącego obrazu
imageGen.imageVariations(
Nazwa obrazu = „Nowe_zwierzęta”,
Liczba odmian = 2,
Rozmiar obrazu = „1024x1024”
)

# Pobierz odmiany
imageGen.downloadImage (nazwy=[
„Odmiana 1”,
„Odmiana 2”,
]
)

Powyższy kod generuje wariacje obrazu.

Wykorzystaj OpenAI na swoją korzyść

Chociaż niektórzy ludzie obawiają się, że sztuczna inteligencja może ukraść im pracę, w końcu może to być raj – jeśli nauczysz się ją kontrolować i używać. Ten samouczek dotyczący tworzenia obrazów OpenAI to tylko jeden z wielu przypadków użycia sztucznej inteligencji w prawdziwym świecie. Interfejsy API OpenAI zapewniają przydatne, wstępnie wytrenowane modele, które można łatwo zintegrować ze swoją aplikacją. Możesz więc podjąć wyzwanie i zbudować coś wartościowego z tego samouczka.

Chociaż interfejs API do generowania obrazów jest nadal w fazie beta w chwili pisania tego tekstu, umożliwia już tworzenie wyimaginowanych dzieł sztuki. Mamy nadzieję, że otrzyma dalsze aktualizacje, aby umożliwić skalowanie i akceptację różnych rozmiarów obrazów.