I november 2022 har vi annoncerede som AWS-kunder kan generere billeder fra tekst med Stabil diffusion modeller, der bruger Amazon SageMaker JumpStart. I dag er vi glade for at introducere en ny funktion, der gør det muligt for brugere at male billeder med stabile diffusionsmodeller. Inpainting refererer til processen med at erstatte en del af et billede med et andet billede baseret på en tekstuel prompt. Ved at levere det originale billede, et maskebillede, der skitserer den del, der skal erstattes, og en tekstprompt, kan stabil diffusionsmodellen producere et nyt billede, der erstatter det maskerede område med objektet, emnet eller miljøet, der er beskrevet i tekstprompten.
Du kan bruge inpainting til at gendanne forringede billeder eller skabe nye billeder med nye motiver eller stilarter i visse sektioner. Inden for området for arkitektonisk design kan stabil diffusion-inpainting anvendes til at reparere ufuldstændige eller beskadigede områder af bygningstegninger, hvilket giver præcise oplysninger til byggepersonalet. I tilfælde af klinisk MR-billeddannelse skal patientens hoved holdes fast, hvilket kan føre til subpar resultater på grund af beskæringsartefakten, der forårsager datatab eller reduceret diagnostisk nøjagtighed. Billedindmaling kan effektivt hjælpe med at afbøde disse suboptimale resultater.
I dette indlæg præsenterer vi en omfattende vejledning om implementering og afvikling af inferens ved hjælp af stabil diffusions-inpainting-modellen på to metoder: gennem JumpStarts brugergrænseflade (UI) i Amazon SageMaker Studio, og programmæssigt igennem JumpStart API'er tilgængelig i SageMaker Python SDK.
Løsningsoversigt
Følgende billeder er eksempler på indmaling. De originale billeder er til venstre, maskebilledet er i midten, og det indmalede billede, der genereres af modellen, er til højre. For det første eksempel var modellen forsynet med det originale billede, et maskebillede og den tekstuelle prompt "en hvid kat, blå øjne, iført en sweater, liggende i parken", samt den negative prompt "dårligt tegnede fødder. ” For det andet eksempel var den tekstmæssige prompt "En kvindelig model fremviser elegant en afslappet lang kjole med en blanding af lyserøde og blå nuancer."
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 guider dig gennem implementering af modellen og kørsel af 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 illustrerer vi implementeringen af JumpStart-modeller ved hjælp af Studio UI. Den medfølgende video demonstrerer lokalisering af den præ-trænede stabile diffusions-inpainting-model på JumpStart og implementering af den. Modelsiden giver vigtige detaljer om modellen og dens brug. For at udføre slutninger anvender vi ml.p3.2xlarge-instanstypen, som leverer den nødvendige GPU-acceleration til slutning med lav latens til en overkommelig pris. Når SageMaker-hostingforekomsten er konfigureret, skal du vælge Implementer. Slutpunktet vil være operationelt og forberedt til at håndtere anmodninger om konklusioner inden for cirka 10 minutter.
JumpStart giver en eksempelnotesbog, der kan hjælpe med at fremskynde den tid, det tager at køre inferens på det nyoprettede slutpunkt. For at få adgang til notesbogen i Studio skal du vælge Åbn Notesbog i Brug Endpoint fra Studio sektionen af modellens slutpunktside.
Brug JumpStart programmatisk med SageMaker SDK
Ved at bruge JumpStart-brugergrænsefladen kan du implementere en forudtrænet model interaktivt med kun et par klik. Alternativt kan du anvende JumpStart-modeller programmatisk ved at bruge API'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 udfører slutninger om det implementerede slutpunkt, alt sammen ved hjælp af SageMaker Python SDK. Følgende eksempler indeholder kodestykker. For at få adgang til den komplette kode med alle de trin, der er inkluderet i denne demonstration, henvises til Introduktion til JumpStart Billedredigering – Stable Diffusion Inpainting 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 leverer vi disse ressourcer til en SageMaker model instans og implementer et slutpunkt:
Efter at modellen er implementeret, kan vi opnå forudsigelser i realtid fra den!
Input
Inputtet er basisbilledet, et maskebillede og prompten, der beskriver emnet, objektet eller miljøet, der skal erstattes i den maskerede del. At skabe det perfekte maskebillede til effekter i maleriet involverer adskillige bedste praksisser. Start med en specifik prompt, og tøv ikke med at eksperimentere med forskellige stabile diffusionsindstillinger for at opnå de ønskede resultater. Brug et maskebillede, der ligner det billede, du sigter efter at male. Denne tilgang hjælper indmalingsalgoritmen med at færdiggøre de manglende dele af billedet, hvilket resulterer i et mere naturligt udseende. Billeder i høj kvalitet giver generelt bedre resultater, så sørg for, at dine basis- og maskebilleder er af god kvalitet og ligner hinanden. Derudover skal du vælge et stort og glat maskebillede for at bevare detaljer og minimere artefakter.
Slutpunktet accepterer basisbilledet og masken 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, 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
Produktion
Slutpunktet kan generere to typer output: et Base64-kodet RGB-billede eller en JSON-ordbog over de genererede billeder. Du kan angive hvilket outputformat du ønsker ved at indstille accept
overskrift til "application/json"
or "application/json;jpeg"
for henholdsvis et JPEG-billede eller base64.
- 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”
og accepter = "application/json;jpeg".
Følgende kode er et eksempel på en slutningsanmodning:
Understøttede parametre
Modeller til stabil diffusion af maling understøtter mange parametre til billedgenerering:
- billede – Det originale billede.
- maske – Et billede, hvor den mørklagte del forbliver uændret under billedgenerering, og den hvide del udskiftes.
- 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 bedre 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ånegative_prompt
skal 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.
- batch_size (valgfrit) – Antallet af billeder, der skal genereres i et enkelt fremadgående pass. Hvis du bruger en mindre forekomst eller genererer mange billeder, skal du reducere
batch_size
at være et lille tal (1-2). Antallet af billeder = antal prompter*num_images_per_prompt
.
Begrænsninger og skævheder
Selvom Stable Diffusion har en imponerende ydeevne inden for maling, 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 er trænet i engelsksproget tekst.
- Modellen kan ikke generere god tekst i billeder.
- Stable Diffusion inpainting fungerer typisk bedst med billeder med lavere opløsninger, såsom 256×256 eller 512×512 pixels. Når du arbejder med billeder i høj opløsning (768×768 eller højere), kan det være svært for metoden at opretholde det ønskede niveau af kvalitet og detaljer.
- Selvom brugen af et frø kan hjælpe med at kontrollere reproducerbarheden, kan stabil diffusion inpainting stadig producere varierede resultater med små ændringer af input eller parametre. Dette kan gøre det udfordrende at finjustere outputtet til specifikke krav.
- Metoden kan have svært ved at generere indviklede teksturer og mønstre, især når de spænder over store områder i billedet eller er essentielle for at opretholde den overordnede sammenhæng og kvalitet af det malede område.
For mere information om begrænsninger og bias, se Stabil Diffusion Inpainting modelkort.
Indmalingsløsning med maske genereret via en prompt
CLIPSeq er en avanceret dyb læringsteknik, der udnytter kraften i forudtrænede CLIP-modeller (Contrastive Language-Image Pretraining) til at generere masker fra inputbilleder. Denne tilgang giver en effektiv måde at skabe masker til opgaver som billedsegmentering, indmaling og manipulation. CLIPSeq bruger CLIP til at generere en tekstbeskrivelse af inputbilledet. Tekstbeskrivelsen bruges derefter til at generere en maske, der identificerer de pixels i billedet, der er relevante for tekstbeskrivelsen. Masken kan derefter bruges til at isolere de relevante dele af billedet til videre bearbejdning.
CLIPSeq har flere fordele i forhold til andre metoder til at generere masker fra inputbilleder. For det første er det en mere effektiv metode, fordi den ikke kræver, at billedet skal behandles af en separat billedsegmenteringsalgoritme. For det andet er det mere nøjagtigt, fordi det kan generere masker, der er tættere på linje med tekstbeskrivelsen af billedet. For det tredje er det mere alsidigt, fordi du kan bruge det til at generere masker fra en lang række billeder.
CLIPSeq har dog også nogle ulemper. For det første kan teknikken have begrænsninger med hensyn til emnet, fordi den er afhængig af forudtrænede CLIP-modeller, som muligvis ikke omfatter specifikke domæner eller ekspertiseområder. For det andet kan det være en følsom metode, fordi den er modtagelig for fejl i tekstbeskrivelsen af billedet.
For mere information henvises til Virtuel modestyling med generativ AI ved hjælp af Amazon SageMaker.
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 præ-trænet stabil diffusions-inpainting-model 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 indlæ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.
Alfred Shen er Senior AI/ML Specialist hos AWS. Han har arbejdet i Silicon Valley og haft tekniske og ledelsesmæssige stillinger i forskellige sektorer, herunder sundhedspleje, finans og højteknologi. Han er en dedikeret anvendt AI/ML-forsker, der koncentrerer sig om CV, NLP og multimodalitet. Hans arbejde er blevet fremvist i publikationer som EMNLP, ICLR og Public Health.
- 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/inpaint-images-with-stable-diffusion-using-amazon-sagemaker-jumpstart/
- :er
- $OP
- 10
- 100
- 2022
- 7
- a
- Om
- fremskynde
- Acceptere
- accepterer
- adgang
- nøjagtighed
- præcis
- opnå
- aktiv
- Yderligere
- Derudover
- Voksen
- fremskreden
- fordele
- overkommelige
- Efter
- mod
- AI
- AI / ML
- hjælpemidler
- algoritme
- justeret
- Alle
- tillader
- altid
- Amazon
- Amazon SageMaker
- Amazon SageMaker JumpStart
- ,
- En anden
- api
- API'er
- anvendt
- tilgang
- passende
- cirka
- arkitektonisk
- ER
- OMRÅDE
- områder
- AS
- At
- automatisk
- til rådighed
- AWS
- bund
- baseret
- BE
- fordi
- BEDSTE
- bedste praksis
- Bedre
- skævhed
- fakturerings- og
- Blanding
- Blå
- bygge
- Bygning
- by
- CAN
- tilfælde
- afslappet
- KAT
- forårsager
- center
- vis
- udfordrende
- kontrollere
- Vælg
- klasse
- klik
- Klinisk
- nøje
- kode
- kommentarer
- fuldføre
- færdiggøre
- omfattende
- konferencer
- overvejelser
- opbygge
- indeholder
- Container
- Beholdere
- indhold
- kontrol
- skabe
- oprettet
- Oprettelse af
- skik
- Kunder
- data
- datatab
- dedikeret
- dyb
- dyb læring
- Standard
- leverer
- demonstrerer
- indsætte
- indsat
- implementering
- implementering
- beskrevet
- beskrivelse
- Design
- ønskes
- detail
- detaljer
- Broadcasting
- deaktiveret
- forskelligartede
- Docker
- Er ikke
- Domæner
- Dont
- i løbet af
- hver
- effektivt
- effekter
- effektiv
- effektivt
- enten
- muliggør
- ende til ende
- Endpoint
- Engelsk
- sikre
- indrejse
- Miljø
- fejl
- især
- væsentlig
- eksempel
- eksempler
- ophidset
- eksperiment
- ekspertise
- Øjne
- ansigter
- Mode
- Feature
- Funktionalitet
- Med
- Feet
- kvinde
- Hentet
- få
- File (Felt)
- finansiere
- Fornavn
- passer
- Fleksibilitet
- Flyde
- efter
- Til
- format
- Videresend
- fra
- fuld
- yderligere
- generelt
- generere
- genereret
- generere
- generation
- generative
- Generativ AI
- Georgien
- godt
- GPU
- vejledning
- vejlede
- Guides
- håndtere
- Have
- hoved
- Helse
- sundhedspleje
- hjælpe
- høj kvalitet
- høj opløsning
- højere
- Hit
- bedrift
- Hosting
- Hvordan
- How To
- HTML
- HTTPS
- identificerer
- Illinois
- billede
- billeder
- Imaging
- imponerende
- in
- omfatter
- medtaget
- Herunder
- oplysninger
- indgang
- instans
- integreret
- grænseflade
- indføre
- IT
- ITS
- jpg
- json
- Sprog
- Sprog
- stor
- føre
- LÆR
- læring
- Niveau
- ligesom
- begrænsninger
- Limited
- grænser
- linjer
- Liste
- Lang
- længere
- off
- maskine
- machine learning
- vedligeholde
- Vedligeholdelse
- lave
- ledelsesmæssige
- Håndtering
- mange
- maske
- Masker
- Matter
- Kan..
- metode
- metoder
- måske
- minutter
- mangler
- afbøde
- ML
- model
- modeller
- mere
- mere effektiv
- Desuden
- MRI
- flere
- Natural
- Behov
- negativ
- Ny
- NLP
- notesbog
- roman
- november
- nummer
- objekt
- opnå
- of
- Tilbud
- on
- ONE
- åbent
- operationelle
- ordrer
- original
- Andet
- konturer
- output
- samlet
- egen
- pakker
- side
- papirer
- parametre
- Park
- dele
- passerer
- mønstre
- perfekt
- Udfør
- ydeevne
- perron
- plato
- Platon Data Intelligence
- PlatoData
- Punkt
- positioner
- positiv
- Indlæg
- Indlæg
- magt
- praksis
- brug
- Forudsigelser
- Predictor
- forberedt
- præsentere
- pris
- behandle
- Behandlet
- forarbejdning
- producere
- Produkt
- give
- forudsat
- giver
- leverer
- offentlige
- folkesundheden
- publikationer
- offentliggjort
- Python
- kvalitet
- Tilfældigt
- Raw
- realtid
- rige
- modtagende
- anbefaler
- reducere
- Reduceret
- refererer
- region
- relaterede
- relevant
- resterne
- reparere
- udskiftes
- anmode
- anmodninger
- kræver
- påkrævet
- Krav
- Kræver
- forsker
- Ligner
- Ressourcer
- svar
- genoprette
- resulterer
- Resultater
- afkast
- afkast
- RGB
- Kør
- kører
- sagemaker
- samme
- Scale
- Videnskabsmand
- scripts
- SDK
- Anden
- Sektion
- sektioner
- Sektorer
- frø
- segmentering
- valgt
- afsendelse
- senior
- følsom
- adskille
- indstilling
- indstillinger
- flere
- Silicon
- Silicon Valley
- enkelt
- Størrelse
- lille
- mindre
- So
- løsninger
- nogle
- span
- specialist
- specifikke
- specificeret
- stabil
- starte
- Tilstand
- Steps
- Stadig
- stoppet
- String
- Kamp
- Studio
- emne
- sådan
- lider
- tilstrækkeligt
- support
- modtagelig
- tager
- Opgaver
- opgaver
- hold
- tech
- Teknisk
- vilkår
- tests
- at
- derfor
- Disse
- Tredje
- Gennem
- tid
- til
- i dag
- sammen
- uddannet
- Kurser
- typer
- typisk
- ui
- universitet
- us
- Brug
- brug
- Bruger
- Brugergrænseflade
- brugere
- udnytte
- udnytter
- Dal
- Værdier
- række
- forskellige
- alsidige
- via
- video
- Vej..
- GODT
- som
- hvid
- bred
- vilje
- med
- inden for
- uden
- Arbejde
- arbejde sammen
- arbejder
- virker
- Udbytte
- Du
- Din
- zephyrnet