I november 2022, vi meddelade som AWS-kunder kan generera bilder från text med Stabil diffusion modeller i Amazon SageMaker JumpStart. Idag tillkännager vi en ny funktion som låter dig skala upp bilder (ändra storlek på bilder utan att förlora kvalitet) med stabila diffusionsmodeller i JumpStart. En bild som är lågupplöst, suddig och pixlad kan konverteras till en högupplöst bild som ser jämnare, tydligare och mer detaljerad ut. Denna process, kallad uppskalning, kan appliceras på både riktiga bilder och bilder genererade av text-till-bild stabila diffusionsmodeller. Detta kan användas för att förbättra bildkvaliteten i olika branscher som e-handel och fastigheter, såväl som för konstnärer och fotografer. Dessutom kan uppskalning förbättra den visuella kvaliteten på lågupplösta bilder när de visas på högupplösta skärmar.
Stable Diffusion använder en AI-algoritm för att uppskala bilder, vilket eliminerar behovet av manuellt arbete som kan kräva att man manuellt fyller luckor i en bild. Den har tränats på miljontals bilder och kan exakt förutsäga högupplösta bilder, vilket resulterar i en betydande detaljökning jämfört med traditionella bilduppskalare. Dessutom, till skillnad från icke-djupinlärningstekniker som närmaste granne, tar stabil spridning hänsyn till bildens sammanhang, med hjälp av en textuppmaning för att vägleda uppskalningsprocessen.
I det här inlägget ger vi en översikt över hur man distribuerar och kör inferens med uppskalningsmodellen Stable Diffusion på två sätt: via JumpStarts användargränssnitt (UI) i Amazon SageMaker Studio, och programmatiskt igenom JumpStart API:er tillgängligt i SageMaker Python SDK.
Lösningsöversikt
Följande bilder visar exempel på uppskalning utförd av modellen. Till vänster är den ursprungliga lågupplösta bilden förstorad för att matcha storleken på bilden som genereras av modellen. Till höger är bilden som genereras av modellen.
Den första genererade bilden är resultatet av en lågupplöst kattbild och uppmaningen "en vit katt."
Den andra genererade bilden är resultatet av lågupplösta fjärilsbild och prompten "en fjäril på ett grönt blad."
Att köra stora modeller som Stable Diffusion kräver anpassade slutledningsskript. Du måste köra end-to-end-tester för att se till att skriptet, modellen och den önskade instansen fungerar effektivt tillsammans. JumpStart förenklar denna process genom att tillhandahålla färdiga skript som har testats ordentligt. Du kan komma åt dessa skript med ett klick genom Studio UI eller med väldigt få rader kod genom JumpStart API:er.
Följande avsnitt ger en översikt över hur du distribuerar modellen och kör slutledning med antingen Studio UI eller JumpStart API:er.
Observera att genom att använda denna modell godkänner du CreativeML Open RAIL++-M-licens.
Få åtkomst till JumpStart via Studio UI
I det här avsnittet visar vi hur man tränar och distribuerar JumpStart-modeller genom Studio UI. Följande video visar hur du hittar den förtränade Stable Diffusion upscaler-modellen på JumpStart och distribuerar den. Modellsidan innehåller värdefull information om modellen och hur man använder den. Som slutledning använder vi instanstypen ml.p3.2xlarge eftersom den ger den GPU-acceleration som behövs för latens med låg slutledning till ett lågt pris. När du har konfigurerat SageMaker-värdinstansen väljer du Distribuera. Det tar 5–10 minuter innan slutpunkten är igång och redo att svara på slutledningsförfrågningar.
För att påskynda tiden till slutledning tillhandahåller JumpStart en exempelanteckningsbok som visar hur man kör inferens på den nyskapade slutpunkten. För att komma åt anteckningsboken i Studio, välj Öppna Notebook i Använd Endpoint från Studio avsnittet på modellens slutpunktssida.
Använd JumpStart programmatiskt med SageMaker SDK
Du kan använda JumpStart UI för att distribuera en förtränad modell interaktivt med bara några klick. Men du kan också använda JumpStart-modeller programmatiskt genom att använda API:er som är integrerade i SageMaker Python SDK.
I det här avsnittet väljer vi en lämplig förtränad modell i JumpStart, distribuerar denna modell till en SageMaker-slutpunkt och kör slutledning om den distribuerade slutpunkten, allt med SageMaker Python SDK. Följande exempel innehåller kodavsnitt. För den fullständiga koden med alla steg i denna demo, se Introduktion till JumpStart – Förbättra bildkvaliteten med hjälp av uppmaning exempel anteckningsbok.
Implementera den förtränade modellen
SageMaker använder Docker-behållare för olika bygg- och körningsuppgifter. JumpStart använder SageMaker Deep Learning Containers (DLC) som är ramspecifika. Vi hämtar först eventuella ytterligare paket, samt skript för att hantera utbildning och slutledning för den valda uppgiften. Sedan hämtas de förtränade modellartefakterna separat med model_uris
, vilket ger flexibilitet till plattformen. Detta gör att flera förtränade modeller kan användas med ett enda slutledningsskript. Följande kod illustrerar denna process:
Därefter tillhandahåller vi dessa resurser till en SageMaker modell instans och distribuera en slutpunkt:
Efter att vår modell har implementerats kan vi få förutsägelser från den i realtid!
Inmatningsformat
Slutpunkten accepterar en lågupplöst bild som råa RGB-värden eller en base64-kodad bild. Slutledningshanteraren avkodar bilden baserat på content_type
:
- För
content_type = “application/json”
måste den inmatade nyttolasten vara en JSON-ordbok med de råa RGB-värdena, en textprompt och andra valfria parametrar - För
content_type = “application/json;jpeg”
, måste den inmatade nyttolasten vara en JSON-ordbok med den base64-kodade bilden, en textprompt och andra valfria parametrar
Utmatningsformat
Följande kodexempel ger dig en glimt av hur utgångarna ser ut. På samma sätt som inmatningsformatet kan slutpunkten svara med bildens råa RGB-värden eller en base64-kodad bild. Detta kan specificeras genom inställning accept
till ett av de två värdena:
- För
accept = “application/json”
, returnerar slutpunkten en JSON-ordbok med RGB-värden för bilden - För
accept = “application/json;jpeg”
, returnerar slutpunkten en JSON-ordlista med JPEG-bilden som byte kodad med base64.b64-kodning
Observera att att skicka eller ta emot nyttolasten med de råa RGB-värdena kan träffa standardgränser för indatanyttolasten och svarsstorleken. Därför rekommenderar vi att du använder den base64-kodade bilden genom inställning content_type = “application/json;jpeg”
och accept = “application/json;jpeg”
.
Följande kod är ett exempel på begäran om slutledning:
Endpoint-svaret är ett JSON-objekt som innehåller de genererade bilderna och prompten:
Parametrar som stöds
Stabila diffusionsuppskalningsmodeller stöder många parametrar för bildgenerering:
- bild – En bild med låg upplösning.
- snabb – En uppmaning för att vägleda bildgenereringen. Det kan vara en sträng eller en lista med strängar.
- num_inference_steps (valfritt) – Antalet nedtoningssteg under bildgenerering. Fler steg leder till högre bildkvalitet. Om det anges måste det vara ett positivt heltal. Observera att fler slutledningssteg kommer att leda till en längre svarstid.
- vägledningsskala (valfritt) – En högre vägledningsskala resulterar i en bild som är mer relaterad till uppmaningen, på bekostnad av bildkvaliteten. Om det anges måste det vara en flöte.
guidance_scale<=1
ignoreras. - negativ_prompt (valfritt) – Detta styr bildgenereringen mot denna uppmaning. Om det anges måste det vara en sträng eller en lista med strängar och användas med
guidance_scale
. Omguidance_scale
är inaktiverat, är detta också inaktiverat. Dessutom, om prompten är en lista med strängar, måste negativ_prompten också vara en lista med strängar. - frö (valfritt) – Detta fixar det randomiserade tillståndet för reproducerbarhet. Om det anges måste det vara ett heltal. När du använder samma prompt med samma frö kommer den resulterande bilden alltid att vara densamma.
- noise_level (valfritt) – Detta lägger till brus till latenta vektorer innan uppskalning. Om det anges måste det vara ett heltal.
Du kan rekursivt skala upp en bild genom att anropa slutpunkten upprepade gånger för att få bilder med högre och högre kvalitet.
Bildstorlek och instanstyper
Bilder som genereras av modellen kan vara upp till fyra gånger så stor som den ursprungliga lågupplösta bilden. Dessutom växer modellens minnesbehov (GPU-minne) med storleken på den genererade bilden. Därför, om du uppskalar en redan högupplöst bild eller rekursivt uppskalar bilder, välj en instanstyp med ett stort GPU-minne. Till exempel har ml.g5.2xlarge mer GPU-minne än instanstypen ml.p3.2xlarge som vi använde tidigare. För mer information om olika instanstyper, se Amazon EC2 instansstyper.
Uppskalning av bilder bit för bit
För att minska minneskraven vid uppskalning av stora bilder kan du dela upp bilden i mindre sektioner, så kallade plattor, och exklusiva varje bricka individuellt. Efter att brickorna har uppskalats kan de blandas ihop för att skapa den slutliga bilden. Denna metod kräver att man anpassar uppmaningen för varje bricka så att modellen kan förstå innehållet i plattan och undvika att skapa konstiga bilder. Stildelen av prompten bör förbli konsekvent för alla brickor för att göra blandningen lättare. När du använder högre inställningar för denoising är det viktigt att vara mer specifik i prompten eftersom modellen har större frihet att anpassa bilden. Detta kan vara utmanande när brickan endast innehåller bakgrund eller inte är direkt relaterad till bildens huvudinnehåll.
Begränsningar och partiskhet
Även om Stable Diffusion har imponerande prestanda i uppskalning, lider den av flera begränsningar och fördomar. Dessa inkluderar men är inte begränsade till:
- Modellen kanske inte genererar exakta ansikten eller lemmar eftersom träningsdatan inte innehåller tillräckligt med bilder med dessa funktioner
- Modellen utbildades på LAION-5B dataset, som har vuxet innehåll och kanske inte är lämplig för produktanvändning utan ytterligare överväganden
- Modellen kanske inte fungerar bra med icke-engelska språk eftersom modellen tränades på engelskspråkig text
- Modellen kan inte generera bra text i bilder
För mer information om begränsningar och fördomar, se Stable Diffusion upscaler modellkort.
Städa upp
När du är klar med att köra anteckningsboken, se till att ta bort alla resurser som skapats i processen för att säkerställa att faktureringen stoppas. Koden för att rensa slutpunkten är tillgänglig i den tillhörande anteckningsbok.
Slutsats
I det här inlägget visade vi hur man distribuerar en förutbildad Stable Diffusion upscaler-modell med JumpStart. Vi visade kodsnuttar i det här inlägget – hela koden med alla steg i den här demon finns i Introduktion till JumpStart – Förbättra bildkvaliteten med hjälp av uppmaning exempel anteckningsbok. Prova lösningen på egen hand och skicka oss dina kommentarer.
För att lära dig mer om modellen och hur den fungerar, se följande resurser:
För att lära dig mer om JumpStart, kolla in följande blogginlägg:
Om författarna
Dr. Vivek Madan är en tillämpad forskare med Amazon SageMaker JumpStart-teamet. Han tog sin doktorsexamen från University of Illinois i Urbana-Champaign och var postdoktor vid Georgia Tech. Han är en aktiv forskare inom maskininlärning och algoritmdesign och har publicerat artiklar på EMNLP-, ICLR-, COLT-, FOCS- och SODA-konferenser.
Heiko Hotz är en senior lösningsarkitekt för AI och maskininlärning med särskilt fokus på Natural Language Processing (NLP), Large Language Models (LLMs) och Generativ AI. Innan den här rollen var han chef för datavetenskap för Amazons EU Customer Service. Heiko hjälper våra kunder att bli framgångsrika i sin AI/ML-resa på AWS och har arbetat med organisationer i många branscher, inklusive försäkring, finansiella tjänster, media och underhållning, hälsovård, verktyg och tillverkning. På fritiden reser Heiko så mycket som möjligt.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- Platoblockchain. Web3 Metaverse Intelligence. Kunskap förstärkt. Tillgång här.
- Källa: https://aws.amazon.com/blogs/machine-learning/upscale-images-with-stable-diffusion-in-amazon-sagemaker-jumpstart/
- 100
- 2022
- 7
- a
- Om oss
- accelerera
- Acceptera
- accepterar
- tillgång
- Konto
- exakt
- exakt
- uppnås
- aktiv
- anpassa
- Annat
- Dessutom
- Lägger
- Vuxen
- Efter
- mot
- AI
- AI och maskininlärning
- AI / ML
- algoritm
- Alla
- tillåter
- redan
- alltid
- amason
- Amazon SageMaker
- Amazon SageMaker JumpStart
- och
- Meddela
- api
- API: er
- tillämpas
- lämpligt
- Artister
- associerad
- automatiskt
- tillgänglig
- AWS
- bakgrund
- baserat
- därför att
- innan
- Där vi får lov att vara utan att konstant prestera,
- förspänning
- fakturering
- blandning
- Blogg
- Blogginlägg
- Ha sönder
- SLUTRESULTAT
- kallas
- Kan få
- KATT
- utmanande
- ta
- Välja
- klass
- klarare
- nära
- koda
- kommentarer
- jämfört
- konferenser
- konsekvent
- Behållare
- Behållare
- innehåller
- innehåll
- sammanhang
- konverterad
- skapa
- skapas
- Skapa
- beställnings
- kund
- Kundservice
- Kunder
- datum
- datavetenskap
- minskning
- djup
- djupt lärande
- Standard
- demonstrera
- distribuera
- utplacerade
- Designa
- detalj
- detaljerad
- olika
- Diffusion
- direkt
- inaktiverad
- Hamnarbetare
- inte
- under
- varje
- Tidigare
- lättare
- e-handel
- effektivt
- antingen
- eliminera
- början till slut
- Slutpunkt
- Engelska
- säkerställa
- Underhållning
- inträde
- fastigheter
- EU
- exempel
- exempel
- ytorna
- Leverans
- Hämtas
- få
- Fil
- slutlig
- finansiella
- finansiella tjänster
- hitta
- Förnamn
- passa
- Flexibilitet
- Flyta
- Fokus
- efter
- format
- Frihet
- från
- full
- ytterligare
- Vidare
- generera
- genereras
- generering
- generativ
- Generativ AI
- georgien
- skaffa sig
- Ge
- Glimt
- god
- GPU
- Grön
- Växer
- styra
- Guider
- hantera
- huvud
- hälso-och sjukvård
- höjd
- hjälper
- hög upplösning
- högre
- Träffa
- värd
- Hur ser din drömresa ut
- How To
- Men
- html
- HTTPS
- Illinois
- bild
- bilder
- med Esport
- imponerande
- förbättra
- in
- innefattar
- Inklusive
- Öka
- Individuellt
- industrier
- informationen
- ingång
- exempel
- försäkring
- integrerade
- Gränssnitt
- IT
- resa
- json
- känd
- språk
- Språk
- Large
- Latens
- leda
- LÄRA SIG
- inlärning
- Lets
- begränsningar
- Begränsad
- gränser
- rader
- Lista
- längre
- se
- ser ut som
- förlora
- Låg
- Maskinen
- maskininlärning
- Huvudsida
- göra
- manuell
- manuellt arbete
- manuellt
- Produktion
- många
- Match
- Media
- Minne
- metod
- miljoner
- minuter
- ML
- modell
- modeller
- mer
- multipel
- Natural
- Naturlig språkbehandling
- Behöver
- Nya
- nlp
- Brus
- anteckningsbok
- November
- antal
- objektet
- ONE
- öppet
- beställa
- organisationer
- ursprungliga
- Övriga
- Översikt
- egen
- paket
- papper
- parametrar
- del
- prestanda
- Bild
- bit
- plattform
- plato
- Platon Data Intelligence
- PlatonData
- Punkt
- positiv
- möjlig
- Inlägg
- inlägg
- befogenheter
- förutse
- Förutsägelser
- Predictor
- presentera
- pris
- Innan
- process
- bearbetning
- Produkt
- ge
- ger
- tillhandahålla
- publicerade
- Python
- kvalitet
- randomized
- Raw
- redo
- verklig
- fastigheter
- mottagande
- rekommenderar
- relaterad
- förblir
- UPPREPAT
- begära
- förfrågningar
- kräver
- krav
- Krav
- Kräver
- forskaren
- Upplösning
- Resurser
- Svara
- respons
- resultera
- resulterande
- Resultat
- avkastning
- återgår
- RGB
- Roll
- Körning
- rinnande
- sagemaker
- Samma
- Skala
- Vetenskap
- Forskare
- skärmar
- skript
- sDK
- Andra
- §
- sektioner
- frö
- vald
- skicka
- senior
- service
- Tjänster
- inställning
- inställningar
- flera
- skall
- show
- Visar
- signifikant
- Liknande
- enda
- Storlek
- mindre
- mjukare
- So
- lösning
- Lösningar
- speciell
- specifik
- specificerade
- stabil
- Ange
- Steg
- slutade
- studio
- stil
- framgångsrik
- sådana
- lider
- tillräcklig
- stödja
- Ta
- tar
- uppgift
- uppgifter
- grupp
- tech
- tekniker
- tester
- Smakämnen
- deras
- därför
- Genom
- tid
- gånger
- till
- i dag
- tillsammans
- traditionell
- Tåg
- tränad
- Utbildning
- reser
- typer
- ui
- förstå
- universitet
- us
- användning
- Användare
- Användargränssnitt
- verktyg
- Återvinnare
- Värdefulla
- Värden
- olika
- via
- Video
- sätt
- Vad
- som
- vit
- kommer
- inom
- utan
- Arbete
- jobba tillsammans
- arbetade
- fungerar
- Om er
- Din
- zephyrnet