Hindi lamang sa pagbuo ng teksto ang kakayahan ng LLMs. Posible rin ang pagbuo ng mga imahe mula sa mga deskripsyon ng teksto. Ang pagkakaroon ng mga imahe bilang modality ay maaaring maging lubos na kapaki-pakinabang sa iba't ibang larangan tulad ng MedTech, arkitektura, turismo, pagbuo ng laro, at marami pang iba. Sa kabanatang ito, tatalakayin natin ang dalawang pinakasikat na modelo ng pagbuo ng imahe, ang DALL-E at Midjourney.
Sa araling ito, tatalakayin natin:
- Ang pagbuo ng imahe at kung bakit ito kapaki-pakinabang.
- Ang DALL-E at Midjourney, kung ano ang mga ito, at paano ito gumagana.
- Paano ka makakagawa ng isang app para sa pagbuo ng imahe.
Pagkatapos makumpleto ang araling ito, magagawa mo ang:
- Gumawa ng isang aplikasyon para sa pagbuo ng imahe.
- Tukuyin ang mga hangganan para sa iyong aplikasyon gamit ang meta prompts.
- Gumamit ng DALL-E at Midjourney.
Ang mga aplikasyon para sa pagbuo ng imahe ay isang mahusay na paraan upang tuklasin ang kakayahan ng Generative AI. Maaari itong magamit, halimbawa:
-
Pag-edit at synthesis ng imahe. Maaari kang bumuo ng mga imahe para sa iba't ibang gamit, tulad ng pag-edit ng imahe at synthesis ng imahe.
-
Maaaring gamitin sa iba't ibang industriya. Maaari rin itong magamit upang bumuo ng mga imahe para sa iba't ibang industriya tulad ng MedTech, Turismo, Pagbuo ng Laro, at marami pang iba.
Bilang bahagi ng araling ito, ipagpapatuloy natin ang pakikipagtulungan sa ating startup, ang Edu4All. Ang mga mag-aaral ay gagawa ng mga imahe para sa kanilang mga pagsusulit. Ang eksaktong imahe ay depende sa mga mag-aaral, ngunit maaari silang gumawa ng mga ilustrasyon para sa kanilang sariling kwento, lumikha ng bagong karakter para sa kanilang kwento, o tulungan silang mailarawan ang kanilang mga ideya at konsepto.
Narito ang maaaring mabuo ng mga mag-aaral ng Edu4All, halimbawa, kung sila ay nagtatrabaho sa klase tungkol sa mga monumento:
gamit ang prompt na:
"Aso sa tabi ng Eiffel Tower sa liwanag ng umaga"
Ang DALL-E at Midjourney ay dalawa sa mga pinakasikat na modelo ng pagbuo ng imahe. Pinapayagan ka nitong gumamit ng mga prompt upang bumuo ng mga imahe.
Simulan natin sa DALL-E, na isang Generative AI model na bumubuo ng mga imahe mula sa mga deskripsyon ng teksto.
Ang DALL-E ay kombinasyon ng dalawang modelo, CLIP at diffused attention.
-
CLIP, ay isang modelo na bumubuo ng embeddings, na mga numerikal na representasyon ng data, mula sa mga imahe at teksto.
-
Diffused attention, ay isang modelo na bumubuo ng mga imahe mula sa embeddings. Ang DALL-E ay sinanay sa dataset ng mga imahe at teksto at maaaring magamit upang bumuo ng mga imahe mula sa mga deskripsyon ng teksto. Halimbawa, maaaring gamitin ang DALL-E upang bumuo ng imahe ng pusa na may sombrero, o aso na may mohawk.
Ang Midjourney ay gumagana sa katulad na paraan sa DALL-E, bumubuo ito ng mga imahe mula sa mga text prompt. Ang Midjourney ay maaari ring magamit upang bumuo ng mga imahe gamit ang mga prompt tulad ng “pusa na may sombrero”, o “aso na may mohawk”.
Credito ng Imahe: Wikipedia, imahe na binuo ng Midjourney
Una, ang DALL-E. Ang DALL-E ay isang Generative AI model na batay sa transformer architecture na may autoregressive transformer.
Ang autoregressive transformer ay tumutukoy kung paano bumubuo ang modelo ng mga imahe mula sa mga deskripsyon ng teksto. Bumubuo ito ng isang pixel sa bawat pagkakataon, at pagkatapos ay ginagamit ang mga nabuo na pixel upang bumuo ng susunod na pixel. Dumadaan ito sa maraming layer sa neural network, hanggang sa makumpleto ang imahe.
Sa prosesong ito, ang DALL-E ay kumokontrol sa mga katangian, mga bagay, mga karakteristika, at iba pa sa imahe na binuo nito. Gayunpaman, ang DALL-E 2 at 3 ay may mas maraming kontrol sa nabuo na imahe.
Ano ang kailangan upang makagawa ng isang aplikasyon para sa pagbuo ng imahe? Kailangan mo ang mga sumusunod na library:
- python-dotenv, lubos na inirerekomenda na gamitin ang library na ito upang itago ang iyong mga lihim sa isang .env file na hiwalay sa code.
- openai, ang library na ito ang gagamitin mo upang makipag-ugnayan sa OpenAI API.
- pillow, upang magtrabaho sa mga imahe gamit ang Python.
- requests, upang makatulong sa paggawa ng mga HTTP request.
Kung hindi pa nagagawa, sundin ang mga tagubilin sa Microsoft Learn page upang gumawa ng Azure OpenAI resource at model. Piliin ang DALL-E 3 bilang modelo.
-
Gumawa ng file na .env na may ganitong nilalaman:
AZURE_OPENAI_ENDPOINT=<your endpoint> AZURE_OPENAI_API_KEY=<your key> AZURE_OPENAI_DEPLOYMENT="dall-e-3"Hanapin ang impormasyong ito sa Azure OpenAI Foundry Portal para sa iyong resource sa seksyong "Deployments".
-
Kolektahin ang mga library sa isang file na tinatawag na requirements.txt tulad nito:
python-dotenv openai pillow requests -
Susunod, gumawa ng virtual environment at i-install ang mga library:
python3 -m venv venv source venv/bin/activate pip install -r requirements.txtPara sa Windows, gamitin ang mga sumusunod na command upang gumawa at i-activate ang iyong virtual environment:
python3 -m venv venv venv\Scripts\activate.bat
-
Idagdag ang sumusunod na code sa file na tinatawag na 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)
Ipaliwanag natin ang code na ito:
-
Una, ini-import natin ang mga library na kailangan natin, kabilang ang OpenAI library, dotenv library, requests library, at Pillow library.
import openai import os import requests from PIL import Image import dotenv
-
Susunod, ina-load natin ang mga environment variable mula sa .env file.
# import dotenv dotenv.load_dotenv()
-
Pagkatapos nito, kino-configure natin ang Azure OpenAI service client.
# 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" )
-
Susunod, bumubuo tayo ng imahe:
# 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'] )
Ang code sa itaas ay tumutugon ng JSON object na naglalaman ng URL ng nabuo na imahe. Maaari nating gamitin ang URL upang i-download ang imahe at i-save ito sa isang file.
-
Sa huli, binubuksan natin ang imahe at ginagamit ang standard image viewer upang ipakita ito:
image = Image.open(image_path) image.show()
Tingnan natin ang code na bumubuo ng imahe nang mas detalyado:
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, ay ang text prompt na ginagamit upang bumuo ng imahe. Sa kasong ito, ginagamit natin ang prompt na "Kuneho sa kabayo, may hawak na lollipop, sa mahamog na parang kung saan tumutubo ang mga daffodil".
- size, ay ang laki ng imahe na nabuo. Sa kasong ito, bumubuo tayo ng imahe na 1024x1024 pixels.
- n, ay ang bilang ng mga imahe na nabuo. Sa kasong ito, bumubuo tayo ng dalawang imahe.
- temperature, ay isang parameter na kumokontrol sa randomness ng output ng Generative AI model. Ang temperature ay isang halaga sa pagitan ng 0 at 1 kung saan ang 0 ay nangangahulugang deterministic ang output at ang 1 ay nangangahulugang random ang output. Ang default na halaga ay 0.7.
May iba pang mga bagay na maaari mong gawin sa mga imahe na tatalakayin natin sa susunod na seksyon.
Nakikita mo na kung paano tayo nakabuo ng imahe gamit ang ilang linya sa Python. Gayunpaman, may iba pang mga bagay na maaari mong gawin sa mga imahe.
Maaari mo ring gawin ang mga sumusunod:
- Mag-edit ng mga imahe. Sa pamamagitan ng pagbibigay ng umiiral na imahe, mask, at prompt, maaari mong baguhin ang isang imahe. Halimbawa, maaari kang magdagdag ng isang bagay sa isang bahagi ng imahe. Isipin ang ating imahe ng kuneho, maaari kang magdagdag ng sombrero sa kuneho. Paano mo ito gagawin ay sa pamamagitan ng pagbibigay ng imahe, mask (pagkilala sa bahagi ng lugar para sa pagbabago) at text prompt upang sabihin kung ano ang dapat gawin.
Tandaan: hindi ito suportado sa DALL-E 3.
Narito ang isang halimbawa gamit ang 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].urlAng base image ay maglalaman lamang ng lounge na may pool ngunit ang final image ay magkakaroon ng flamingo:
-
Gumawa ng mga variation. Ang ideya ay kunin ang umiiral na imahe at hilingin na gumawa ng mga variation. Upang gumawa ng variation, magbigay ng imahe at text prompt at code tulad nito:
response = openai.Image.create_variation( image=open("bunny-lollipop.png", "rb"), n=1, size="1024x1024" ) image_url = response['data'][0]['url']
Tandaan, ito ay suportado lamang sa OpenAI.
Ang temperature ay isang parameter na kumokontrol sa randomness ng output ng Generative AI model. Ang temperature ay isang halaga sa pagitan ng 0 at 1 kung saan ang 0 ay nangangahulugang deterministic ang output at ang 1 ay nangangahulugang random ang output. Ang default na halaga ay 0.7.
Tingnan natin ang isang halimbawa kung paano gumagana ang temperature, sa pamamagitan ng pagtakbo ng prompt na ito nang dalawang beses:
Prompt: "Kuneho sa kabayo, may hawak na lollipop, sa mahamog na parang kung saan tumutubo ang mga daffodil"
Ngayon, ulitin natin ang parehong prompt upang makita na hindi natin makukuha ang parehong imahe nang dalawang beses:
Tulad ng nakikita mo, ang mga imahe ay magkatulad, ngunit hindi pareho. Subukan nating baguhin ang temperature value sa 0.1 at tingnan kung ano ang mangyayari:
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
)Subukan nating gawing mas deterministic ang tugon. Mapapansin natin mula sa dalawang imahe na nabuo na sa unang imahe, may kuneho at sa pangalawang imahe, may kabayo, kaya't ang mga imahe ay lubos na nagkakaiba.
Kaya't baguhin natin ang ating code at itakda ang temperature sa 0, tulad nito:
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
)Ngayon, kapag pinatakbo mo ang code na ito, makakakuha ka ng dalawang imahe:
Dito, malinaw mong makikita kung paano mas magkatulad ang mga imahe.
Sa ating demo, maaari na tayong bumuo ng mga imahe para sa ating mga kliyente. Gayunpaman, kailangan nating magtakda ng ilang hangganan para sa ating aplikasyon.
Halimbawa, ayaw nating bumuo ng mga imahe na hindi ligtas para sa trabaho, o hindi angkop para sa mga bata.
Magagawa natin ito gamit ang metaprompts. Ang metaprompts ay mga text prompt na ginagamit upang kontrolin ang output ng Generative AI model. Halimbawa, maaari nating gamitin ang metaprompts upang kontrolin ang output, at tiyakin na ang mga nabuo na imahe ay ligtas para sa trabaho, o angkop para sa mga bata.
Ngayon, paano gumagana ang meta prompts?
Ang meta prompts ay mga text prompt na ginagamit upang kontrolin ang output ng Generative AI model. Ang mga ito ay inilalagay bago ang text prompt, at ginagamit upang kontrolin ang output ng modelo at naka-embed sa mga aplikasyon upang kontrolin ang output ng modelo. Pinagsasama ang input ng prompt at ang input ng meta prompt sa isang text prompt.
Isang halimbawa ng meta prompt ay ang sumusunod:
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)
Ngayon, tingnan natin kung paano natin magagamit ang meta prompts sa ating demo.
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 imageMula sa prompt sa itaas, makikita mo kung paano isinasaalang-alang ng lahat ng mga imahe na nilikha ang metaprompt.
Ipinakilala natin ang Edu4All sa simula ng araling ito. Ngayon, oras na upang tulungan ang mga mag-aaral na bumuo ng mga imahe para sa kanilang mga pagsusulit.
Ang mga mag-aaral ay gagawa ng mga imahe para sa kanilang mga pagsusulit na naglalaman ng mga monumento. Ang eksaktong mga monumento ay depende sa mga mag-aaral. Ang mga mag-aaral ay hinihikayat na gamitin ang kanilang pagkamalikhain sa gawaing ito upang ilagay ang mga monumento sa iba't ibang konteksto.
Narito ang isang posibleng solusyon:
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)Pagkatapos tapusin ang araling ito, bisitahin ang aming Generative AI Learning collection upang patuloy na paunlarin ang iyong kaalaman sa Generative AI!
Pumunta sa Aralin 10 kung saan tatalakayin natin kung paano bumuo ng mga AI application gamit ang low-code
Paunawa:
Ang dokumentong ito ay isinalin gamit ang AI translation service na Co-op Translator. Bagama't sinisikap naming maging tumpak, mangyaring tandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa kanyang katutubong wika ang dapat ituring na opisyal na sanggunian. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na dulot ng paggamit ng pagsasaling ito.








