I november 2022 har vi annonsert som AWS-kunder kan generere bilder fra tekst med Stabil diffusjon modeller i Amazon SageMaker JumpStart. I dag kunngjør vi en ny funksjon som lar deg oppskalere bilder (endre størrelse på bilder uten å miste kvalitet) med Stable Diffusion-modeller i JumpStart. Et bilde med lav oppløsning, uskarpt og pikselert kan konverteres til et høyoppløselig bilde som fremstår jevnere, klarere og mer detaljert. Denne prosessen, kalt oppskalering, kan brukes på både ekte bilder og bilder generert av tekst-til-bilde stabile diffusjonsmodeller. Dette kan brukes til å forbedre bildekvaliteten i ulike bransjer som e-handel og eiendom, samt for kunstnere og fotografer. I tillegg kan oppskalering forbedre den visuelle kvaliteten på bilder med lav oppløsning når de vises på skjermer med høy oppløsning.
Stabil diffusjon bruker en AI-algoritme for å oppskalere bilder, og eliminerer behovet for manuelt arbeid som kan kreve å fylle hull i et bilde manuelt. Den har blitt trent på millioner av bilder og kan nøyaktig forutsi høyoppløselige bilder, noe som resulterer i en betydelig detaljøkning sammenlignet med tradisjonelle bildeoppskalere. I tillegg, i motsetning til ikke-dyp-læringsteknikker som nærmeste nabo, tar stabil diffusjon hensyn til bildets kontekst, ved å bruke en tekstmelding for å veilede oppskaleringsprosessen.
I dette innlegget gir vi en oversikt over hvordan du distribuerer og kjører inferens med Stable Diffusion upscaler-modellen på to måter: via JumpStarts brukergrensesnitt (UI) i Amazon SageMaker Studio, og programmatisk gjennom JumpStart APIer tilgjengelig i SageMaker Python SDK.
Løsningsoversikt
Følgende bilder viser eksempler på oppskalering utført av modellen. Til venstre er det originale lavoppløsningsbildet forstørret for å matche størrelsen på bildet generert av modellen. Til høyre er bildet generert av modellen.
Det første genererte bildet er resultatet av kattebilde med lav oppløsning og meldingen "en hvit katt."
Det andre genererte bildet er resultatet av lavoppløselig sommerfuglbilde og ledeteksten "en sommerfugl på et grønt blad."
Å kjøre store modeller som Stable Diffusion krever tilpassede slutningsskript. Du må kjøre ende-til-ende-tester for å sikre at skriptet, modellen og den ønskede forekomsten fungerer effektivt sammen. JumpStart forenkler denne prosessen ved å tilby ferdige skript som har blitt grundig testet. Du kan få tilgang til disse skriptene med ett klikk gjennom Studio UI eller med svært få linjer med kode gjennom JumpStart APIer.
De følgende delene gir en oversikt over hvordan du distribuerer modellen og kjører inferens ved å bruke enten Studio-grensesnittet eller JumpStart-API-ene.
Merk at ved å bruke denne modellen godtar du CreativeML Open RAIL++-M-lisens.
Få tilgang til JumpStart gjennom Studio UI
I denne delen viser vi hvordan du trener og distribuerer JumpStart-modeller gjennom Studio UI. Den følgende videoen viser hvordan du finner den ferdigtrente Stable Diffusion-oppskaleringsmodellen på JumpStart og distribuerer den. Modellsiden inneholder verdifull informasjon om modellen og hvordan du bruker den. For slutninger bruker vi forekomsttypen ml.p3.2xlarge fordi den gir GPU-akselerasjonen som trengs for lav slutningsforsinkelse til en lav pris. Etter at du har konfigurert SageMaker-vertsinstansen, velger du Distribuer. Det vil ta 5–10 minutter før endepunktet er oppe og går og klart til å svare på slutningsforespørsler.
For å akselerere tiden til inferens gir JumpStart en eksempelnotisbok som viser hvordan du kjører inferens på det nyopprettede endepunktet. For å få tilgang til notatblokken i Studio, velg Åpne Notebook i Bruk endepunkt fra Studio delen av modellens endepunktside.
Bruk JumpStart programmatisk med SageMaker SDK
Du kan bruke JumpStart-grensesnittet til å distribuere en forhåndstrent modell interaktivt med bare noen få klikk. Du kan imidlertid også bruke JumpStart-modeller programmatisk ved å bruke APIer som er integrert i SageMaker Python SDK.
I denne delen velger vi en passende forhåndsopplært modell i JumpStart, distribuerer denne modellen til et SageMaker-endepunkt og kjører slutninger om det utplasserte endepunktet, alt ved å bruke SageMaker Python SDK. Følgende eksempler inneholder kodebiter. For den fullstendige koden med alle trinnene i denne demoen, se Introduksjon til JumpStart – Forbedre bildekvaliteten veiledet av spørsmål eksempel notatbok.
Implementer den forhåndstrente modellen
SageMaker bruker Docker-containere for ulike bygge- og kjøretidsoppgaver. JumpStart bruker SageMaker Deep Learning-beholdere (DLC-er) som er rammespesifikke. Vi henter først eventuelle tilleggspakker, samt skript for å håndtere opplæring og slutninger for den valgte oppgaven. Deretter hentes de forhåndstrente modellartefaktene separat med model_uris
, som gir fleksibilitet til plattformen. Dette gjør at flere forhåndstrente modeller kan brukes med et enkelt slutningsskript. Følgende kode illustrerer denne prosessen:
Deretter gir vi disse ressursene til en SageMaker modell forekomst og distribuer et endepunkt:
Etter at modellen vår er distribuert, kan vi få spådommer fra den i sanntid!
Input format
Endepunktet godtar et lavoppløselig bilde som rå RGB-verdier eller et base64-kodet bilde. Inferensbehandleren dekoder bildet basert på content_type
:
- Til
content_type = “application/json”
, må inngangsnyttelasten være en JSON-ordbok med rå RGB-verdier, en tekstmelding og andre valgfrie parametere - Til
content_type = “application/json;jpeg”
, må inngangsnyttelasten være en JSON-ordbok med det base64-kodede bildet, en tekstmelding og andre valgfrie parametere
Utgående format
Følgende kodeeksempler gir deg et glimt av hvordan utgangene ser ut. På samme måte som inndataformatet kan endepunktet svare med de rå RGB-verdiene til bildet eller et base64-kodet bilde. Dette kan spesifiseres ved innstilling accept
til en av de to verdiene:
- Til
accept = “application/json”
, returnerer endepunktet en JSON-ordbok med RGB-verdier for bildet - Til
accept = “application/json;jpeg”
, returnerer endepunktet en JSON-ordbok med JPEG-bildet som byte kodet med base64.b64-koding
Merk at sending eller mottak av nyttelasten med rå RGB-verdier kan ramme standardgrenser for input-nyttelasten og svarstørrelsen. Derfor anbefaler vi å bruke det base64-kodede bildet etter innstilling content_type = “application/json;jpeg”
og accept = “application/json;jpeg”
.
Følgende kode er et eksempel på en slutningsforespørsel:
Endepunktsvaret er et JSON-objekt som inneholder de genererte bildene og ledeteksten:
Støttede parametere
Stabile diffusjonsoppskaleringsmodeller støtter mange parametere for bildegenerering:
- bilde – Et bilde med lav oppløsning.
- teksten – En oppfordring til å veilede bildegenereringen. Det kan være en streng eller en liste med strenger.
- num_inference_steps (valgfritt) – Antall denoise-trinn under bildegenerering. Flere trinn fører til høyere bildekvalitet. Hvis det er spesifisert, må det et positivt heltall. Merk at flere slutningstrinn vil føre til lengre responstid.
- veiledningsskala (valgfritt) – En høyere veiledningsskala resulterer i et bilde som er nærmere knyttet til spørsmålet, på bekostning av bildekvaliteten. Hvis det er spesifisert, må det være en flyte.
guidance_scale<=1
blir ignorert. - negativ_forespørsel (valgfritt) – Dette veileder bildegenereringen mot denne oppfordringen. Hvis det er spesifisert, må det være en streng eller en liste over strenger og brukes med
guidance_scale
. Dersomguidance_scale
er deaktivert, er dette også deaktivert. Dessuten, hvis ledeteksten er en liste over strenger, må den negative_prompten også være en liste over strenger. - frø (valgfritt) – Dette fikser den randomiserte tilstanden for reproduserbarhet. Hvis det er spesifisert, må det være et heltall. Når du bruker den samme ledeteksten med samme frø, vil det resulterende bildet alltid være det samme.
- noise_level (valgfritt) – Dette legger til støy til latente vektorer før oppskalering. Hvis det er spesifisert, må det være et heltall.
Du kan oppskalere et bilde rekursivt ved å påkalle endepunktet gjentatte ganger for å få bilder av høyere og høyere kvalitet.
Bildestørrelse og forekomsttyper
Bilder generert av modellen kan være opptil fire ganger størrelsen på det originale lavoppløselige bildet. Videre vokser modellens minnebehov (GPU-minne) med størrelsen på det genererte bildet. Derfor, hvis du oppskalerer et allerede høyoppløselig bilde eller rekursivt oppskalerer bilder, velger du en forekomsttype med et stort GPU-minne. For eksempel har ml.g5.2xlarge mer GPU-minne enn ml.p3.2xlarge-forekomsttypen vi brukte tidligere. For mer informasjon om ulike forekomsttyper, se Forekomststyper for Amazon EC2.
Oppskalere bilder bit for bit
For å redusere minnekravene ved oppskalering av store bilder, kan du dele opp bildet i mindre deler, kjent som fliser, og oppskalere hver flis individuelt. Etter at flisene har blitt oppskalert, kan de blandes sammen for å lage det endelige bildet. Denne metoden krever tilpasning av ledeteksten for hver flis slik at modellen kan forstå innholdet i flisen og unngå å lage rare bilder. Stildelen av ledeteksten bør forbli konsistent for alle fliser for å gjøre blandingen enklere. Når du bruker høyere denoising-innstillinger, er det viktig å være mer spesifikk i ledeteksten fordi modellen har større frihet til å tilpasse bildet. Dette kan være utfordrende når flisen bare inneholder bakgrunn eller ikke er direkte relatert til hovedinnholdet i bildet.
Begrensninger og skjevhet
Selv om Stable Diffusion har imponerende ytelse i oppskalering, lider den av flere begrensninger og skjevheter. Disse inkluderer, men er ikke begrenset til:
- Modellen genererer kanskje ikke nøyaktige ansikter eller lemmer fordi treningsdataene ikke inneholder tilstrekkelige bilder med disse funksjonene
- Modellen ble trent på LAION-5B datasett, som har vokseninnhold og kanskje ikke er egnet for produktbruk uten ytterligere vurderinger
- Modellen fungerer kanskje ikke bra med ikke-engelske språk fordi modellen ble trent på engelskspråklig tekst
- Modellen kan ikke generere god tekst i bilder
For mer informasjon om begrensninger og skjevheter, se Stable Diffusion upscaler modellkort.
Rydd opp
Når du er ferdig med å kjøre notisboken, sørg for å slette alle ressurser som er opprettet i prosessen for å sikre at faktureringen stoppes. Koden for å rydde opp i endepunktet er tilgjengelig i det tilknyttede bærbare.
konklusjonen
I dette innlegget viste vi hvordan du distribuerer en forhåndstrent Stable Diffusion-oppskalermodell ved hjelp av JumpStart. Vi viste kodebiter i dette innlegget – hele koden med alle trinnene i denne demoen er tilgjengelig i Introduksjon til JumpStart – Forbedre bildekvaliteten veiledet av spørsmål eksempel notatbok. Prøv løsningen på egen hånd og send oss dine kommentarer.
For å lære mer om modellen og hvordan den fungerer, se følgende ressurser:
For å lære mer om JumpStart, sjekk ut følgende blogginnlegg:
Om forfatterne
Dr. Vivek Madan er en Applied Scientist med Amazon SageMaker JumpStart-teamet. Han fikk sin doktorgrad fra University of Illinois i Urbana-Champaign og var postdoktor ved Georgia Tech. Han er en aktiv forsker innen maskinlæring og algoritmedesign og har publisert artikler på EMNLP-, ICLR-, COLT-, FOCS- og SODA-konferanser.
Heiko Hotz er en senior løsningsarkitekt for AI og maskinlæring med spesielt fokus på Natural Language Processing (NLP), Large Language Models (LLMs) og Generative AI. Før denne rollen var han sjef for datavitenskap for Amazons EU-kundeservice. Heiko hjelper kundene våre med å lykkes i deres AI/ML-reise på AWS og har jobbet med organisasjoner i mange bransjer, inkludert forsikring, finansielle tjenester, media og underholdning, helsetjenester, verktøy og produksjon. På fritiden reiser Heiko så mye som mulig.
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- Platoblokkkjede. Web3 Metaverse Intelligence. Kunnskap forsterket. Tilgang her.
- kilde: https://aws.amazon.com/blogs/machine-learning/upscale-images-with-stable-diffusion-in-amazon-sagemaker-jumpstart/
- 100
- 2022
- 7
- a
- Om oss
- akselerere
- Aksepterer
- godtar
- adgang
- Logg inn
- nøyaktig
- nøyaktig
- oppnådd
- aktiv
- tilpasse
- Ytterligere
- I tillegg
- Legger
- Voksen
- Etter
- mot
- AI
- AI og maskinlæring
- AI / ML
- algoritme
- Alle
- tillater
- allerede
- alltid
- Amazon
- Amazon SageMaker
- Amazon SageMaker JumpStart
- og
- Kunngjøre
- api
- APIer
- anvendt
- hensiktsmessig
- Artister
- assosiert
- automatisk
- tilgjengelig
- AWS
- bakgrunn
- basert
- fordi
- før du
- være
- Bias
- fakturering
- blending
- Blogg
- Blogginnlegg
- Break
- bygge
- som heter
- Kan få
- CAT
- utfordrende
- sjekk
- Velg
- klasse
- tydeligere
- tett
- kode
- kommentarer
- sammenlignet
- konferanser
- konsistent
- Container
- Containere
- inneholder
- innhold
- kontekst
- konvertert
- skape
- opprettet
- Opprette
- skikk
- kunde
- Kundeservice
- Kunder
- dato
- datavitenskap
- redusere
- dyp
- dyp læring
- Misligholde
- demonstrere
- utplassere
- utplassert
- utforming
- detalj
- detaljert
- forskjellig
- kringkasting
- direkte
- deaktivert
- Docker
- ikke
- under
- hver enkelt
- Tidligere
- enklere
- e-handel
- effektivt
- enten
- eliminere
- ende til ende
- Endpoint
- Engelsk
- sikre
- Entertainment
- entry
- eiendom
- EU
- eksempel
- eksempler
- ansikter
- Trekk
- Hentet
- Noen få
- filet
- slutt~~POS=TRUNC
- finansiell
- finansielle tjenester
- Finn
- Først
- passer
- fleksibilitet
- Flyte
- Fokus
- etter
- format
- Frihet
- fra
- fullt
- videre
- Dess
- generere
- generert
- generasjonen
- generative
- Generativ AI
- Georgia
- få
- Gi
- Glimpse
- god
- GPU
- Grønn
- Vokser
- veilede
- Guider
- håndtere
- hode
- helsetjenester
- høyde
- hjelper
- høy oppløsning
- høyere
- hit
- Hosting
- Hvordan
- Hvordan
- Men
- HTML
- HTTPS
- Illinois
- bilde
- bilder
- viktig
- imponerende
- forbedre
- in
- inkludere
- Inkludert
- Øke
- individuelt
- bransjer
- informasjon
- inngang
- f.eks
- forsikring
- integrert
- Interface
- IT
- reise
- JSON
- kjent
- Språk
- språk
- stor
- Ventetid
- føre
- LÆRE
- læring
- Lar
- begrensninger
- Begrenset
- grenser
- linjer
- Liste
- lenger
- Se
- ser ut som
- å miste
- Lav
- maskin
- maskinlæring
- Hoved
- gjøre
- håndbok
- manuelt arbeid
- manuelt
- produksjon
- mange
- Match
- Media
- Minne
- metode
- millioner
- minutter
- ML
- modell
- modeller
- mer
- flere
- Naturlig
- Natural Language Processing
- Trenger
- Ny
- nlp
- Bråk
- bærbare
- November
- Antall
- objekt
- ONE
- åpen
- rekkefølge
- organisasjoner
- original
- Annen
- oversikt
- egen
- pakker
- papirer
- parametere
- del
- ytelse
- bilde
- brikke
- plattform
- plato
- Platon Data Intelligence
- PlatonData
- Point
- positiv
- mulig
- Post
- innlegg
- krefter
- forutsi
- Spådommer
- Predictor
- presentere
- pris
- Før
- prosess
- prosessering
- Produkt
- gi
- gir
- gi
- publisert
- Python
- kvalitet
- randomisert
- Raw
- klar
- ekte
- eiendomsmegling
- mottak
- anbefaler
- i slekt
- forbli
- GJENTATTE GANGER
- anmode
- forespørsler
- krever
- behov
- Krav
- Krever
- forsker
- oppløsning
- Ressurser
- Svare
- svar
- resultere
- resulterende
- Resultater
- retur
- avkastning
- RGB
- Rolle
- Kjør
- rennende
- sagemaker
- samme
- Skala
- Vitenskap
- Forsker
- skjermer
- skript
- SDK
- Sekund
- Seksjon
- seksjoner
- seed
- valgt
- sending
- senior
- tjeneste
- Tjenester
- innstilling
- innstillinger
- flere
- bør
- Vis
- Viser
- signifikant
- på samme måte
- enkelt
- Størrelse
- mindre
- jevnere
- So
- løsning
- Solutions
- spesiell
- spesifikk
- spesifisert
- stabil
- Tilstand
- Steps
- stoppet
- studio
- stil
- vellykket
- slik
- lider
- tilstrekkelig
- støtte
- Ta
- tar
- Oppgave
- oppgaver
- lag
- tech
- teknikker
- tester
- De
- deres
- derfor
- Gjennom
- tid
- ganger
- til
- i dag
- sammen
- tradisjonelle
- Tog
- trent
- Kurs
- reiser
- typer
- ui
- forstå
- universitet
- us
- bruke
- Bruker
- Brukergrensesnitt
- verktøy
- bruker
- Verdifull
- Verdier
- ulike
- av
- video
- måter
- Hva
- hvilken
- hvit
- vil
- innenfor
- uten
- Arbeid
- arbeide sammen
- arbeidet
- virker
- Du
- Din
- zephyrnet