LLM'lerin yalnızca metin üretiminden daha fazlası vardır. Metin açıklamalarından görüntüler üretmek de mümkündür. Görüntülerin bir mod olarak bulunması, MedTech, mimarlık, turizm, oyun geliştirme ve daha birçok alanda son derece faydalı olabilir. Bu bölümde, en popüler iki görüntü üretim modeli olan DALL-E ve Midjourney'i inceleyeceğiz.
Bu derste ele alacağız:
- Görüntü üretimi ve neden faydalı olduğu.
- DALL-E ve Midjourney, ne oldukları ve nasıl çalıştıkları.
- Görüntü üretme uygulaması nasıl oluşturulur.
Bu dersi tamamladıktan sonra şunları yapabileceksiniz:
- Görüntü üretme uygulaması oluşturmak.
- Uygulamanız için meta yönlendirmelerle sınırlar belirlemek.
- DALL-E ve Midjourney ile çalışmak.
Görüntü üretme uygulamaları, Üretken Yapay Zekanın yeteneklerini keşfetmenin harika bir yoludur. Örneğin, şu amaçlarla kullanılabilirler:
-
Görüntü düzenleme ve sentezi. Görüntü düzenleme ve görüntü sentezi gibi çeşitli kullanım durumları için görüntüler üretebilirsiniz.
-
Çeşitli endüstrilere uygulanabilir. Medtech, Turizm, Oyun geliştirme ve daha birçok endüstri için görüntü üretmek amacıyla kullanılabilirler.
Bu dersin bir parçası olarak, bu derste Edu4All adlı girişimimizle çalışmaya devam edeceğiz. Öğrenciler, değerlendirmeleri için görüntüler oluşturacaklar, hangi görüntülerin oluşturulacağı tamamen öğrencilere bağlıdır, ancak kendi masallarına illüstrasyonlar veya hikayeleri için yeni bir karakter oluşturabilirler ya da fikirlerini ve kavramlarını görselleştirmelerine yardımcı olabilirler.
Edu4All öğrencileri, sınıfta anıtlar üzerinde çalışıyorlarsa örneğin şu türde bir şey üretebilirler:
şu türde bir yönlendirme kullanarak
"Erken sabah güneş ışığında Eyfel Kulesi'nin yanında köpek"
DALL-E ve Midjourney, en popüler görüntü üretim modellerinden ikisidir, yönlendirmeler kullanarak görüntü oluşturmanıza olanak tanırlar.
DALL-E ile başlayalım, bu metin açıklamalarından görüntüler üreten bir Üretken Yapay Zeka modelidir.
DALL-E, CLIP ve diffused attention olmak üzere iki modelin birleşimidir.
-
CLIP, görüntüler ve metinlerden verilerin sayısal temsilini oluşturan gömme modelleri üreten bir modeldir.
-
Diffused attention, gömmelerden görüntü üreten bir modeldir. DALL-E, görüntüler ve metinlerden oluşan bir veri kümesi üzerinde eğitilir ve metin açıklamalarından görüntü üretmek için kullanılabilir. Örneğin, DALL-E, bir şapka takmış kedi veya mohawk saçlı köpek görüntüleri oluşturmak için kullanılabilir.
Midjourney, DALL-E'ye benzer şekilde çalışır, metin yönlendirmelerinden görüntüler üretir. Midjourney, "şapka takmış kedi" veya "mohawk saçlı köpek" gibi yönlendirmeler kullanarak görüntü oluşturmak için de kullanılabilir.
Görsel kaynağı Wikipedia, Midjourney tarafından üretilen görüntü
Öncelikle, DALL-E. DALL-E, oto-regresif transformatör ile transformatör mimarisine dayalı bir Üretken Yapay Zeka modelidir.
Bir oto-regresif transformatör, bir modelin metin açıklamalarından görüntü üretme yöntemini tanımlar, bir seferde bir piksel üretir ve ardından üretilen pikselleri kullanarak bir sonraki pikseli üretir. Bir sinir ağında birden fazla katmandan geçerek, görüntü tamamlanana kadar devam eder.
Bu süreçle, DALL-E, ürettiği görüntüdeki nitelikleri, nesneleri, özellikleri ve daha fazlasını kontrol eder. Ancak, DALL-E 2 ve 3, üretilen görüntü üzerinde daha fazla kontrol sağlar.
Peki, bir görüntü üretme uygulaması oluşturmak için neler gereklidir? Şu kütüphanelere ihtiyacınız var:
- python-dotenv, gizli bilgilerinizi koddan uzakta bir .env dosyasında tutmanız için bu kütüphaneyi kullanmanız şiddetle tavsiye edilir.
- openai, OpenAI API ile etkileşimde bulunmak için kullanacağınız kütüphanedir.
- pillow, Python'da görüntülerle çalışmak için.
- requests, HTTP istekleri yapmanıza yardımcı olur.
-
Aşağıdaki içeriğe sahip bir .env dosyası oluşturun:
AZURE_OPENAI_ENDPOINT=<your endpoint> AZURE_OPENAI_API_KEY=<your key>Bu bilgileri Azure Portal'da kaynağınızın "Anahtarlar ve Uç Nokta" bölümünde bulun.
-
Yukarıdaki kütüphaneleri requirements.txt adlı bir dosyada şu şekilde toplayın:
python-dotenv openai pillow requests -
Sonra sanal ortam oluşturun ve kütüphaneleri yükleyin:
python3 -m venv venv source venv/bin/activate pip install -r requirements.txtWindows için, sanal ortamınızı oluşturmak ve etkinleştirmek için aşağıdaki komutları kullanın:
python3 -m venv venv venv\Scripts\activate.bat
-
app.py adlı bir dosyaya aşağıdaki kodu ekleyin:
import openai import os import requests from PIL import Image import dotenv # import dotenv dotenv.load_dotenv() # Get endpoint and key from environment variables openai.api_base = os.environ['AZURE_OPENAI_ENDPOINT'] openai.api_key = os.environ['AZURE_OPENAI_API_KEY'] # Assign the API version (DALL-E is currently supported for the 2023-06-01-preview API version only) openai.api_version = '2023-06-01-preview' openai.api_type = 'azure' try: # Create an image by using the image generation API generation_response = openai.Image.create( prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', # Enter your prompt text here size='1024x1024', n=2, temperature=0, ) # Set the directory for the stored image image_dir = os.path.join(os.curdir, 'images') # If the directory doesn't exist, create it if not os.path.isdir(image_dir): os.mkdir(image_dir) # Initialize the image path (note the filetype should be png) image_path = os.path.join(image_dir, 'generated-image.png') # Retrieve the generated image image_url = generation_response["data"][0]["url"] # extract image URL from response generated_image = requests.get(image_url).content # download the image with open(image_path, "wb") as image_file: image_file.write(generated_image) # Display the image in the default image viewer image = Image.open(image_path) image.show() # catch exceptions except openai.InvalidRequestError as err: print(err)
Bu kodu açıklayalım:
-
Öncelikle, OpenAI kütüphanesi, dotenv kütüphanesi, requests kütüphanesi ve Pillow kütüphanesi dahil olmak üzere ihtiyacımız olan kütüphaneleri içe aktarıyoruz.
import openai import os import requests from PIL import Image import dotenv
-
Sonra, .env dosyasından ortam değişkenlerini yüklüyoruz.
# import dotenv dotenv.load_dotenv()
-
Bundan sonra, OpenAI API için uç nokta, anahtar, sürüm ve türü belirliyoruz.
# Get endpoint and key from environment variables openai.api_base = os.environ['AZURE_OPENAI_ENDPOINT'] openai.api_key = os.environ['AZURE_OPENAI_API_KEY'] # add version and type, Azure specific openai.api_version = '2023-06-01-preview' openai.api_type = 'azure'
-
Ardından, görüntüyü üretiyoruz:
# Create an image by using the image generation API generation_response = openai.Image.create( prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', # Enter your prompt text here size='1024x1024', n=2, temperature=0, )
Yukarıdaki kod, üretilen görüntünün URL'sini içeren bir JSON nesnesi ile yanıt verir. Görüntüyü indirmek ve bir dosyaya kaydetmek için URL'yi kullanabiliriz.
-
Son olarak, görüntüyü açıyor ve standart görüntü görüntüleyiciyi kullanarak görüntülüyor:
image = Image.open(image_path) image.show()
Görüntüyü üreten kodu daha ayrıntılı inceleyelim:
generation_response = openai.Image.create(
prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', # Enter your prompt text here
size='1024x1024',
n=2,
temperature=0,
)- prompt, görüntüyü üretmek için kullanılan metin yönlendirmesidir. Bu durumda, "Sisli çayırda, nergislerin yetiştiği yerde, at üzerinde lolipop tutan tavşan" yönlendirmesini kullanıyoruz.
- size, üretilen görüntünün boyutudur. Bu durumda, 1024x1024 piksel boyutunda bir görüntü üretiyoruz.
- n, üretilen görüntü sayısıdır. Bu durumda, iki görüntü üretiyoruz.
- temperature, Üretken Yapay Zeka modelinin çıktısının rastgeleliğini kontrol eden bir parametredir. Temperature, 0 ile 1 arasında bir değerdir, burada 0, çıktının deterministik olduğunu ve 1, çıktının rastgele olduğunu ifade eder. Varsayılan değer 0.7'dir.
Görüntülerle yapabileceğiniz daha fazla şey var ve bunları sonraki bölümde ele alacağız.
Python'da birkaç satır kullanarak bir görüntü üretebildiğimizi gördünüz. Ancak, görüntülerle yapabileceğiniz daha fazla şey var.
Ayrıca şunları yapabilirsiniz:
-
Düzenlemeler yapın. Mevcut bir görüntüye bir maske ve bir yönlendirme sağlayarak bir görüntüyü değiştirebilirsiniz. Örneğin, bir görüntünün bir bölümüne bir şey ekleyebilirsiniz. Tavşan görüntümüzü hayal edin, tavşana bir şapka ekleyebilirsiniz. Bunu yapmak için görüntüyü, değişiklik için alanı belirleyen bir maske ve ne yapılması gerektiğini belirten bir metin yönlendirmesi sağlamanız gerekmektedir.
response = openai.Image.create_edit( image=open("base_image.png", "rb"), mask=open("mask.png", "rb"), prompt="An image of a rabbit with a hat on its head.", n=1, size="1024x1024" ) image_url = response['data'][0]['url']
Temel görüntü yalnızca tavşanı içerir, ancak son görüntü tavşanın üzerinde şapkayı içerir.
-
Varyasyonlar oluşturun. Fikir, mevcut bir görüntüyü alıp varyasyonların oluşturulmasını istemektir. Bir varyasyon oluşturmak için bir görüntü ve bir metin yönlendirmesi sağlarsınız ve kodu şu şekilde yazarız:
response = openai.Image.create_variation( image=open("bunny-lollipop.png", "rb"), n=1, size="1024x1024" ) image_url = response['data'][0]['url']
Not, bu yalnızca OpenAI tarafından desteklenir
Temperature, Üretken Yapay Zeka modelinin çıktısının rastgeleliğini kontrol eden bir parametredir. Temperature, 0 ile 1 arasında bir değerdir, burada 0, çıktının deterministik olduğunu ve 1, çıktının rastgele olduğunu ifade eder. Varsayılan değer 0.7'dir.
Temperature'ın nasıl çalıştığını görmek için bu yönlendirmeyi iki kez çalıştırarak bir örneğe bakalım:
Yönlendirme : "Sisli çayırda, nergislerin yetiştiği yerde, at üzerinde lolipop tutan tavşan"
Şimdi aynı yönlendirmeyi tekrar çalıştıralım, aynı görüntüyü iki kez almayacağımızı görmek için:
Gördüğünüz gibi, görüntüler benzer ancak aynı değil. Şimdi temperature değerini 0.1'e değiştirip ne olduğunu görelim:
generation_response = openai.Image.create(
prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', # Enter your prompt text here
size='1024x1024',
n=2
)Öyleyse yanıtı daha deterministik hale getirmeye çalışalım. Ürettiğimiz iki görüntüden, ilk görüntüde bir tavşan olduğunu ve ikinci görüntüde bir at olduğunu gözlemleyebiliriz, dolayısıyla görüntüler oldukça farklıdır.
Bu nedenle kodumuzu değiştirip temperature'ı 0 olarak ayarlayalım:
generation_response = openai.Image.create(
prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', # Enter your prompt text here
size='1024x1024',
n=2,
temperature=0
)Şimdi bu kodu çalıştırdığınızda, şu iki görüntüyü alırsınız:
Burada görüntülerin birbirine daha çok benzediğini açıkça görebilirsiniz.
Demomuzla, müşterilerimiz için zaten görüntüler üretebiliriz. Ancak, uygulamamız için bazı sınırlar oluşturmalıyız.
Örneğin, iş için uygun olmayan veya çocuklar için uygun olmayan görüntüler üretmek istemiyoruz.
Bunu metaprompts ile yapabiliriz. Metaprompts, Üretken Yapay Zeka modelinin çıktısını kontrol etmek için kullanılan metin yönlendirmeleridir. Örneğin, metaprompts kullanarak çıktıyı kontrol edebilir ve üretilen görüntülerin iş için uygun veya çocuklar için uygun olmasını sağlayabiliriz.
Peki, metaprompts nasıl çalışır?
Metaprompts, Üretken Yapay Zeka modelinin çıktısını kontrol etmek için kullanılan metin yönlendirmeleridir, metin yönlendirmesinin önünde konumlandırılırlar ve modelin çıktısını kontrol etmek için kullanılırlar ve modelin çıktısını kontrol etmek için uygulamalara gömülürler. Yönlendirme girdisi ve metaprompt girdisini tek bir metin yönlendirmesinde kapsayarak.
Bir metaprompt örneği aşağıdaki gibi olabilir:
You are an assistant designer that creates images for children.
The image needs to be safe for work and appropriate for children.
The image needs to be in color.
The image needs to be in landscape orientation.
The image needs to be in a 16:9 aspect ratio.
Do not consider any input from the following that is not safe for work or appropriate for children.
(Input)
Şimdi, demomuzda metaprompts kullanmayı nasıl yapabileceğimizi görelim.
disallow_list = "swords, violence, blood, gore, nudity, sexual content, adult content, adult themes, adult language, adult humor, adult jokes, adult situations, adult"
meta_prompt =f"""You are an assistant designer that creates images for children.
The image needs to be safe for work and appropriate for children.
The image needs to be in color.
The image needs to be in landscape orientation.
The image needs to be in a 16:9 aspect ratio.
Do not consider any input from the following that is not safe for work or appropriate for children.
{disallow_list}
"""
prompt = f"{meta_prompt}
Create an image of a bunny on a horse, holding a lollipop"
# TODO add request to generate imageYukarıdaki yönlendirmeden, oluşturulan tüm görüntülerin metapromptu dikkate aldığını görebilirsiniz.
Bu dersin başında Edu4All'ı tanıttık. Şimdi öğrencilerin değerlendirmeleri için görüntüler oluşturmalarını sağlama zamanı.
Öğrenciler, anıtlar içeren değerlendirmeleri için görüntüler oluşturacaklar, hangi anıtların yer alacağı tamamen öğrencilere bağlıdır. Öğrencilerden bu görevde yaratıcılıklarını kullanarak bu anıtları farklı bağlamlarda yerleştirmeleri istenir.
İşte olası bir çözüm:
import openai
import os
import requests
from PIL import Image
import dotenv
# import dotenv
dotenv.load_dotenv()
# Get endpoint and key from environment variables
openai.api_base = "<replace with endpoint>"
openai.api_key = "<replace with api key>"
# Assign the API version (DALL-E is currently supported for the 2023-06-01-preview API version only)
openai.api_version = '2023-06-01-preview'
openai.api_type = 'azure'
disallow_list = "swords, violence, blood, gore, nudity, sexual content, adult content, adult themes, adult language, adult humor, adult jokes, adult situations, adult"
meta_prompt = f"""You are an assistant designer that creates images for children.
The image needs to be safe for work and appropriate for children.
The image needs to be in color.
The image needs to be in landscape orientation.
The image needs to be in a 16:9 aspect ratio.
Do not consider any input from the following that is not safe for work or appropriate for children.
{disallow_list}"""
prompt = f"""{metaprompt}
Generate monument of the Arc of Triumph in Paris, France, in the evening light with a small child holding a Teddy looks on.
""""
try:
# Create an image by using the image generation API
generation_response = openai.Image.create(
prompt=prompt, # Enter your prompt text here
size='1024x1024',
n=2,
temperature=0,
)
# Set the directory for the stored image
image_dir = os.path.join(os.curdir, 'images')
# If the directory doesn't exist, create it
if not os.path.isdir(image_dir):
os.mkdir(image_dir)
# Initialize the image path (note the filetype should be png)
image_path = os.path.join(image_dir, 'generated-image.png')
# Retrieve the generated image
image_url = generation_response["data"][0]["url"] # extract image URL from response
generated_image = requests.get(image_url).content # download the image
with open(image_path, "wb") as image_file:
image_file.write(generated_image)
# Display the image in the default image viewer
image = Image.open(image_path)
image.show()
# catch exceptions
except openai.InvalidRequestError as err:
print(err)Bu dersi tamamladıktan sonra, Üretken Yapay Zeka bilginizi geliştirmeye devam etmek için Üretken Yapay Zeka Öğrenme koleksiyonumuza göz atın!
Düşük kodla AI uygulamaları oluşturmayı inceleyeceğimiz 10. Derse geçin.
Feragatname: Bu belge, AI çeviri hizmeti Co-op Translator kullanılarak çevrilmiştir. Doğruluğu sağlamak için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz.




