I november 2022 har vi annoncerede som AWS-kunder kan generere billeder fra tekst med Stabil diffusion modeller i Amazon SageMaker JumpStart. I dag annoncerer vi en ny funktion, der lader dig opskalere billeder (ændre størrelsen på billeder uden at miste kvalitet) med stabile diffusionsmodeller i JumpStart. Et billede med lav opløsning, sløret og pixeleret kan konverteres til et billede i høj opløsning, der fremstår glattere, klarere og mere detaljeret. Denne proces, kaldet opskalering, kan anvendes på både rigtige billeder og billeder genereret af tekst-til-billede stabile diffusionsmodeller. Dette kan bruges til at forbedre billedkvaliteten i forskellige brancher, såsom e-handel og fast ejendom, såvel som for kunstnere og fotografer. Derudover kan opskalering forbedre den visuelle kvalitet af billeder med lav opløsning, når de vises på skærme med høj opløsning.
Stable Diffusion bruger en AI-algoritme til at opskalere billeder, hvilket eliminerer behovet for manuelt arbejde, der kan kræve manuelt at udfylde huller i et billede. Den er blevet trænet på millioner af billeder og kan præcist forudsige billeder i høj opløsning, hvilket resulterer i en betydelig stigning i detaljer sammenlignet med traditionelle billedopskalere. Derudover, i modsætning til ikke-deep-learning-teknikker, såsom nærmeste nabo, tager Stable Diffusion højde for billedets kontekst ved at bruge en tekstuel prompt til at guide opskaleringsprocessen.
I dette indlæg giver vi et overblik over, hvordan man implementerer og kører inferens med Stable Diffusion upscaler-modellen på to måder: via JumpStarts brugergrænseflade (UI) i Amazon SageMaker Studio, og programmæssigt igennem JumpStart API'er tilgængelig i SageMaker Python SDK.
Løsningsoversigt
De følgende billeder viser eksempler på opskalering udført af modellen. Til venstre er det originale lavopløsningsbillede forstørret, så det passer til størrelsen på billedet, der genereres af modellen. Til højre er billedet genereret af modellen.
Det første genererede billede er resultatet af kattebillede i lav opløsning og prompten "en hvid kat."
Det andet genererede billede er resultatet af et sommerfuglebillede med lav opløsning og prompten "en sommerfugl på et grønt blad."
At køre store modeller som Stable Diffusion kræver brugerdefinerede inferensscripts. Du skal køre ende-til-ende-tests for at sikre, at scriptet, modellen og den ønskede instans fungerer effektivt sammen. JumpStart forenkler denne proces ved at levere klar-til-brug scripts, der er blevet grundigt testet. Du kan få adgang til disse scripts med et enkelt klik gennem Studio UI eller med meget få linjer kode gennem JumpStart API'er.
De følgende afsnit giver et overblik over, hvordan du implementerer modellen og kører inferens ved hjælp af enten Studio UI eller JumpStart API'erne.
Bemærk, at ved at bruge denne model, accepterer du CreativeML Open RAIL++-M-licens.
Få adgang til JumpStart gennem Studio UI
I dette afsnit demonstrerer vi, hvordan man træner og implementerer JumpStart-modeller gennem Studio UI. Den følgende video viser, hvordan du finder den fortrænede Stable Diffusion-opskalermodel på JumpStart og implementerer den. Modelsiden indeholder værdifuld information om modellen og hvordan den bruges. Til slutninger bruger vi instanstypen ml.p3.2xlarge, fordi den giver den GPU-acceleration, der er nødvendig for latens med lav inferens til en lav pris. Når du har konfigureret SageMaker-hostingforekomsten, skal du vælge Implementer. Det vil tage 5-10 minutter, før endepunktet er oppe at køre og klar til at svare på slutningsanmodninger.
For at fremskynde tiden til inferens giver JumpStart en eksempelnotesbog, der viser, hvordan man kører inferens på det nyoprettede slutpunkt. Vælg for at få adgang til notesbogen i Studio Åbn Notesbog i Brug Endpoint fra Studio sektionen af modellens slutpunktside.
Brug JumpStart programmatisk med SageMaker SDK
Du kan bruge JumpStart UI til at implementere en forudtrænet model interaktivt med blot et par klik. Du kan dog også bruge JumpStart-modeller programmatisk ved at bruge API'er, der er integreret i SageMaker Python SDK.
I dette afsnit vælger vi en passende præ-trænet model i JumpStart, implementerer denne model til et SageMaker-slutpunkt og kører konklusioner om det implementerede slutpunkt, alt sammen ved hjælp af SageMaker Python SDK. Følgende eksempler indeholder kodestykker. For den fulde kode med alle trinene i denne demo, se Introduktion til JumpStart – Forbedre billedkvaliteten styret af prompt eksempel notesbog.
Implementer den fortrænede model
SageMaker bruger Docker-containere til forskellige bygge- og runtime-opgaver. JumpStart bruger SageMaker Deep Learning Containere (DLC'er), der er rammespecifikke. Vi henter først eventuelle yderligere pakker, samt scripts til at håndtere træning og slutninger til den valgte opgave. Derefter hentes de fortrænede modelartefakter separat med model_uris
, hvilket giver fleksibilitet til platformen. Dette gør det muligt at bruge flere præ-trænede modeller med et enkelt inferensscript. Følgende kode illustrerer denne proces:
Dernæst giver vi disse ressourcer til en SageMaker model instans og implementer et slutpunkt:
Efter vores model er implementeret, kan vi få forudsigelser fra den i realtid!
Input format
Slutpunktet accepterer et billede med lav opløsning som rå RGB-værdier eller et base64-kodet billede. Inferenshandleren afkoder billedet baseret på content_type
:
- Til
content_type = “application/json”
, skal inputnyttelasten være en JSON-ordbog med de rå RGB-værdier, en tekstprompt og andre valgfrie parametre - Til
content_type = “application/json;jpeg”
, skal inputnyttelasten være en JSON-ordbog med det base64-kodede billede, en tekstprompt og andre valgfrie parametre
Output format
Følgende kodeeksempler giver dig et glimt af, hvordan outputs ser ud. På samme måde som inputformatet kan slutpunktet reagere med billedets rå RGB-værdier eller et base64-kodet billede. Dette kan angives ved indstilling accept
til en af de to værdier:
- Til
accept = “application/json”
, returnerer endepunktet en JSON-ordbog med RGB-værdier for billedet - Til
accept = “application/json;jpeg”
, returnerer endepunktet en JSON-ordbog med JPEG-billedet som bytes kodet med base64.b64-kodning
Bemærk, at afsendelse eller modtagelse af nyttelasten med de rå RGB-værdier kan ramme standardgrænser for input-nyttelasten og svarstørrelsen. Derfor anbefaler vi at bruge det base64-kodede billede ved indstilling content_type = “application/json;jpeg”
, accept = “application/json;jpeg”
.
Følgende kode er et eksempel på en slutningsanmodning:
Slutpunktsvaret er et JSON-objekt, der indeholder de genererede billeder og prompten:
Understøttede parametre
Stabile diffusionsopskaleringsmodeller understøtter mange parametre til billedgenerering:
- billede – Et billede i lav opløsning.
- prompt – En opfordring til at guide billedgenereringen. Det kan være en streng eller en liste over strenge.
- num_inference_steps (valgfrit) – Antallet af dæmpningstrin under billedgenerering. Flere trin fører til højere billedkvalitet. Hvis det er angivet, skal det være et positivt heltal. Bemærk, at flere slutningstrin vil føre til en længere svartid.
- guidance_scale (valgfrit) – En højere vejledningsskala resulterer i et billede, der er tættere relateret til prompten, på bekostning af billedkvaliteten. Hvis det er angivet, skal det være en flyder.
guidance_scale<=1
ignoreres. - negativ_prompt (valgfrit) – Dette guider billedgenereringen mod denne prompt. Hvis det er angivet, skal det være en streng eller en liste over strenge og bruges sammen med
guidance_scale
. hvisguidance_scale
er deaktiveret, er dette også deaktiveret. Desuden, hvis prompten er en liste over strenge, så skal negative_prompten også være en liste over strenge. - frø (valgfrit) – Dette fikserer den randomiserede tilstand for reproducerbarhed. Hvis det er angivet, skal det være et heltal. Når du bruger den samme prompt med det samme frø, vil det resulterende billede altid være det samme.
- noise_level (valgfrit) – Dette tilføjer støj til latente vektorer før opskalering. Hvis det er angivet, skal det være et heltal.
Du kan rekursivt opskalere et billede ved at kalde slutpunktet gentagne gange for at få billeder af højere og højere kvalitet.
Billedstørrelse og instanstyper
Billeder genereret af modellen kan være op til fire gange så store som det originale lavopløsningsbillede. Desuden vokser modellens hukommelsesbehov (GPU-hukommelse) med størrelsen af det genererede billede. Derfor, hvis du opskalerer et billede i allerede høj opløsning eller rekursivt opskalerer billeder, skal du vælge en instanstype med en stor GPU-hukommelse. For eksempel har ml.g5.2xlarge mere GPU-hukommelse end den ml.p3.2xlarge-instanstype, vi brugte tidligere. For mere information om forskellige instanstyper henvises til Amazon EC2-instanstyper.
Opskalering af billeder stykke for stykke
For at mindske hukommelseskravene ved opskalering af store billeder kan du opdele billedet i mindre sektioner, kendt som fliser, og opskaler hver flise individuelt. Efter at fliserne er blevet opskaleret, kan de blandes sammen for at skabe det endelige billede. Denne metode kræver, at man tilpasser prompten for hver flise, så modellen kan forstå indholdet af flisen og undgå at skabe mærkelige billeder. Stildelen af prompten skal forblive konsistent for alle fliser for at gøre blanding lettere. Når du bruger højere denoising-indstillinger, er det vigtigt at være mere specifik i prompten, fordi modellen har større frihed til at tilpasse billedet. Dette kan være udfordrende, når flisen kun indeholder baggrund eller ikke er direkte relateret til billedets hovedindhold.
Begrænsninger og bias
Selvom Stable Diffusion har en imponerende ydeevne inden for opskalering, lider den af flere begrænsninger og skævheder. Disse omfatter, men er ikke begrænset til:
- Modellen genererer muligvis ikke nøjagtige ansigter eller lemmer, fordi træningsdataene ikke indeholder tilstrækkelige billeder med disse funktioner
- Modellen blev trænet på LAION-5B datasæt, som har voksenindhold og muligvis ikke er egnet til produktbrug uden yderligere overvejelser
- Modellen fungerer muligvis ikke godt med ikke-engelske sprog, fordi modellen blev trænet i engelsksproget tekst
- Modellen kan ikke generere god tekst i billeder
For mere information om begrænsninger og bias, se Stable Diffusion upscaler modelkort.
Ryd op
Når du er færdig med at køre notesbogen, skal du sørge for at slette alle ressourcer oprettet i processen for at sikre, at faktureringen stoppes. Koden til at rydde op i slutpunktet er tilgængelig i det tilknyttede notesbog.
Konklusion
I dette indlæg viste vi, hvordan man implementerer en fortrænet stabil diffusionsopskaleringsmodel ved hjælp af JumpStart. Vi viste kodestykker i dette indlæg - den fulde kode med alle trinene i denne demo er tilgængelig i Introduktion til JumpStart – Forbedre billedkvaliteten styret af prompt eksempel notesbog. Prøv løsningen på egen hånd og send os dine kommentarer.
Se følgende ressourcer for at lære mere om modellen, og hvordan den fungerer:
For at lære mere om JumpStart, tjek følgende blogindlæg:
Om forfatterne
Dr. Vivek Madan er en anvendt videnskabsmand hos Amazon SageMaker JumpStart-teamet. Han fik sin ph.d. fra University of Illinois i Urbana-Champaign og var postdoktor ved Georgia Tech. Han er en aktiv forsker i maskinlæring og algoritmedesign og har publiceret artikler i EMNLP, ICLR, COLT, FOCS og SODA konferencer.
Heiko Hotz er en Senior Solutions Architect for AI & Machine Learning med særligt fokus på Natural Language Processing (NLP), Large Language Models (LLM'er) og Generativ AI. Før denne rolle var han chef for datavidenskab for Amazons EU-kundeservice. Heiko hjælper vores kunder med at få succes i deres AI/ML-rejse på AWS og har arbejdet med organisationer i mange brancher, herunder forsikring, finansielle tjenester, medier og underholdning, sundhedspleje, forsyningsselskaber og fremstilling. I sin fritid rejser Heiko så meget som muligt.
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- Platoblokkæde. Web3 Metaverse Intelligence. Viden forstærket. Adgang her.
- Kilde: https://aws.amazon.com/blogs/machine-learning/upscale-images-with-stable-diffusion-in-amazon-sagemaker-jumpstart/
- 100
- 2022
- 7
- a
- Om
- fremskynde
- Acceptere
- accepterer
- adgang
- Konto
- præcis
- præcist
- opnået
- aktiv
- tilpasse
- Yderligere
- Derudover
- Tilføjer
- Voksen
- Efter
- mod
- AI
- AI og maskinindlæring
- AI / ML
- algoritme
- Alle
- tillader
- allerede
- altid
- Amazon
- Amazon SageMaker
- Amazon SageMaker JumpStart
- ,
- Annoncere
- api
- API'er
- anvendt
- passende
- Artister
- forbundet
- automatisk
- til rådighed
- AWS
- baggrund
- baseret
- fordi
- før
- være
- skævhed
- fakturerings- og
- blanding
- Blog
- Blogindlæg
- Pause
- bygge
- kaldet
- Kan få
- KAT
- udfordrende
- kontrollere
- Vælg
- klasse
- klarere
- nøje
- kode
- kommentarer
- sammenlignet
- konferencer
- konsekvent
- Container
- Beholdere
- indeholder
- indhold
- sammenhæng
- konverteret
- skabe
- oprettet
- Oprettelse af
- skik
- kunde
- Kundeservice
- Kunder
- data
- datalogi
- falde
- dyb
- dyb læring
- Standard
- demonstrere
- indsætte
- indsat
- Design
- detail
- detaljeret
- forskellige
- Broadcasting
- direkte
- deaktiveret
- Docker
- Er ikke
- i løbet af
- hver
- tidligere
- lettere
- ecommerce
- effektivt
- enten
- eliminere
- ende til ende
- Endpoint
- Engelsk
- sikre
- Underholdning
- indrejse
- ejendom
- EU
- eksempel
- eksempler
- ansigter
- Feature
- Hentet
- få
- File (Felt)
- endelige
- finansielle
- finansielle tjenesteydelser
- Finde
- Fornavn
- passer
- Fleksibilitet
- Flyde
- Fokus
- efter
- format
- Frihed
- fra
- fuld
- yderligere
- Endvidere
- generere
- genereret
- generation
- generative
- Generativ AI
- Georgien
- få
- Giv
- glimt
- godt
- GPU
- Grøn
- Vokser
- vejlede
- Guides
- håndtere
- hoved
- sundhedspleje
- højde
- hjælper
- høj opløsning
- højere
- Hit
- Hosting
- Hvordan
- How To
- Men
- HTML
- HTTPS
- Illinois
- billede
- billeder
- vigtigt
- imponerende
- Forbedre
- in
- omfatter
- Herunder
- Forøg
- Individuelt
- industrier
- oplysninger
- indgang
- instans
- forsikring
- integreret
- grænseflade
- IT
- rejse
- json
- kendt
- Sprog
- Sprog
- stor
- Latency
- føre
- LÆR
- læring
- Lets
- begrænsninger
- Limited
- grænser
- linjer
- Liste
- længere
- Se
- ligner
- miste
- Lav
- maskine
- machine learning
- Main
- lave
- manuel
- manuelt arbejde
- manuelt
- Produktion
- mange
- Match
- Medier
- Hukommelse
- metode
- millioner
- minutter
- ML
- model
- modeller
- mere
- flere
- Natural
- Natural Language Processing
- Behov
- Ny
- NLP
- Støj
- notesbog
- november
- nummer
- objekt
- ONE
- åbent
- ordrer
- organisationer
- original
- Andet
- oversigt
- egen
- pakker
- papirer
- parametre
- del
- ydeevne
- billede
- stykke
- perron
- plato
- Platon Data Intelligence
- PlatoData
- Punkt
- positiv
- mulig
- Indlæg
- Indlæg
- beføjelser
- forudsige
- Forudsigelser
- Predictor
- præsentere
- pris
- Forud
- behandle
- forarbejdning
- Produkt
- give
- giver
- leverer
- offentliggjort
- Python
- kvalitet
- Tilfældigt
- Raw
- klar
- ægte
- fast ejendom
- modtagende
- anbefaler
- relaterede
- forblive
- GENTAGNE GANGE
- anmode
- anmodninger
- kræver
- krav
- Krav
- Kræver
- forsker
- Løsning
- Ressourcer
- Svar
- svar
- resultere
- resulterer
- Resultater
- afkast
- afkast
- RGB
- roller
- Kør
- kører
- sagemaker
- samme
- Scale
- Videnskab
- Videnskabsmand
- skærme
- scripts
- SDK
- Anden
- Sektion
- sektioner
- frø
- valgt
- afsendelse
- senior
- tjeneste
- Tjenester
- indstilling
- indstillinger
- flere
- bør
- Vis
- Shows
- signifikant
- Tilsvarende
- enkelt
- Størrelse
- mindre
- glattere
- So
- løsninger
- Løsninger
- særligt
- specifikke
- specificeret
- stabil
- Tilstand
- Steps
- stoppet
- Studio
- stil
- vellykket
- sådan
- lider
- tilstrækkeligt
- support
- Tag
- tager
- Opgaver
- opgaver
- hold
- tech
- teknikker
- tests
- deres
- derfor
- Gennem
- tid
- gange
- til
- i dag
- sammen
- traditionelle
- Tog
- uddannet
- Kurser
- rejser
- typer
- ui
- forstå
- universitet
- us
- brug
- Bruger
- Brugergrænseflade
- forsyningsselskaber
- udnytter
- Værdifuld
- Værdier
- forskellige
- via
- video
- måder
- Hvad
- som
- hvid
- vilje
- inden for
- uden
- Arbejde
- arbejde sammen
- arbejdede
- virker
- Du
- Din
- zephyrnet