LLMs zinaweza kufanya zaidi ya kuzalisha maandishi. Inawezekana pia kuzalisha picha kutoka kwa maelezo ya maandishi. Kuwa na picha kama njia ya mawasiliano kunaweza kuwa muhimu sana katika maeneo mbalimbali kama MedTech, usanifu, utalii, ukuzaji wa michezo na zaidi. Katika sura hii, tutaangalia mifano miwili maarufu ya uzalishaji wa picha, DALL-E na Midjourney.
Katika somo hili, tutajadili:
- Uzalishaji wa picha na umuhimu wake.
- DALL-E na Midjourney, ni nini na jinsi zinavyofanya kazi.
- Jinsi ya kujenga programu ya uzalishaji wa picha.
Baada ya kukamilisha somo hili, utaweza:
- Kujenga programu ya uzalishaji wa picha.
- Kufafanua mipaka ya programu yako kwa kutumia meta prompts.
- Kufanya kazi na DALL-E na Midjourney.
Programu za uzalishaji wa picha ni njia nzuri ya kuchunguza uwezo wa AI ya Kizazi. Zinaweza kutumika kwa mfano:
-
Uhariri na usanisi wa picha. Unaweza kuzalisha picha kwa matumizi mbalimbali, kama vile uhariri wa picha na usanisi wa picha.
-
Kutumika katika sekta mbalimbali. Pia zinaweza kutumika kuzalisha 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. Wanafunzi wataunda picha kwa ajili ya tathmini zao, picha hizo zitategemea wanafunzi wenyewe, lakini zinaweza kuwa michoro ya hadithi yao ya kubuni au kuunda mhusika mpya kwa hadithi yao au kuwasaidia kuona mawazo na dhana zao.
Hapa kuna mfano wa kile ambacho wanafunzi wa Edu4All wanaweza kuzalisha ikiwa wanashughulika darasani na makaburi:
kwa kutumia prompt kama
"Mbwa karibu na Mnara wa Eiffel asubuhi mapema kwenye mwanga wa jua"
DALL-E na Midjourney ni mifano miwili maarufu ya uzalishaji wa picha, inayokuruhusu kutumia prompts kuzalisha picha.
Tuanze na DALL-E, ambayo ni mfano wa AI ya Kizazi inayozalisha picha kutoka kwa maelezo ya maandishi.
DALL-E ni mchanganyiko wa mifano miwili, CLIP na diffused attention.
-
CLIP, ni mfano unaozalisha embeddings, ambazo ni uwakilishi wa namba wa data, kutoka kwa picha na maandishi.
-
Diffused attention, ni mfano unaozalisha picha kutoka kwa embeddings. DALL-E imefundishwa kwenye seti ya data ya picha na maandishi na inaweza kutumika kuzalisha picha kutoka kwa maelezo ya maandishi. Kwa mfano, DALL-E inaweza kutumika kuzalisha picha ya paka aliyevaa kofia, au mbwa mwenye mohawk.
Midjourney inafanya kazi kwa njia sawa na DALL-E, inazalisha picha kutoka kwa prompts za maandishi. Midjourney, pia inaweza kutumika kuzalisha picha kwa kutumia prompts kama "paka aliyevaa kofia", au "mbwa mwenye mohawk".
Picha kwa hisani ya Wikipedia, picha iliyozalishwa na Midjourney
Kwanza, DALL-E. DALL-E ni mfano wa AI ya Kizazi inayotegemea usanifu wa transformer na autoregressive transformer.
Autoregressive transformer hufafanua jinsi mfano unavyozalisha picha kutoka kwa maelezo ya maandishi, inazalisha pikseli moja kwa wakati, kisha hutumia pikseli zilizozalishwa kuzalisha pikseli inayofuata. Inapita kupitia tabaka nyingi kwenye mtandao wa neva, hadi picha ikamilike.
Kwa mchakato huu, DALL-E, inadhibiti sifa, vitu, tabia, na zaidi katika picha inayozalisha. Hata hivyo, DALL-E 2 na 3 zina udhibiti zaidi juu ya picha inayozalishwa.
Kwa hivyo, inachukua nini kujenga programu ya uzalishaji wa picha? Unahitaji maktaba zifuatazo:
- python-dotenv, inashauriwa sana kutumia maktaba hii kuweka siri zako kwenye 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 hivyo, 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 kwenye Azure OpenAI Foundry Portal kwa rasilimali yako katika sehemu ya "Deployments".
-
Kusanya maktaba zilizo hapo juu kwenye 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 kwenye 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 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, tunazalisha 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 iliyozalishwa. 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 unaozalisha 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 kuzalisha picha. Katika kesi hii, tunatumia prompt "Sungura juu ya farasi, akiwa na pipi, kwenye uwanda wenye ukungu ambapo maua ya daffodils yanakua".
- size, ni ukubwa wa picha inayozalishwa. Katika kesi hii, tunazalisha picha yenye ukubwa wa pikseli 1024x1024.
- n, ni idadi ya picha zinazozalishwa. Katika kesi hii, tunazalisha picha mbili.
- temperature, ni kigezo 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 msingi ni 0.7.
Kuna mambo zaidi unayoweza kufanya na picha ambayo tutajadili katika sehemu inayofuata.
Umeona hadi sasa jinsi tulivyoweza kuzalisha picha kwa mistari michache ya Python. Hata hivyo, kuna mambo zaidi unayoweza kufanya na picha.
Pia unaweza 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 haiungwi mkono katika DALL-E 3.
Hapa kuna mfano kwa 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 sebule tu na bwawa lakini picha ya mwisho ingekuwa na flamingo:
-
Kuunda tofauti. Wazo ni kwamba unachukua picha iliyopo na kuomba kwamba tofauti zitengenezwe. 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 kigezo 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 msingi ni 0.7.
Hebu tuangalie mfano wa jinsi temperature inavyofanya kazi, kwa kuendesha prompt hii mara mbili:
Prompt : "Sungura juu ya farasi, akiwa na pipi, kwenye uwanda wenye ukungu ambapo maua ya daffodils yanakua"
Sasa hebu tuendeshe prompt hiyo hiyo ili kuona kwamba hatutapata picha sawa mara mbili:
Kama unavyoona, picha zinafanana, lakini si sawa. Hebu tujaribu kubadilisha thamani ya temperature hadi 0.1 na kuona 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 tujaribu kufanya majibu yawe ya uhakika zaidi. Tunaweza kuona kutoka kwa picha mbili tulizozalisha 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 hadi 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, tayari tunaweza kuzalisha picha kwa wateja wetu. Hata hivyo, tunahitaji kuunda mipaka fulani kwa programu yetu.
Kwa mfano, hatutaki kuzalisha picha ambazo si salama kwa kazi, au ambazo si sahihi kwa watoto.
Tunaweza kufanya hivi kwa kutumia 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 zinazozalishwa ni salama kwa kazi, au sahihi kwa watoto.
Sasa, metaprompts hufanyaje kazi?
Metaprompts ni prompts za maandishi zinazotumika kudhibiti matokeo ya mfano wa AI ya Kizazi, zinawekwa kabla ya prompt ya maandishi, na hutumika kudhibiti matokeo ya mfano na kuingizwa kwenye programu kudhibiti matokeo ya mfano. Zinajumuisha pembejeo ya prompt na pembejeo ya metaprompt 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 zinazoundwa zinazingatia metaprompt.
Tulianzisha Edu4All mwanzoni mwa somo hili. Sasa ni wakati wa kuwawezesha wanafunzi kuzalisha picha kwa ajili ya tathmini zao.
Wanafunzi wataunda picha kwa ajili ya tathmini zao zinazohusiana na makaburi, ni makaburi gani hasa yatategemea wanafunzi. 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 awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, inashauriwa kutumia huduma ya tafsiri ya kibinadamu ya kitaalamu. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii.








