Kuna zaidi ya LLMs kuliko kutengeneza maandishi tu. Inawezekana pia kutengeneza picha kutoka kwa maelezo ya maandishi. Kuwa na picha kama njia ya mawasiliano kunaweza kuwa na manufaa makubwa katika maeneo mbalimbali kama MedTech, usanifu, utalii, ukuzaji wa michezo na zaidi. Katika sura hii, tutachunguza mifano miwili maarufu ya kutengeneza picha, DALL-E na Midjourney.
Katika somo hili, tutajadili:
- Utengenezaji wa picha na umuhimu wake.
- DALL-E na Midjourney, ni nini, na jinsi zinavyofanya kazi.
- Jinsi ya kujenga programu ya kutengeneza picha.
Baada ya kukamilisha somo hili, utaweza:
- Kujenga programu ya kutengeneza picha.
- Kufafanua mipaka ya programu yako kwa kutumia meta prompts.
- Kufanya kazi na DALL-E na Midjourney.
Programu za kutengeneza picha ni njia nzuri ya kuchunguza uwezo wa AI ya Kizazi. Zinatumika kwa mfano:
-
Uhariri na muundo wa picha. Unaweza kutengeneza picha kwa matumizi mbalimbali, kama vile uhariri wa picha na muundo wa picha.
-
Kutumika katika sekta mbalimbali. Pia zinaweza kutumika kutengeneza picha kwa sekta mbalimbali kama MedTech, Utalii, ukuzaji wa michezo na zaidi.
Kama sehemu ya somo hili, tutaendelea kufanya kazi na kampuni yetu ya kuanzisha, Edu4All, katika somo hili. Wanafunzi wataunda picha kwa ajili ya tathmini zao, ni picha gani hasa ni juu yao, lakini wanaweza kuwa ni michoro ya hadithi yao ya kufikirika au kuunda tabia mpya kwa hadithi yao au kuwasaidia kuona mawazo na dhana zao.
Hapa kuna mfano wa kile wanafunzi wa Edu4All wanaweza kutengeneza ikiwa wanajifunza darasani kuhusu makaburi:
wakitumia prompt kama
"Mbwa karibu na Mnara wa Eiffel katika mwanga wa asubuhi mapema"
DALL-E na Midjourney ni mifano miwili maarufu ya kutengeneza picha, zinakuruhusu kutumia prompts kutengeneza picha.
Tuanzie na DALL-E, ambayo ni mfano wa AI ya Kizazi inayotengeneza picha kutoka kwa maelezo ya maandishi.
DALL-E ni mchanganyiko wa mifano miwili, CLIP na diffused attention.
-
CLIP, ni mfano unaotengeneza embeddings, ambazo ni uwakilishi wa namba wa data, kutoka kwa picha na maandishi.
-
Diffused attention, ni mfano unaotengeneza picha kutoka kwa embeddings. DALL-E imefundishwa kwa seti ya data ya picha na maandishi na inaweza kutumika kutengeneza picha kutoka kwa maelezo ya maandishi. Kwa mfano, DALL-E inaweza kutumika kutengeneza picha ya paka aliyevaa kofia, au mbwa mwenye mohawk.
Midjourney inafanya kazi kwa njia sawa na DALL-E, inatengeneza picha kutoka kwa prompts za maandishi. Midjourney, pia inaweza kutumika kutengeneza picha kwa kutumia prompts kama “paka aliyevaa kofia”, au “mbwa mwenye mohawk”.
Picha kwa hisani ya Wikipedia, picha iliyotengenezwa na Midjourney
Kwanza, DALL-E. DALL-E ni mfano wa AI ya Kizazi unaotegemea usanifu wa transformer na autoregressive transformer.
Autoregressive transformer hufafanua jinsi mfano unavyotengeneza picha kutoka kwa maelezo ya maandishi, inatengeneza pixel moja kwa wakati, na kisha hutumia pixel zilizotengenezwa kutengeneza pixel inayofuata. Kupitia tabaka nyingi katika mtandao wa neva, hadi picha ikamilike.
Kwa mchakato huu, DALL-E, inadhibiti sifa, vitu, tabia, na zaidi katika picha inayotengeneza. Hata hivyo, DALL-E 2 na 3 zina udhibiti zaidi juu ya picha inayotengenezwa.
Kwa hivyo inachukua nini kujenga programu ya kutengeneza picha? Unahitaji maktaba zifuatazo:
- python-dotenv, inashauriwa sana kutumia maktaba hii kuweka siri zako katika faili ya .env mbali na msimbo.
- openai, maktaba hii ndiyo utatumia kuingiliana na API ya OpenAI.
- pillow, kufanya kazi na picha katika Python.
- requests, kusaidia kufanya maombi ya HTTP.
Ikiwa bado hujafanya, fuata maelekezo kwenye ukurasa wa Microsoft Learn kuunda rasilimali ya Azure OpenAI na mfano. Chagua DALL-E 3 kama mfano.
-
Unda faili .env yenye maudhui yafuatayo:
AZURE_OPENAI_ENDPOINT=<your endpoint> AZURE_OPENAI_API_KEY=<your key> AZURE_OPENAI_DEPLOYMENT="dall-e-3"Tafuta taarifa hii katika Azure OpenAI Foundry Portal kwa rasilimali yako katika sehemu ya "Deployments".
-
Kusanya maktaba zilizo hapo juu katika faili inayoitwa requirements.txt kama ifuatavyo:
python-dotenv openai pillow requests -
Kisha, unda mazingira ya kawaida na usakinishe maktaba:
python3 -m venv venv source venv/bin/activate pip install -r requirements.txtKwa Windows, tumia amri zifuatazo kuunda na kuamsha mazingira yako ya kawaida:
python3 -m venv venv venv\Scripts\activate.bat
-
Ongeza msimbo ufuatao katika faili inayoitwa app.py:
import openai import os import requests from PIL import Image import dotenv from openai import OpenAI, AzureOpenAI # import dotenv dotenv.load_dotenv() # configure Azure OpenAI service client client = AzureOpenAI( azure_endpoint = os.environ["AZURE_OPENAI_ENDPOINT"], api_key=os.environ['AZURE_OPENAI_API_KEY'], api_version = "2024-02-01" ) try: # Create an image by using the image generation API generation_response = client.images.generate( prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', size='1024x1024', n=1, model=os.environ['AZURE_OPENAI_DEPLOYMENT'] ) # 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)
Hebu tueleze msimbo huu:
-
Kwanza, tunaleta maktaba tunazohitaji, ikiwa ni pamoja na maktaba ya OpenAI, maktaba ya dotenv, maktaba ya requests, na maktaba ya Pillow.
import openai import os import requests from PIL import Image import dotenv
-
Kisha, tunapakia vigezo vya mazingira kutoka kwa faili ya .env.
# import dotenv dotenv.load_dotenv()
-
Baada ya hapo, tunasanidi mteja wa huduma ya Azure OpenAI
# Get endpoint and key from environment variables client = AzureOpenAI( azure_endpoint = os.environ["AZURE_OPENAI_ENDPOINT"], api_key=os.environ['AZURE_OPENAI_API_KEY'], api_version = "2024-02-01" )
-
Kisha, tunatengeneza picha:
# Create an image by using the image generation API generation_response = client.images.generate( prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', size='1024x1024', n=1, model=os.environ['AZURE_OPENAI_DEPLOYMENT'] )
Msimbo hapo juu unajibu na kitu cha JSON kinachojumuisha URL ya picha iliyotengenezwa. Tunaweza kutumia URL kupakua picha na kuihifadhi kwenye faili.
-
Mwisho, tunafungua picha na kutumia kionyeshi cha picha cha kawaida kuionyesha:
image = Image.open(image_path) image.show()
Hebu tuangalie msimbo unaotengeneza picha kwa undani zaidi:
generation_response = client.images.generate(
prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils',
size='1024x1024', n=1,
model=os.environ['AZURE_OPENAI_DEPLOYMENT']
)- prompt, ni prompt ya maandishi inayotumika kutengeneza picha. Katika kesi hii, tunatumia prompt "Sungura juu ya farasi, ameshikilia lollipop, kwenye uwanja wa ukungu ambapo maua ya daffodils yanamea".
- size, ni ukubwa wa picha inayotengenezwa. Katika kesi hii, tunatengeneza picha yenye ukubwa wa 1024x1024 pixels.
- n, ni idadi ya picha zinazotengenezwa. Katika kesi hii, tunatengeneza picha mbili.
- temperature, ni kipengele kinachodhibiti nasibu ya matokeo ya mfano wa AI ya Kizazi. Temperature ni thamani kati ya 0 na 1 ambapo 0 inamaanisha kuwa matokeo ni ya uhakika na 1 inamaanisha kuwa matokeo ni ya nasibu. Thamani ya kawaida ni 0.7.
Kuna mambo zaidi unayoweza kufanya na picha ambayo tutajadili katika sehemu inayofuata.
Umeona hadi sasa jinsi tulivyoweza kutengeneza picha kwa mistari michache katika Python. Hata hivyo, kuna mambo zaidi unayoweza kufanya na picha.
Unaweza pia kufanya yafuatayo:
- Kufanya uhariri. Kwa kutoa picha iliyopo, mask na prompt, unaweza kubadilisha picha. Kwa mfano, unaweza kuongeza kitu kwenye sehemu ya picha. Fikiria picha yetu ya sungura, unaweza kuongeza kofia kwa sungura. Jinsi unavyoweza kufanya hivyo ni kwa kutoa picha, mask (inayotambua sehemu ya eneo la mabadiliko) na prompt ya maandishi kusema nini kinapaswa kufanyika.
Kumbuka: hii haijaungwa mkono katika DALL-E 3.
Hapa kuna mfano wa kutumia GPT Image:
response = client.images.edit(
model="gpt-image-1",
image=open("sunlit_lounge.png", "rb"),
mask=open("mask.png", "rb"),
prompt="A sunlit indoor lounge area with a pool containing a flamingo"
)
image_url = response.data[0].urlPicha ya msingi ingekuwa na chumba cha kupumzika na bwawa tu lakini picha ya mwisho ingekuwa na flamingo:
-
Unda tofauti. Wazo ni kwamba unachukua picha iliyopo na kuomba kwamba tofauti zitengezwe. Ili kuunda tofauti, unatoa picha na prompt ya maandishi na msimbo kama ifuatavyo:
response = openai.Image.create_variation( image=open("bunny-lollipop.png", "rb"), n=1, size="1024x1024" ) image_url = response['data'][0]['url']
Kumbuka, hii inaungwa mkono tu kwenye OpenAI
Temperature ni kipengele kinachodhibiti nasibu ya matokeo ya mfano wa AI ya Kizazi. Temperature ni thamani kati ya 0 na 1 ambapo 0 inamaanisha kuwa matokeo ni ya uhakika na 1 inamaanisha kuwa matokeo ni ya nasibu. Thamani ya kawaida ni 0.7.
Hebu tuangalie mfano wa jinsi temperature inavyofanya kazi, kwa kuendesha prompt hii mara mbili:
Prompt : "Sungura juu ya farasi, ameshikilia lollipop, kwenye uwanja wa ukungu ambapo maua ya daffodils yanamea"
Sasa hebu tuendeshe prompt hiyo hiyo ili tuone kwamba hatutapata picha sawa mara mbili:
Kama unavyoona, picha zinafanana, lakini si sawa. Hebu jaribu kubadilisha thamani ya temperature kuwa 0.1 na tuone kinachotokea:
generation_response = client.images.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
)Kwa hivyo hebu jaribu kufanya majibu yawe ya uhakika zaidi. Tunaweza kuona kutoka kwa picha mbili tulizotengeneza kwamba katika picha ya kwanza, kuna sungura na katika picha ya pili, kuna farasi, kwa hivyo picha zinatofautiana sana.
Kwa hivyo hebu tubadilishe msimbo wetu na kuweka temperature kuwa 0, kama ifuatavyo:
generation_response = client.images.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
)Sasa unapokimbia msimbo huu, unapata picha hizi mbili:
Hapa unaweza kuona wazi jinsi picha zinavyofanana zaidi.
Kwa demo yetu, tunaweza tayari kutengeneza picha kwa wateja wetu. Hata hivyo, tunahitaji kuunda mipaka kwa programu yetu.
Kwa mfano, hatutaki kutengeneza picha ambazo si salama kwa kazi, au ambazo si sahihi kwa watoto.
Tunaweza kufanya hivi kwa metaprompts. Metaprompts ni prompts za maandishi zinazotumika kudhibiti matokeo ya mfano wa AI ya Kizazi. Kwa mfano, tunaweza kutumia metaprompts kudhibiti matokeo, na kuhakikisha kwamba picha zinazotengenezwa ni salama kwa kazi, au sahihi kwa watoto.
Sasa, metaprompts zinafanyaje kazi?
Metaprompts ni prompts za maandishi zinazotumika kudhibiti matokeo ya mfano wa AI ya Kizazi, zinapangwa kabla ya prompt ya maandishi, na zinatumika kudhibiti matokeo ya mfano na kuingizwa katika programu kudhibiti matokeo ya mfano. Kuunganisha prompt ya pembejeo na prompt ya meta katika prompt moja ya maandishi.
Mfano mmoja wa metaprompt ungekuwa kama ifuatavyo:
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)
Sasa, hebu tuone jinsi tunavyoweza kutumia metaprompts katika demo yetu.
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 imageKutoka kwa prompt hapo juu, unaweza kuona jinsi picha zote zinazotengenezwa zinazingatia metaprompt.
Tulianzisha Edu4All mwanzoni mwa somo hili. Sasa ni wakati wa kuwawezesha wanafunzi kutengeneza picha kwa tathmini zao.
Wanafunzi wataunda picha kwa tathmini zao zinazohusiana na makaburi, ni makaburi gani hasa ni juu yao. Wanafunzi wanahimizwa kutumia ubunifu wao katika kazi hii kuweka makaburi haya katika muktadha tofauti.
Hapa kuna suluhisho moja linalowezekana:
import openai
import os
import requests
from PIL import Image
import dotenv
from openai import AzureOpenAI
# import dotenv
dotenv.load_dotenv()
# Get endpoint and key from environment variables
client = AzureOpenAI(
azure_endpoint = os.environ["AZURE_OPENAI_ENDPOINT"],
api_key=os.environ['AZURE_OPENAI_API_KEY'],
api_version = "2024-02-01"
)
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}
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 = client.images.generate(
prompt=prompt, # Enter your prompt text here
size='1024x1024',
n=1,
)
# 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.BadRequestError as err:
print(err)Baada ya kumaliza somo hili, angalia Mkusanyiko wa Kujifunza kuhusu AI ya Kizazi ili kuendelea kukuza maarifa yako kuhusu AI ya Kizazi!
Nenda kwenye Somo la 10 ambapo tutachunguza jinsi ya kuunda programu za AI kwa kutumia low-code
Kanusho:
Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI Co-op Translator. Ingawa tunajitahidi kwa usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya kiasili inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii.








