Festsen be képeket stabil diffúzióval az Amazon SageMaker JumpStart segítségével

Festsen be képeket stabil diffúzióval az Amazon SageMaker JumpStart segítségével

2022 novemberében mi bejelentés amellyel az AWS ügyfelei képeket generálhatnak szövegből Stabil diffúzió használó modellek Amazon SageMaker JumpStart. Izgatottan várjuk, hogy ma bemutathassunk egy új funkciót, amely lehetővé teszi a felhasználók számára, hogy Stable Diffusion modellekkel festhessenek képeket. A befestés azt a folyamatot jelenti, amikor egy kép egy részét egy másik képpel helyettesítik szöveges felszólítás alapján. Az eredeti kép, a cserélendő részt körvonalazó maszkkép és egy szöveges prompt megadásával a Stable Diffusion modell új képet tud előállítani, amely a maszkolt területet a szöveges promptban leírt objektummal, témával vagy környezettel helyettesíti.

A befestést használhatja romlott képek helyreállítására vagy új képek létrehozására bizonyos szakaszokban újszerű témákkal vagy stílusokkal. Az építészeti tervezés területén a Stable Diffusion festés alkalmazható az épület tervrajzainak hiányos vagy sérült területeinek javítására, pontos információkkal szolgálva az építő személyzet számára. Klinikai MRI képalkotás esetén a páciens fejét vissza kell tartani, ami a vágási műtermék adatvesztést vagy a diagnosztikai pontosság csökkenését okozó vágási műtermék miatt gyengébb eredményekhez vezethet. A képfestés hatékonyan segíthet enyhíteni ezeket a szuboptimális eredményeket.

Ebben a bejegyzésben átfogó útmutatót mutatunk be a következtetések telepítéséhez és futtatásához a Stable Diffusion inpainting modell használatával kétféle módon: a JumpStart felhasználói felületén (UI) Amazon SageMaker Studio, és programozottan keresztül JumpStart API-k elérhető a SageMaker Python SDK.

Megoldás áttekintése

A következő képek a festészet példái. Bal oldalon az eredeti képek, középen a maszkkép, jobb oldalon pedig a modell által generált befestett kép látható. Az első példában a modellt ellátták az eredeti képpel, egy maszkképpel és a „fehér macska, kék szemű, pulóverben, parkban fekvő” szöveges prompt, valamint a „rosszul rajzolt láb” negatív prompt. ” A második példában a szöveges felszólítás a következő volt: „Egy női modell kecsesen felmutat egy lezser hosszú ruhát, amelyben rózsaszín és kék árnyalatok keverednek.”

Festsen képeket stabil diffúzióval az Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.

A nagy modellek, például a Stable Diffusion futtatásához egyéni következtetési szkriptekre van szükség. Végpontok közötti teszteket kell futtatnia, hogy megbizonyosodjon arról, hogy a szkript, a modell és a kívánt példány hatékonyan működik együtt. A JumpStart leegyszerűsíti ezt a folyamatot azáltal, hogy használatra kész szkripteket biztosít, amelyeket alaposan teszteltek. Ezeket a szkripteket egy kattintással érheti el a Studio felhasználói felületén, vagy nagyon kevés kódsorral a következőn keresztül JumpStart API-k.

A következő szakaszok végigvezetik a modell telepítésén és a következtetés futtatásán a Studio UI vagy a JumpStart API-k használatával.

Vegye figyelembe, hogy ennek a modellnek a használatával Ön elfogadja a CreativeML Open RAIL++-M licenc.

A JumpStart elérése a Studio felhasználói felületén keresztül

Ebben a részben bemutatjuk a JumpStart modellek telepítését a Studio UI használatával. A mellékelt videó bemutatja az előre betanított Stable Diffusion festési modell megtalálását a JumpStarton és annak telepítését. A modelloldal alapvető információkat tartalmaz a modellről és annak használatáról. A következtetés végrehajtásához az ml.p3.2xlarge példánytípust használjuk, amely megfizethető áron biztosítja a szükséges GPU-gyorsítást az alacsony késleltetésű következtetésekhez. A SageMaker tárhelypéldány konfigurálása után válassza a lehetőséget Telepítése. A végpont működőképes lesz, és körülbelül 10 percen belül készen áll a következtetési kérések kezelésére.

A JumpStart egy mintajegyzetfüzetet biztosít, amely segíthet felgyorsítani az újonnan létrehozott végponton a következtetés lefuttatásához szükséges időt. A jegyzetfüzet Studio alkalmazásban való eléréséhez válassza a lehetőséget Nyissa meg a Jegyzetfüzetet a Használja a Studio végpontját részt a modell végpont oldalán.

A JumpStart programozott használata a SageMaker SDK-val

A JumpStart felhasználói felület segítségével néhány kattintással interaktívan telepíthet egy előre betanított modellt. Alternatív megoldásként használhatja a JumpStart modelleket programozottan a SageMaker Python SDK-ba integrált API-k használatával.

Ebben a szakaszban kiválasztunk egy megfelelő előre betanított modellt a JumpStartban, telepítjük ezt a modellt egy SageMaker-végpontra, és következtetéseket hajtunk végre a telepített végponton, mindezt a SageMaker Python SDK használatával. A következő példák kódrészleteket tartalmaznak. A teljes kód eléréséhez a bemutatóban szereplő összes lépéssel, tekintse meg a Bevezetés a JumpStart képszerkesztésbe – Stable Diffusion Inpainting példafüzet.

Telepítse az előre betanított modellt

A SageMaker Docker-tárolókat használ különféle összeállítási és futásidejű feladatokhoz. A JumpStart a SageMaker Deep Learning tárolók (DLC-k), amelyek keretspecifikusak. Először lekérünk minden további csomagot, valamint szkripteket, amelyekkel kezelhetjük a képzést és a következtetéseket a kiválasztott feladathoz. Ezután az előre betanított modelltermékeket külön lekérik model_uris, amely rugalmasságot biztosít a platform számára. Ez lehetővé teszi több előre betanított modell használatát egyetlen következtetési szkripttel. A következő kód szemlélteti ezt a folyamatot:

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")

Ezután ezeket az erőforrásokat a SageMaker modell példány és telepítsen egy végpontot:

# 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,
)

A modell telepítése után valós idejű előrejelzéseket kaphatunk belőle!

Bemenet

A bemenet az alapkép, egy maszkkép, valamint a helyettesítendő tárgyat, objektumot vagy környezetet leíró prompt a maszkolt részben. A tökéletes maszkkép létrehozása a festményen belüli effektusokhoz több bevált gyakorlatot is magában foglal. Kezdje egy adott utasítással, és ne habozzon kísérletezni a különböző stabil diffúziós beállításokkal a kívánt eredmények elérése érdekében. Használjon olyan maszkképet, amely nagyon hasonlít a befesteni kívánt képhez. Ez a megközelítés segíti a befestési algoritmust a kép hiányzó részeinek kiegészítésében, ami természetesebb megjelenést eredményez. A jó minőségű képek általában jobb eredményt adnak, ezért ügyeljen arra, hogy az alap- és maszkképek jó minőségűek és hasonlítsanak egymásra. Ezenkívül válasszon nagy és sima maszkképet a részletek megőrzése és a műtermékek minimalizálása érdekében.

A végpont az alapképet és a maszkot nyers RGB-értékként vagy base64 kódolású képként fogadja el. A következtetéskezelő az alapján dekódolja a képet content_type:

  • A content_type = “application/json”, a bemeneti hasznos adatnak egy JSON-szótárnak kell lennie a nyers RGB-értékekkel, szöveges prompttal és egyéb opcionális paraméterekkel
  • A content_type = “application/json;jpeg”, a bemeneti hasznos adatnak egy JSON-szótárnak kell lennie base64 kódolású képpel, szöveges prompttal és egyéb opcionális paraméterekkel

teljesítmény

A végpont kétféle kimenetet generálhat: egy Base64-kódolású RGB-képet vagy egy JSON-szótárt az előállított képekből. A kívánt kimeneti formátum beállításával megadhatja accept fejlécet "application/json" or "application/json;jpeg" JPEG képhez vagy base64-hez.

  • A accept = “application/json”, a végpont a JSON-szótárt adja vissza a kép RGB-értékeivel
  • A accept = “application/json;jpeg”, a végpont egy JSON-szótárt ad vissza a JPEG-képpel base64.b64 kódolással kódolt bájtokban

Ne feledje, hogy a nyers RGB-értékekkel történő hasznos adat küldése vagy fogadása elérheti a bemeneti hasznos terhelés és a válaszméret alapértelmezett korlátait. Ezért javasoljuk a base64 kódolású kép használatát beállítással content_type = “application/json;jpeg” és fogadja el = „alkalmazás/json;jpeg”.

A következő kód egy példa következtetési kérés:

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)

Támogatott paraméterek

A stabil diffúziós festési modellek számos paramétert támogatnak a képgeneráláshoz:

  • kép – Az eredeti kép.
  • maszk – Olyan kép, ahol a sötétített rész változatlan marad a kép létrehozása során, és a fehér rész kicserélődik.
  • azonnali – Felszólítás a képalkotáshoz. Ez lehet karakterlánc vagy karakterláncok listája.
  • num_inference_steps (nem kötelező) – A zajcsökkentési lépések száma a képgenerálás során. Több lépés jobb minőségű képhez vezet. Ha meg van adva, pozitív egész számnak kell lennie. Vegye figyelembe, hogy több következtetési lépés hosszabb válaszidőt eredményez.
  • guidance_scale (nem kötelező) – A magasabb útmutatási skála azt eredményezi, hogy a kép szorosabban kapcsolódik a felszólításhoz, a képminőség rovására. Ha meg van adva, akkor úszónak kell lennie. guidance_scale<=1 figyelmen kívül hagyja.
  • negatív_prompt (nem kötelező) – Ez irányítja a képgenerálást ezzel a felszólítással szemben. Ha meg van adva, akkor karakterláncnak vagy karakterláncok listájának kell lennie, és együtt kell használni guidance_scale. Ha guidance_scale le van tiltva, ez is le van tiltva. Sőt, ha a prompt egy karakterláncok listája, akkor a negative_prompt karakterláncok listájának is kell lennie.
  • mag (opcionális) – Ez rögzíti a véletlenszerű állapotot a reprodukálhatóság érdekében. Ha meg van adva, akkor egész számnak kell lennie. Amikor ugyanazt a promptot ugyanazzal a maggal használja, a kapott kép mindig ugyanaz lesz.
  • batch_size (opcionális) – Az egyetlen előremenetben generálandó képek száma. Ha kisebb példányt használ, vagy sok képet generál, csökkentse batch_size hogy kevés legyen (1–2). A képek száma = az üzenetek száma*num_images_per_prompt.

Korlátozások és elfogultságok

Annak ellenére, hogy a Stable Diffusion lenyűgöző teljesítményt nyújt a festésben, számos korláttól és torzítástól szenved. Ezek közé tartozik, de nem kizárólagosan:

  • Előfordulhat, hogy a modell nem generál pontos arcokat vagy végtagokat, mert a képzési adatok nem tartalmaznak elegendő képet ezekkel a funkciókkal.
  • A modellt a LAION-5B adatkészlet, amely felnőtt tartalommal rendelkezik, és további megfontolások nélkül nem biztos, hogy alkalmas a termék felhasználására.
  • Előfordulhat, hogy a modell nem működik jól a nem angol nyelvekkel, mert a modellt angol nyelvű szövegre tanították.
  • A modell nem tud jó szöveget generálni a képeken belül.
  • A stabil diffúziós befestés általában alacsonyabb felbontású, például 256 × 256 vagy 512 × 512 képpontos képekkel működik a legjobban. Ha nagy felbontású (768 × 768 vagy nagyobb) képekkel dolgozik, előfordulhat, hogy a módszer nehezen tudja fenntartani a kívánt minőségi és részletességi szintet.
  • Bár a mag használata segíthet a reprodukálhatóság szabályozásában, a stabil diffúziós festés mégis változatos eredményeket produkál a bemenet vagy a paraméterek enyhe módosításával. Ez megnehezítheti a kimenet finomhangolását az adott követelményekhez.
  • A módszer nehézségekbe ütközhet a bonyolult textúrák és minták létrehozásával, különösen akkor, ha ezek a képen belül nagy területeket fednek le, vagy elengedhetetlenek a festett terület általános koherenciájának és minőségének megőrzéséhez.

A korlátozásokról és az elfogultságról további információkért tekintse meg a Stable Diffusion Inpainting modellkártya.

Befestési megoldás prompton keresztül generált maszkkal

A CLIPSeq egy fejlett mély tanulási technika, amely az előre betanított CLIP (Contrastive Language-Image Pretraining) modellek erejét használja fel maszkok létrehozására a bemeneti képekből. Ez a megközelítés hatékony módszert biztosít maszkok létrehozására olyan feladatokhoz, mint a képszegmentálás, festés és manipuláció. A CLIPSeq a CLIP-et használja a bemeneti kép szöveges leírásának létrehozásához. A szöveges leírást ezután egy maszk létrehozására használják, amely azonosítja a képen a szöveges leírás szempontjából releváns pixeleket. A maszk ezután felhasználható a kép releváns részeinek elkülönítésére további feldolgozás céljából.

A CLIPSeq számos előnnyel rendelkezik a bemeneti képekből maszkok előállítására szolgáló egyéb módszerekkel szemben. Először is, ez egy hatékonyabb módszer, mivel nem szükséges külön képszegmentáló algoritmussal feldolgozni a képet. Másodszor, pontosabb, mert olyan maszkokat tud létrehozni, amelyek jobban illeszkednek a kép szöveges leírásához. Harmadszor, sokoldalúbb, mert sokféle képből készíthet maszkokat.

A CLIPSeq-nek azonban vannak hátrányai is. Először is, a technikának lehetnek tárgyi korlátai, mivel előre kiképzett CLIP-modellekre támaszkodik, amelyek nem feltétlenül ölelnek fel bizonyos területeket vagy szakterületeket. Másodszor, ez érzékeny módszer lehet, mivel érzékeny a kép szöveges leírásában előforduló hibákra.

További információ: Virtuális divatstílus generatív mesterséges intelligenciával az Amazon SageMaker segítségével.

Tisztítsuk meg

Miután befejezte a jegyzetfüzet futtatását, törölje a folyamat során létrehozott összes erőforrást, hogy biztosítsa a számlázás leállítását. A végpont megtisztításához szükséges kód a kapcsolódó oldalon érhető el jegyzetfüzet.

Következtetés

Ebben a bejegyzésben bemutattuk, hogyan telepíthet egy előre betanított Stable Diffusion festési modellt a JumpStart segítségével. Ebben a bejegyzésben kódrészleteket mutattunk be – a teljes kód a bemutató összes lépésével a következő helyen érhető el: Bevezetés a JumpStart-ba – Javítsa a képminőséget felszólítással példafüzet. Próbálja ki a megoldást saját maga, és küldje el nekünk észrevételeit.

Ha többet szeretne megtudni a modellről és működéséről, tekintse meg a következő forrásokat:

Ha többet szeretne megtudni a JumpStartról, tekintse meg a következő bejegyzéseket:


A szerzőkről

Festsen képeket stabil diffúzióval az Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.Dr. Vivek Madan az Amazon SageMaker JumpStart csapatának alkalmazott tudósa. PhD fokozatát az Illinoisi Egyetemen szerezte, az Urbana-Champaign-ben, és a Georgia Tech posztdoktori kutatója volt. Aktív kutatója a gépi tanulásnak és az algoritmustervezésnek, és publikált előadásokat EMNLP, ICLR, COLT, FOCS és SODA konferenciákon.

Festsen képeket stabil diffúzióval az Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.Alfréd Shen az AWS vezető AI/ML specialistája. A Szilícium-völgyben dolgozott, műszaki és vezetői pozíciókat töltött be különböző ágazatokban, beleértve az egészségügyet, a pénzügyet és a csúcstechnológiát. Elkötelezett alkalmazott AI/ML-kutató, aki a CV-re, az NLP-re és a multimodalitásra koncentrál. Munkásságát olyan kiadványokban mutatták be, mint az EMNLP, az ICLR és a Public Health.

Időbélyeg:

Még több AWS gépi tanulás