Python kullanarak görüntüler oluşturmak için OpenAI'nin DALL·E 2 modelini kullanın.

Daha önce ChatGPT kullandıysanız, sezgisine tanık olmuşsunuzdur. OpenAI'nin API'leri ile kod oluşturma, metin tamamlama, metin karşılaştırma, model eğitimi ve görüntü oluşturma, geliştiricilerin uygulamaları keşfetmesi ve uygulamalara entegre etmesi için çantada.

Bu eğitimde, doğal dil istemlerini kullanarak görüntüleri oluşturmak, düzenlemek ve çeşitlendirmek için OpenAI'nin API'sini Python ile nasıl kullanacağınızı öğreneceksiniz.

Python Kullanarak OpenAI'ye Başlarken

Bu eğitime başlamadan önce birkaç şey ayarlamanız gerekir. Öncelikle, bilgisayarınıza Python'un en son sürümünü yüklediğinizden emin olun. Ubuntu gibi bir Linux dağıtımı kullanıyorsanız, görmek isteyebilirsiniz. Ubuntu'da Python nasıl kurulur?.

Projeniz için yeni bir klasör oluşturun ve komut satırınızı proje dizininize açın.

Sırada OpenAI paketi kurulumu var. yüklemeniz gerekiyor yastık görüntü düzenleme uç noktasını kullanırken görüntüleri RGBA'ya dönüştürmek için. Ayrıca yüklemek isteyebilirsiniz

instagram viewer
python-dotenv; bunu gizli anahtarları maskelemek için kullanacaksınız.

oluşturmanızı öneririz. ayrılmış Python sanal ortamı bağımlılıkları izole etmek için.

Bu projede kullanılan kod bir GitHub deposu ve MIT lisansı altında ücretsiz olarak kullanabilirsiniz.

yüklemek için python-dotenv, yastık, Ve Açık paketleri, terminalde aşağıdaki komutu çalıştırın:

pip kurulumu openai python-dotenv yastığı

Şimdi şuraya git OpenAI ve API anahtarınızı almak için panonuza giriş yapın:

  1. Giriş yaptıktan sonra sağ üst kısımdan profil ikonuna tıklayın.
  2. git API Anahtarlarını Görüntüle. API anahtarınız görünmüyorsa tıklayın Yeni gizli anahtar oluştur yeni bir tane oluşturmak için.
  3. Oluşturulan gizli anahtarı kopyalayın ve bilgisayarınızda güvenli bir yere yapıştırın. Güvenlik için proje kök dizininizdeki bir ortam değişken dosyasına yapıştırmak isteyebilirsiniz.

Python'da OpenAI API ile Görüntüler Nasıl Oluşturulur ve Düzenlenir

OpenAI API'nin görüntü oluşturma özelliği, yeni görüntüler oluşturmak, görüntü varyasyonları oluşturmak ve bunları düzenlemek için uç noktalar içerir.

Aşağıdaki bölümlerde, doğal dil istemlerini kullanarak görüntüleri oluşturmak, düzenlemek, ince ayar yapmak ve indirmek için bu uç noktaları keşfedeceksiniz.

OpenAI API'sini Kullanarak Görüntüler Oluşturma

Görüntü oluşturma uç noktası, üç anahtar kelime bağımsız değişkenini kabul eder. Bunlar şunları içerir: çabuk, N, Ve boyut.

bu çabuk anahtar sözcük, oluşturmak istediğiniz görüntüyü açıklayan bir metin dizisidir; N bir API çağrısı sırasında oluşturulacak görüntülerin sayısıdır. bu boyut resmin boyutudur ve resmi açıklamaya göre yazı yazarken yalnızca 256x256, 512x512 ve 1024x1024 pikselleri kabul eder. OpenAI görüntü oluşturma belgeleri.

Aşağıdaki kod, doğal dil istemlerini kullanarak görüntüler oluşturur ve bunların URL'lerini (görüntü adresleri) verir:

içe aktarmak Açık
içe aktarmak işletim sistemi
içe aktarmak istekler
itibaren dotenv içe aktarmak load_dotenv
itibaren PİL içe aktarmak resim
load_dotenv()

sınıfImageGenerator:
kesin__içinde__(kendi) -> dizi:
self.image_url: str
openai.api_key = os.getenv("OPENAI_API_KEY")
öz. APIKey = openai.api_key
self.adı = Hiçbiri

kesinGörüntü oluştur(öz, Bilgi İstemi, ImageCount, ImageSize):
denemek:
öz. API Anahtarı
cevap = açık. resim.create(
istem = İstem,
n = Görüntü Sayısı,
boyut = ResimBoyutu,
)
self.image_url = yanıt['veri']

self.image_url = [resim["url"] için resim içinde self.image_url]
yazdır (self.image_url)
geri dönmek self.image_url
hariç openai.error. Açık AIError gibi e:
yazdır (e.http_status)
yazdır (e.hata)

kesinindirResim(kendisi, isimler)-> Hiçbiri:
denemek:
self.name = isimler
için url içinde self.image_url:
resim = request.get (url)
için isim içinde self.adı:
ile açık("{}.png".format (isim), "wb") gibi F:
f.write (resim.içerik)
hariç:
Yazdır("Bir hata oluştu")
geri dönmek self.ad

# Sınıfı başlat
imageGen = ImageGenerator()

# Görüntüler oluşturun:
imageGen.generateImage(
Bilgi istemi = "Dev aslan, ayı, maymun ve kaplan su şelalesi üzerinde duruyor",
Görüntü Sayısı = 2,
ResimBoyutu = "1024x1024"
)

# Resimleri indirin:
imageGen.downloadImage (isimler=[
"Hayvanlar",
"Hayvanlar2"
])

Yukarıdaki kod bir içerir ImageGenerator ile sınıf resim_url Ve API Anahtarı Öznitellikler. bu Görüntü oluştur yöntem, görüntü oluşturma uç noktasının gereksinimlerini uyarlar. üretir N bağlı olarak doğal dil istemini kullanan URL'ler Görüntü Sayısı değer.

Fakat, self.image_url JSON yanıtından oluşturulan resim URL'lerini bir liste kavrayışındaki for döngüsünü kullanarak bir listeye çıkarır.

Çıktı şöyle görünür:

Son olarak, indirResim yöntem, oluşturulan adresleri isteyerek her görüntüyü indirir. Bu yöntem kabul eder N Her görüntüye vermek istediğiniz ad sayısı.

OpenAI API Kullanarak Görüntüleri Düzenleme

Düzenleme uç noktası, mevcut bir görüntüyü bir maske şablonuna göre düzenlemenize olanak tanır. Maske, açıklamalı, şeffaf bir alana sahip bir RGBA biçimidir ve düzenlemek istediğiniz görüntüyle aynı boyutta olmalıdır.

Bir maske sağladığınızda, düzenleme uç noktası, yeni bir tane oluşturmak için maskelenmiş alanını mevcut görüntüdeki yeni bilgi istemiyle değiştirir. Yukarıdaki önceki sınıfa aşağıdaki yöntemleri ekleyin:

sınıfImageGenerator:
kesin__içinde__(kendisi, ...):
...

kesingörüntü dönüştürmek(kendi, maskeAdı):
resim = Resim.open("{}.png".format (maskeAdı))
rgba_image = resim.dönüştür('RGBA')
rgba_image.save("{}.png".format (maskeAdı))

geri dönmek rgba_image


kesinresmi Düzenle(self, imageName, maskName, ImageCount, ImageSize, Prompt) -> dizi:
self.convertImage (maskeAdı)
cevap = açık. Resim.create_edit(
resim = aç("{}.png".format (görüntüAdı), "rb"),
maske = açık("{}.png".format (maskeAdı), "rb"),
istem = İstem,
n = Görüntü Sayısı,
boyut = ResimBoyutu,
)
self.image_url = yanıt['veri']
self.image_url = [resim["url"] için resim içinde self.image_url]

yazdır (self.image_url)
geri dönmek self.image_url

# Mevcut bir görüntüyü düzenleyin:
imageGen.editImage(
resimAdı = "Hayvanlar",
maskeAdı = "maske",
Görüntü Sayısı = 1,
ResimBoyutu = "1024x1024",
Bilgi istemi = "Büyük bir dağ ile nehir kıyısında duran bir kartal su içiyor"
)

# Düzenlenen resmi indirin:
imageGen.downloadImage (isimler=[
"Yeni Hayvanlar",
])

bu görüntü dönüştürmek yöntem, maske görüntüsünü RGBA formatına dönüştürür. kullanarak bunu başarabilirsiniz. dönüştürmek Python'un yastık paketinden (PIL olarak içe aktarılan) yöntem.

Dönüştürüldükten sonra, yeni maskeyi mevcut maskenin geçersiz kılınması olarak kaydeder. Böylece görüntü dönüştürme, düzenleme yönteminin ilk görevidir (resmi Düzenle) yürütür.

bu resim mevcut bir dosyadan hedef görüntüyü okur, maske şeffaf bir alana sahip olması gereken dönüştürülmüş maske görüntüsünü okur.

kullanarak maskede şeffaf bir alanı işaretleyebilirsiniz. fotoğraf düzenleme yazılımı Gimp veya Photoshop gibi.

Örneğin, yukarıdaki koddaki istemi kullanarak düzenlemek istediğimiz resim:

Şimdi, istemde belirtildiği gibi, nehir kıyısında duran antilopu bir kartalla değiştirmek istediğinizi varsayalım.

İşte maskenin neye benzediği:

Yukarıdaki kod istemindeki anahtar kelime "nehir kıyısında duran bir kartal" dediğinden, boş nokta daha önce orada olan antilopun yerini alan bir kartal tarafından doldurulur.

İşte bu durumda yeni görüntü:

Diğer fotoğrafları kullanarak görüntü düzenleme bitiş noktasıyla oynamayı deneyebilirsiniz.

OpenAI API Kullanarak Python'da Görüntü Varyasyonları Oluşturma

Varyasyon uç noktası, mevcut bir görüntüden alternatif görüntüler oluşturur. Aşağıda gösterildiği gibi bir görüntü varyasyon yöntemi ekleyerek görüntü oluşturucu sınıfını daha da genişletin:

sınıfImageGenerator:
kesin__içinde__(kendi) -> dizi:
...

kesinresim varyasyonları(self, ImageName, VariationCount, ImageSize):
cevap = açık. Resim.create_variation(
resim = aç("{}.png".format (ResimAdı), "rb"),
n = Varyasyon Sayısı,
boyut = ResimBoyutu
)

self.image_url = yanıt['veri']

self.image_url = [resim["url"] için resim içinde self.image_url]
yazdır (self.image_url)
geri dönmek self.image_url

# Sınıfı başlat
imageGen = ImageGenerator()

# Mevcut bir görüntü için varyasyonlar oluşturun
imageGen.imageVariations(
ResimAdı = "Yeni_Hayvanlar",
Varyasyon Sayısı = 2,
ResimBoyutu = "1024x1024"
)

# Varyasyonları indirin
imageGen.downloadImage (isimler=[
"Varyasyon1",
"Varyasyon2",
]
)

Yukarıdaki kod, bir görüntünün varyasyonlarını oluşturur.

OpenAI'yi Kendi Avantajınız İçin Kullanın

Bazı insanlar yapay zekanın işlerini çalabileceğinden korkarken, kontrol etmeyi ve kullanmayı öğrenirseniz, sonuçta bu bir sığınak olabilir. Bu OpenAI görüntü oluşturma eğitimi, yapay zekanın gerçek dünyadaki birçok kullanım durumundan yalnızca biridir. OpenAI API'leri, uygulamanıza kolayca entegre edebileceğiniz, önceden eğitilmiş kullanışlı modeller sağlar. Böylece meydan okumayı üstlenebilir ve bu eğitimden değerli bir şey oluşturabilirsiniz.

Görüntü oluşturma API'si yazıldığı sırada hala beta aşamasında olmasına rağmen, hayali sanat eserleri oluşturmanıza zaten izin veriyor. Umarım, yükseltmeye izin vermek ve değişen görüntü boyutlarını kabul etmek için daha fazla güncelleme alır.