Värvige pilte stabiilse difusiooniga, kasutades Amazon SageMaker JumpStart

Värvige pilte stabiilse difusiooniga, kasutades Amazon SageMaker JumpStart

Novembris 2022, meie teatas millega AWS-i kliendid saavad tekstist pilte luua Stabiilne difusioon kasutavad mudelid Amazon SageMaker JumpStart. Täna tutvustame rõõmuga uut funktsiooni, mis võimaldab kasutajatel Stable Diffusion mudelitega pilte maalida. Maalimine viitab protsessile, mille käigus asendatakse kujutise osa tekstilise viipa alusel teise kujutisega. Esitades algse kujutise, maski kujutise, mis kirjeldab asendatavat osa, ja tekstiviipa, saab stabiilse hajutuse mudel luua uue kujutise, mis asendab maskeeritud ala tekstiviips kirjeldatud objekti, subjekti või keskkonnaga.

Maalimist saate kasutada halvenenud piltide taastamiseks või uute piltide loomiseks teatud jaotistes uudsete teemade või stiilidega. Arhitektuurse projekteerimise valdkonnas saab Stabiilse difusiooni värvimist kasutada hooneplaanide mittetäielike või kahjustatud piirkondade parandamiseks, pakkudes ehitusmeeskondadele täpset teavet. Kliinilise MRI pildistamise korral tuleb patsiendi pea kinni hoida, mis võib anda kehvemaid tulemusi, kuna kärpimisartefakt põhjustab andmete kadu või vähendab diagnostilist täpsust. Kujutise maalimine võib neid ebaoptimaalseid tulemusi tõhusalt leevendada.

Selles postituses tutvustame põhjalikku juhendit järelduste juurutamise ja käitamise kohta, kasutades Stable Diffusion inpainting mudelit kahel viisil: JumpStarti kasutajaliidese (UI) kaudu Amazon SageMaker Studio, ja programmiliselt läbi KiirStardi API-d saadaval SageMaker Python SDK.

Lahenduse ülevaade

Järgmised pildid on maalimise näited. Originaalkujutised on vasakul, maski kujutis on keskel ja mudeli genereeritud maalitud pilt on paremal. Esimese näite puhul esitati modellile originaalkujutis, maski kujutis ja tekstiviipa „valge kass, sinised silmad, kampsun seljas, lamab pargis“ ning negatiivne viipa „halvasti joonistatud jalad. ” Teise näite puhul oli tekstiviip: "Naismodell esitleb graatsiliselt vaba vabaaja pikka kleiti, milles on segu roosadest ja sinistest toonidest."

Värvige pilte stabiilse difusiooniga, kasutades Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence'i. Vertikaalne otsing. Ai.

Suurte mudelite (nt Stable Diffusion) käitamiseks on vaja kohandatud järeldusskripte. Skripti, mudeli ja soovitud eksemplari tõhusa koostöö tagamiseks peate läbima täielikud testid. JumpStart lihtsustab seda protsessi, pakkudes kasutusvalmis skripte, mida on tugevalt testitud. Nendele skriptidele pääsete juurde ühe klõpsuga Studio kasutajaliidese kaudu või väga väheste koodiridade abil KiirStardi API-d.

Järgmised jaotised juhendavad teid mudeli juurutamisel ja järelduste tegemisel Studio kasutajaliidese või JumpStart API-de abil.

Pange tähele, et seda mudelit kasutades nõustute CreativeML Open RAIL++-M litsents.

JumpStartile pääsete juurde Studio kasutajaliidese kaudu

Selles jaotises illustreerime JumpStart mudelite juurutamist Studio kasutajaliidese abil. Kaasasolev video demonstreerib eelkoolitatud Stable Diffusion värvimismudeli leidmist JumpStartis ja selle kasutuselevõttu. Mudeli leht pakub olulist teavet mudeli ja selle kasutamise kohta. Järelduste tegemiseks kasutame ml.p3.2xlarge eksemplari tüüpi, mis tagab madala latentsusajaga järelduste tegemiseks vajaliku GPU kiirenduse taskukohase hinnaga. Kui SageMakeri hostieksemplar on konfigureeritud, valige juurutada. Lõpp-punkt on töökorras ja valmis käsitlema järeldustaotlusi ligikaudu 10 minuti jooksul.

JumpStart pakub näidismärkmikku, mis võib aidata kiirendada aega, mis kulub vastloodud lõpp-punkti kohta järelduste tegemiseks. Märkmikule Studios juurdepääsuks valige Avage märkmik aasta Kasutage Studio Endpointi mudeli lõpp-punkti lehe jaotist.

Kasutage KiirStarti programmiliselt koos SageMaker SDK-ga

JumpStart kasutajaliidese kasutamine võimaldab teil eelkoolitatud mudelit interaktiivselt juurutada vaid mõne klõpsuga. Teise võimalusena saate kasutada JumpStarti mudeleid programmiliselt, kasutades SageMaker Python SDK-sse integreeritud API-sid.

Selles jaotises valime JumpStartis sobiva eelkoolitatud mudeli, juurutame selle mudeli SageMakeri lõpp-punkti ja teeme juurutatud lõpp-punkti kohta järeldused, kasutades selleks SageMaker Python SDK-d. Järgmised näited sisaldavad koodilõike. Täieliku koodi juurde pääsemiseks koos kõigi selles esitluses sisalduvate sammudega vaadake jaotist Sissejuhatus KiirStardi pilditöötlusse – stabiilne hajutusega värvimine näidismärkmik.

Rakendage eelkoolitatud mudel

SageMaker kasutab Dockeri konteinereid erinevate ehitus- ja käitusülesannete jaoks. KiirStart kasutab SageMakeri süvaõppekonteinerid (DLC-d), mis on raamistikuspetsiifilised. Esmalt hangime kõik lisapaketid, samuti skriptid, et käsitleda valitud ülesande koolitust ja järeldusi. Seejärel tuuakse eelnevalt väljaõppinud mudeliartefaktid eraldi model_uris, mis pakub platvormile paindlikkust. See võimaldab ühe järeldusskriptiga kasutada mitut eelkoolitatud mudelit. Järgmine kood illustreerib seda protsessi:

model_id, model_version = "model-inpainting-stabilityai-stable-diffusion-2-inpainting-fp16", "*"
# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve( region=None, framework=None, # automatically inferred from model_id image_scope="inference", model_id=model_id, model_version=model_version, instance_type=inference_instance_type,
)
# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="inference") base_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="inference")

Järgmisena pakume need ressursid a SageMakeri mudel eksemplar ja juurutage lõpp-punkt:

# Create the SageMaker model instance
# Create the SageMaker model instance
model = Model( image_uri=deploy_image_uri, source_dir=deploy_source_uri, model_data=base_model_uri, entry_point="inference.py", # entry point file in source_dir and present in deploy_source_uri role=aws_role, predictor_cls=Predictor, name=endpoint_name,
) # deploy the Model - note that we need to pass the Predictor class when we deploy the model through the Model class,
# in order to run inference through the SageMaker API
base_model_predictor = model.deploy( initial_instance_count=1, instance_type=inference_instance_type, predictor_cls=Predictor, endpoint_name=endpoint_name,
)

Pärast mudeli kasutuselevõttu saame sellest saada reaalajas prognoose!

Sisend

Sisend on põhikujutis, maski kujutis ja viip, mis kirjeldab maskeeritud osas asendatavat objekti, objekti või keskkonda. Täiusliku maskipildi loomine maalisiseste efektide jaoks hõlmab mitmeid parimaid tavasid. Alustage konkreetse viipaga ja ärge kartke katsetada soovitud tulemuste saavutamiseks erinevaid stabiilse difusiooni seadistusi. Kasutage maskipilti, mis sarnaneb väga pildile, mida soovite maalida. See lähenemine aitab maalimisalgoritmil täita pildi puuduvad osad, mille tulemuseks on loomulikum välimus. Kvaliteetsed pildid annavad üldiselt paremaid tulemusi, seega veenduge, et teie põhi- ja maskipildid oleksid hea kvaliteediga ja üksteisega sarnased. Lisaks valige detailide säilitamiseks ja artefaktide minimeerimiseks suur ja sujuv mask.

Lõpp-punkt aktsepteerib põhikujutist ja maski töötlemata RGB väärtustena või base64 kodeeritud kujutisena. Järelduskäsitleja dekodeerib pildi selle põhjal content_type:

  • eest content_type = “application/json”, peab sisendkoormus olema JSON-sõnastik RGB töötlemata väärtuste, tekstiviipa ja muude valikuliste parameetritega
  • eest content_type = “application/json;jpeg”, peab sisendkoormus olema JSON-sõnastik base64 kodeeritud pildi, tekstiviipa ja muude valikuliste parameetritega

Väljund

Lõpp-punkt võib genereerida kahte tüüpi väljundit: Base64-kodeeritud RGB-kujutise või loodud piltide JSON-sõnastiku. Saate määrata, millist väljundvormingut soovite, määrates accept päis "application/json" or "application/json;jpeg" vastavalt JPEG-pildi või base64 jaoks.

  • eest accept = “application/json”, tagastab lõpp-punkt pildi RGB-väärtustega JSON-sõnastiku
  • eest accept = “application/json;jpeg”, tagastab lõpp-punkt JSON-sõnastiku, mille JPEG-kujutis on base64.b64-kodeeringuga kodeeritud baitidena

Pange tähele, et RGB töötlemata väärtustega kasuliku koormuse saatmine või vastuvõtmine võib jõuda sisendkoormuse ja vastuse suuruse vaikepiiranguteni. Seetõttu soovitame seadistustega kasutada base64 kodeeritud pilti content_type = “application/json;jpeg” ja aktsepteeri = "rakendus/json;jpeg".

Järgmine kood on järeldustaotluse näide:

content_type = "application/json;jpeg" with open(input_img_file_name, "rb") as f: input_img_image_bytes = f.read()
with open(input_img_mask_file_name, "rb") as f: input_img_mask_image_bytes = f.read() encoded_input_image = base64.b64encode(bytearray(input_img_image_bytes)).decode()
encoded_mask = base64.b64encode(bytearray(input_img_mask_image_bytes)).decode() payload = { "prompt": "a white cat, blue eyes, wearing a sweater, lying in park", "image": encoded_input_image, "mask_image": encoded_mask, "num_inference_steps": 50, "guidance_scale": 7.5, "seed": 0, "negative_prompt": "poorly drawn feet",
} accept = "application/json;jpeg" def query(model_predictor, payload, content_type, accept): """Query the model predictor.""" query_response = model_predictor.predict( payload, { "ContentType": content_type, "Accept": accept, }, ) return query_response query_response = query(model_predictor, json.dumps(payload).encode("utf-8"), content_type, accept)
generated_images = parse_response(query_response)

Toetatud parameetrid

Stabiilse difusiooniga värvimismudelid toetavad kujutiste genereerimiseks paljusid parameetreid:

  • pilt – Algne pilt.
  • mask – Pilt, kus pimendatud osa jääb kujutise genereerimise ajal muutumatuks ja valge osa asendatakse.
  • kiire – Viip pildi loomise juhendamiseks. See võib olla string või stringide loend.
  • num_inference_steps (valikuline) – müra vähendamise sammude arv kujutise genereerimisel. Rohkem samme viib kvaliteetsema pildini. Kui see on määratud, peab see olema positiivne täisarv. Pange tähele, et rohkem järeldusetappe viib pikema reageerimisajani.
  • guidance_scale (valikuline) – Kõrgema juhtimisskaala tulemuseks on kujutise, mis on viipaga tihedamalt seotud, pildikvaliteedi arvelt. Kui see on määratud, peab see olema ujuk. guidance_scale<=1 ignoreeritakse.
  • negatiivne_prompt (valikuline) – See juhib kujutise genereerimist selle viipa vastu. Kui see on määratud, peab see olema string või stringide loend ja seda tuleb kasutada koos guidance_scale. Kui guidance_scale on keelatud, on ka see keelatud. Veelgi enam, kui viip on stringide loend, siis negative_prompt peab olema ka stringide loend.
  • seeme (valikuline) – See fikseerib reprodutseeritavuse jaoks randomiseeritud oleku. Kui see on määratud, peab see olema täisarv. Kui kasutate sama viipa sama seemnega, on tulemuseks olev pilt alati sama.
  • partii_suurus (valikuline) – ühe edasikäiguga genereeritavate piltide arv. Kui kasutate väiksemat eksemplari või loote palju pilte, vähendage batch_size olema väike arv (1–2). Piltide arv = viipade arv*num_images_per_prompt.

Piirangud ja eelarvamused

Kuigi Stable Diffusionil on maalimisel muljetavaldav jõudlus, on sellel mitmeid piiranguid ja eelarvamusi. Nende hulka kuuluvad, kuid mitte ainult:

  • Mudel ei pruugi luua täpseid nägusid või jäsemeid, kuna treeninguandmed ei sisalda nende funktsioonidega piisavalt pilte.
  • Modell on koolitatud LAION-5B andmestik, millel on täiskasvanutele mõeldud sisu ja mis ei pruugi ilma täiendavate kaalutlusteta sobida toote kasutamiseks.
  • Mudel ei pruugi hästi töötada muude kui inglise keeltega, kuna mudelit õpetati ingliskeelse tekstiga.
  • Mudel ei saa luua piltide sees head teksti.
  • Stabiilne difusioonvärvimine töötab tavaliselt kõige paremini madalama eraldusvõimega piltidega, näiteks 256 × 256 või 512 × 512 pikslit. Kõrge eraldusvõimega piltidega (768 × 768 või rohkem) töötades võib meetodil olla raskusi soovitud kvaliteedi ja detailide säilitamisega.
  • Kuigi seemne kasutamine võib aidata kontrollida reprodutseeritavust, võib stabiilne difusioonvärvimine anda siiski erinevaid tulemusi sisendi või parameetrite kergete muudatustega. See võib muuta väljundi täpseks häälestamise konkreetsete nõuete jaoks keeruliseks.
  • Meetod võib olla raskustes keerukate tekstuuride ja mustrite loomisega, eriti kui need hõlmavad suuri alasid pildis või on olulised maalitud piirkonna üldise sidususe ja kvaliteedi säilitamiseks.

Lisateavet piirangute ja eelarvamuste kohta leiate jaotisest Stable Diffusion Inpainting mudelikaart.

Viipa kaudu genereeritud maskiga värvimislahendus

CLIPSeq on täiustatud süvaõppetehnika, mis kasutab sisendpiltidest maskide genereerimiseks eelkoolitatud CLIP-mudelite võimsust. See lähenemine pakub tõhusat viisi maskide loomiseks selliste ülesannete jaoks nagu pildi segmenteerimine, maalimine ja manipuleerimine. CLIPSeq kasutab CLIP-i sisendpildi tekstikirjelduse genereerimiseks. Seejärel kasutatakse tekstikirjeldust maski genereerimiseks, mis tuvastab pildi pikslid, mis on tekstikirjelduse jaoks asjakohased. Seejärel saab maski kasutada pildi vastavate osade eraldamiseks edasiseks töötlemiseks.

CLIPSeqil on sisendpiltidest maskide genereerimiseks teiste meetodite ees mitmeid eeliseid. Esiteks on see tõhusam meetod, kuna see ei nõua kujutise töötlemist eraldi pildi segmenteerimisalgoritmiga. Teiseks on see täpsem, kuna see võib luua maske, mis on pildi tekstikirjeldusega paremini kooskõlas. Kolmandaks on see mitmekülgsem, kuna saate selle abil luua maske mitmesugustest piltidest.

CLIPSeqil on aga ka mõningaid puudusi. Esiteks võib tehnikal olla teema osas piiranguid, kuna see tugineb eelkoolitatud CLIP-mudelitele, mis ei pruugi hõlmata konkreetseid valdkondi või eriteadmiste valdkondi. Teiseks võib see olla tundlik meetod, kuna see võib pildi tekstikirjelduses esineda vigu.

Lisateavet leiate aadressilt Virtuaalne moekujundus koos generatiivse tehisintellektiga Amazon SageMakeri abil.

Koristage

Kui olete märkmiku käitamise lõpetanud, kustutage kindlasti kõik protsessi käigus loodud ressursid, et tagada arveldamise peatamine. Lõpp-punkti puhastamise kood on saadaval seotud jaotises märkmik.

Järeldus

Selles postituses näitasime, kuidas JumpStarti abil juurutada eelkoolitatud stabiilse difusiooni värvimismudelit. Näitasime selles postituses koodilõike – täielik kood koos kõigi selle demo sammudega on saadaval aadressil JumpStarti sissejuhatus – parandage pildikvaliteeti juhiste järgi näidismärkmik. Proovige lahendust ise ja saatke meile oma kommentaarid.

Mudeli ja selle toimimise kohta lisateabe saamiseks vaadake järgmisi ressursse.

JumpStarti kohta lisateabe saamiseks vaadake järgmisi postitusi:


Autoritest

Värvige pilte stabiilse difusiooniga, kasutades Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence'i. Vertikaalne otsing. Ai.Dr Vivek Madan on Amazon SageMaker JumpStart meeskonna rakendusteadlane. Ta sai doktorikraadi Illinoisi ülikoolist Urbana-Champaignis ja oli Georgia Techi järeldoktor. Ta on aktiivne masinõppe ja algoritmide kujundamise uurija ning avaldanud ettekandeid EMNLP, ICLR, COLT, FOCS ja SODA konverentsidel.

Värvige pilte stabiilse difusiooniga, kasutades Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence'i. Vertikaalne otsing. Ai.Alfred Shen on AWSi AI/ML vanemspetsialist. Ta on töötanud Silicon Valleys, olles tehnilistel ja juhtivatel kohtadel erinevates sektorites, sealhulgas tervishoid, rahandus ja kõrgtehnoloogia. Ta on pühendunud rakendusliku AI/ML-uurija, kes keskendub CV-le, NLP-le ja multimodaalsusele. Tema tööd on tutvustatud sellistes väljaannetes nagu EMNLP, ICLR ja Public Health.

Ajatempel:

Veel alates AWS-i masinõpe