In november 2022 hebben wij aangekondigd waarmee AWS-klanten afbeeldingen uit tekst kunnen genereren Stabiele diffusie modellen in Amazon SageMaker JumpStart. Vandaag kondigen we een nieuwe functie aan waarmee je afbeeldingen kunt opschalen (het formaat van afbeeldingen wijzigen zonder kwaliteitsverlies) met Stable Diffusion-modellen in JumpStart. Een afbeelding met een lage resolutie, wazig en korrelig kan worden omgezet in een afbeelding met een hoge resolutie die er vloeiender, duidelijker en gedetailleerder uitziet. Dit proces, genaamd upscaling, kan worden toegepast op zowel echte afbeeldingen als afbeeldingen gegenereerd door tekst-naar-beeld stabiele diffusiemodellen. Dit kan worden gebruikt om de beeldkwaliteit te verbeteren in verschillende sectoren, zoals e-commerce en onroerend goed, maar ook voor kunstenaars en fotografen. Bovendien kan opschalen de visuele kwaliteit van afbeeldingen met een lage resolutie verbeteren wanneer ze worden weergegeven op schermen met een hoge resolutie.
Stable Diffusion maakt gebruik van een AI-algoritme om afbeeldingen op te schalen, waardoor er geen handmatig werk meer nodig is waarbij gaten in een afbeelding handmatig moeten worden opgevuld. Het is getraind op miljoenen afbeeldingen en kan afbeeldingen met een hoge resolutie nauwkeurig voorspellen, wat resulteert in een aanzienlijke toename in detail in vergelijking met traditionele beeld-upscalers. Bovendien houdt Stable Diffusion, in tegenstelling tot niet-deep-learning technieken zoals naaste buur, rekening met de context van de afbeelding, met behulp van een tekstuele prompt om het opschalingsproces te begeleiden.
In dit bericht geven we een overzicht van hoe u inferentie kunt implementeren en uitvoeren met het Stable Diffusion upscaler-model op twee manieren: via de gebruikersinterface (UI) van JumpStart in Amazon SageMaker Studio, en programmatisch door JumpStart-API's beschikbaar in de SageMaker Python-SDK.
Overzicht oplossingen
De volgende afbeeldingen tonen voorbeelden van opschaling die door het model wordt uitgevoerd. Aan de linkerkant is de originele afbeelding met lage resolutie vergroot om overeen te komen met de grootte van de afbeelding die door het model is gegenereerd. Aan de rechterkant is de afbeelding gegenereerd door het model.
De eerste gegenereerde afbeelding is het resultaat van een afbeelding van een kat met een lage resolutie en de prompt "een witte kat".
De tweede gegenereerde afbeelding is het resultaat van een vlinderafbeelding met een lage resolutie en de prompt 'een vlinder op een groen blad'.
Het uitvoeren van grote modellen zoals Stable Diffusion vereist aangepaste inferentiescripts. U moet end-to-end-tests uitvoeren om ervoor te zorgen dat het script, het model en de gewenste instantie efficiënt samenwerken. JumpStart vereenvoudigt dit proces door kant-en-klare scripts aan te bieden die robuust zijn getest. Je hebt toegang tot deze scripts met één klik via de gebruikersinterface van Studio of met heel weinig regels code via de JumpStart-API's.
De volgende secties geven een overzicht van hoe u het model implementeert en deductie uitvoert met behulp van de Studio-gebruikersinterface of de JumpStart-API's.
Merk op dat door dit model te gebruiken, u akkoord gaat met de CreativeML Open RAIL++-M-licentie.
Toegang tot JumpStart via de Studio UI
In deze sectie laten we zien hoe u JumpStart-modellen traint en implementeert via de gebruikersinterface van Studio. De volgende video laat zien hoe u het vooraf getrainde Stable Diffusion-upscalermodel op JumpStart kunt vinden en implementeren. De modelpagina bevat waardevolle informatie over het model en het gebruik ervan. Voor gevolgtrekkingen gebruiken we het instantietype ml.p3.2xlarge omdat dit de GPU-versnelling biedt die nodig is voor lage gevolgtrekkingslatentie tegen een lage prijs. Nadat u de SageMaker-hostinginstantie hebt geconfigureerd, kiest u Implementeren. Het duurt 5 tot 10 minuten voordat het eindpunt actief is en klaar is om te reageren op deductieverzoeken.
Om de tijd tot gevolgtrekking te versnellen, biedt JumpStart een voorbeeldnotitieboekje dat laat zien hoe gevolgtrekking op het nieuw gemaakte eindpunt moet worden uitgevoerd. Kies voor toegang tot het notitieblok in Studio Notitieblok openen in de Eindpunt van Studio gebruiken gedeelte van de modeleindpuntpagina.
Gebruik JumpStart programmatisch met de SageMaker SDK
U kunt de JumpStart-gebruikersinterface gebruiken om een vooraf getraind model met slechts een paar klikken interactief te implementeren. U kunt JumpStart-modellen echter ook programmatisch gebruiken door API's te gebruiken die zijn geïntegreerd in de SageMaker Python SDK.
In deze sectie kiezen we een geschikt vooraf getraind model in JumpStart, implementeren we dit model op een SageMaker-eindpunt en voeren we gevolgtrekkingen uit op het geïmplementeerde eindpunt, allemaal met behulp van de SageMaker Python SDK. De volgende voorbeelden bevatten codefragmenten. Voor de volledige code met alle stappen in deze demo, zie de Inleiding tot JumpStart – Verbeter de beeldkwaliteit op aanwijzing voorbeeld notitieboekje.
Het vooraf getrainde model implementeren
SageMaker gebruikt Docker-containers voor verschillende build- en runtime-taken. JumpStart maakt gebruik van de SageMaker Deep Learning-containers (DLC's) die framework-specifiek zijn. We halen eerst eventuele aanvullende pakketten op, evenals scripts om training en inferentie voor de geselecteerde taak af te handelen. Vervolgens worden de vooraf getrainde modelartefacten afzonderlijk opgehaald model_uris
, wat het platform flexibiliteit biedt. Hierdoor kunnen meerdere vooraf getrainde modellen worden gebruikt met één inferentiescript. De volgende code illustreert dit proces:
Vervolgens leveren we die bronnen in een SageMaker-model instantie en implementeer een eindpunt:
Nadat ons model is geïmplementeerd, kunnen we er in realtime voorspellingen van krijgen!
invoer formaat
Het eindpunt accepteert een afbeelding met een lage resolutie als onbewerkte RGB-waarden of een base64-gecodeerde afbeelding. De inferentiehandler decodeert de afbeelding op basis van content_type
:
- Voor
content_type = “application/json”
, moet de invoerpayload een JSON-woordenboek zijn met de onbewerkte RGB-waarden, een tekstuele prompt en andere optionele parameters - Voor
content_type = “application/json;jpeg”
, moet de invoerpayload een JSON-woordenboek zijn met de base64-gecodeerde afbeelding, een tekstuele prompt en andere optionele parameters
Uitvoer formaat
De volgende codevoorbeelden geven u een glimp van hoe de uitvoer eruitziet. Net als bij het invoerformaat kan het eindpunt reageren met de onbewerkte RGB-waarden van de afbeelding of een met base64 gecodeerde afbeelding. Dit kan worden gespecificeerd door instelling accept
naar een van de twee waarden:
- Voor
accept = “application/json”
, retourneert het eindpunt een JSON-woordenboek met RGB-waarden voor de afbeelding - Voor
accept = “application/json;jpeg”
, retourneert het eindpunt een JSON-woordenboek met de JPEG-afbeelding als bytes gecodeerd met base64.b64-codering
Houd er rekening mee dat het verzenden of ontvangen van de payload met de onbewerkte RGB-waarden mogelijk de standaardlimieten voor de invoerpayload en de responsgrootte bereikt. Daarom raden we aan om de base64-gecodeerde afbeelding per instelling te gebruiken content_type = “application/json;jpeg”
en accept = “application/json;jpeg”
.
De volgende code is een voorbeeld van een gevolgtrekkingsverzoek:
Het eindpuntantwoord is een JSON-object dat de gegenereerde afbeeldingen en de prompt bevat:
Ondersteunde parameters
Stabiele diffusie-opschalingsmodellen ondersteunen veel parameters voor het genereren van afbeeldingen:
- beeld – Een afbeelding met een lage resolutie.
- prompt - Een prompt om het genereren van afbeeldingen te begeleiden. Dit kan een tekenreeks of een lijst met tekenreeksen zijn.
- num_inference_steps (optioneel) – Het aantal stappen voor het verwijderen van ruis tijdens het genereren van afbeeldingen. Meer stappen leiden tot een afbeelding van hogere kwaliteit. Indien gespecificeerd, moet het een positief geheel getal zijn. Merk op dat meer inferentiestappen zullen leiden tot een langere reactietijd.
- guidance_scale (optioneel) – Een hogere begeleidingsschaal resulteert in een beeld dat nauwer verwant is aan de prompt, ten koste van de beeldkwaliteit. Indien gespecificeerd, moet het een float zijn.
guidance_scale<=1
wordt genegeerd. - negatieve_prompt (optioneel) - Dit leidt het genereren van afbeeldingen tegen deze prompt. Indien opgegeven, moet het een tekenreeks of een lijst met tekenreeksen zijn en worden gebruikt met
guidance_scale
. Indienguidance_scale
is uitgeschakeld, is dit ook uitgeschakeld. Bovendien, als de prompt een lijst met tekenreeksen is, moet de negatieve_prompt ook een lijst met tekenreeksen zijn. - zaad (optioneel) – Hiermee wordt de gerandomiseerde toestand voor reproduceerbaarheid hersteld. Indien gespecificeerd, moet het een geheel getal zijn. Telkens wanneer u dezelfde prompt met dezelfde seed gebruikt, is de resulterende afbeelding altijd hetzelfde.
- noise_level (optioneel) - Dit voegt ruis toe aan latente vectoren vóór opschaling. Indien gespecificeerd, moet het een geheel getal zijn.
U kunt een afbeelding recursief opschalen door het eindpunt herhaaldelijk aan te roepen om afbeeldingen van steeds hogere kwaliteit te krijgen.
Afbeeldingsgrootte en instantietypen
Afbeeldingen die door het model worden gegenereerd, kunnen tot vier keer zo groot zijn als de originele afbeelding met lage resolutie. Bovendien groeit de geheugenvereiste (GPU-geheugen) van het model met de grootte van de gegenereerde afbeelding. Selecteer daarom een instantietype met een groot GPU-geheugen als u een afbeelding met een reeds hoge resolutie opschaalt of recursief afbeeldingen opschaalt. Zo heeft ml.g5.2xlarge meer GPU-geheugen dan het instantietype ml.p3.2xlarge dat we eerder gebruikten. Raadpleeg voor meer informatie over verschillende instantietypen Amazon EC2-instantietypen.
Stuk voor stuk afbeeldingen opschalen
Om de geheugenvereisten te verminderen bij het opschalen van grote afbeeldingen, kunt u de afbeelding opsplitsen in kleinere delen, ook wel tegelsen schaal elke tegel afzonderlijk op. Nadat de tegels zijn opgeschaald, kunnen ze met elkaar worden gemengd om de uiteindelijke afbeelding te creëren. Bij deze methode moet de prompt voor elke tegel worden aangepast, zodat het model de inhoud van de tegel kan begrijpen en vreemde afbeeldingen kan voorkomen. Het stijlgedeelte van de prompt moet consistent blijven voor alle tegels om het mengen gemakkelijker te maken. Bij gebruik van hogere instellingen voor ruisonderdrukking is het belangrijk om specifieker te zijn in de prompt omdat het model meer vrijheid heeft om de afbeelding aan te passen. Dit kan een uitdaging zijn wanneer de tegel alleen achtergrond bevat of niet direct gerelateerd is aan de hoofdinhoud van de afbeelding.
Beperkingen en vooringenomenheid
Hoewel Stable Diffusion indrukwekkende prestaties levert bij opschaling, heeft het te kampen met verschillende beperkingen en vooroordelen. Deze omvatten, maar zijn niet beperkt tot:
- Het model genereert mogelijk geen nauwkeurige gezichten of ledematen omdat de trainingsgegevens niet voldoende afbeeldingen met deze functies bevatten
- Het model is getraind op de LAION-5B-gegevensset, die inhoud voor volwassenen bevat en mogelijk niet geschikt is voor productgebruik zonder verdere overwegingen
- Het model werkt mogelijk niet goed met niet-Engelse talen omdat het model is getraind op Engelstalige tekst
- Het model kan geen goede tekst in afbeeldingen genereren
Voor meer informatie over beperkingen en vooringenomenheid, zie de Stabiele diffusie-upscaler-modelkaart.
Opruimen
Nadat u klaar bent met het uitvoeren van de notebook, moet u ervoor zorgen dat u alle bronnen verwijdert die tijdens het proces zijn gemaakt om ervoor te zorgen dat de facturering wordt gestopt. De code om het eindpunt op te schonen is beschikbaar in het bijbehorende notitieboekje.
Conclusie
In dit bericht hebben we laten zien hoe u een vooraf getraind Stable Diffusion-upscalermodel kunt implementeren met behulp van JumpStart. We hebben in dit bericht codefragmenten getoond - de volledige code met alle stappen in deze demo is beschikbaar in de Inleiding tot JumpStart – Verbeter de beeldkwaliteit op aanwijzing voorbeeld notitieboekje. Probeer de oplossing zelf uit en stuur ons uw opmerkingen.
Raadpleeg de volgende bronnen voor meer informatie over het model en hoe het werkt:
Bekijk de volgende blogposts voor meer informatie over JumpStart:
Over de auteurs
Dr Vivek Madan is een Applied Scientist bij het Amazon SageMaker JumpStart-team. Hij promoveerde aan de Universiteit van Illinois in Urbana-Champaign en was een postdoctoraal onderzoeker bij Georgia Tech. Hij is een actief onderzoeker op het gebied van machine learning en algoritmeontwerp en heeft artikelen gepubliceerd op EMNLP-, ICLR-, COLT-, FOCS- en SODA-conferenties.
Heiko Hotz is een Senior Solutions Architect voor AI & Machine Learning met een speciale focus op Natural Language Processing (NLP), Large Language Models (LLM's) en Generative AI. Voorafgaand aan deze functie was hij Head of Data Science voor de EU-klantenservice van Amazon. Heiko helpt onze klanten om succesvol te zijn in hun AI/ML-reis op AWS en heeft gewerkt met organisaties in vele sectoren, waaronder verzekeringen, financiële dienstverlening, media en entertainment, gezondheidszorg, nutsbedrijven en productie. In zijn vrije tijd reist Heiko zoveel mogelijk.
- Door SEO aangedreven content en PR-distributie. Word vandaag nog versterkt.
- Platoblockchain. Web3 Metaverse Intelligentie. Kennis versterkt. Toegang hier.
- Bron: https://aws.amazon.com/blogs/machine-learning/upscale-images-with-stable-diffusion-in-amazon-sagemaker-jumpstart/
- 100
- 2022
- 7
- a
- Over
- versnellen
- ACCEPTEREN
- Accepteert
- toegang
- Account
- accuraat
- nauwkeurig
- bereikt
- actieve
- aanpassen
- Extra
- Daarnaast
- Voegt
- Adult
- Na
- tegen
- AI
- AI en machine learning
- AI / ML
- algoritme
- Alles
- toestaat
- al
- altijd
- Amazone
- Amazon Sage Maker
- Amazon SageMaker JumpStart
- en
- aankondigen
- api
- APIs
- toegepast
- passend
- Kunstenaars
- geassocieerd
- webmaster.
- Beschikbaar
- AWS
- achtergrond
- gebaseerde
- omdat
- vaardigheden
- wezen
- vooringenomenheid
- factuuradres
- blending
- Blog
- Blog Posts
- Breken
- bouw
- Dit betekent dat we onszelf en onze geliefden praktisch vergiftigen.
- Kan krijgen
- KAT
- uitdagend
- controle
- Kies
- klasse
- duidelijkere
- van nabij
- code
- opmerkingen
- vergeleken
- conferenties
- consequent
- Containers
- containers
- bevat
- content
- verband
- geconverteerd
- en je merk te creëren
- aangemaakt
- Wij creëren
- gewoonte
- klant
- Klantenservice
- Klanten
- gegevens
- data science
- verlagen
- deep
- diepgaand leren
- Standaard
- tonen
- implementeren
- ingezet
- Design
- detail
- gedetailleerd
- anders
- Verspreiding
- direct
- invalide
- havenarbeider
- Nee
- gedurende
- elk
- Vroeger
- gemakkelijker
- ecommerce
- efficiënt
- beide
- elimineren
- eind tot eind
- Endpoint
- Engels
- verzekeren
- Onstpanning
- toegang
- vastgoed
- EU
- voorbeeld
- voorbeelden
- gezichten
- Kenmerk
- opgehaald
- weinig
- Dien in
- finale
- financieel
- financiële diensten
- VIND DE PLEK DIE PERFECT VOOR JOU IS
- Voornaam*
- geschikt
- Flexibiliteit
- Vlotter
- Focus
- volgend
- formaat
- Vrijheid
- oppompen van
- vol
- verder
- Bovendien
- voortbrengen
- gegenereerde
- generatie
- generatief
- generatieve AI
- krijgen
- Geven
- Glimp
- goed
- GPU
- Groen
- Groeit
- gids
- Guides
- handvat
- hoofd
- gezondheidszorg
- Hoogte
- helpt
- hoge-resolutie
- hoger
- Hit
- Hosting
- Hoe
- How To
- Echter
- HTML
- HTTPS
- Illinois
- beeld
- afbeeldingen
- belangrijk
- indrukwekkend
- verbeteren
- in
- omvatten
- Inclusief
- Laat uw omzet
- individueel
- industrieën
- informatie
- invoer
- instantie
- verzekering
- geïntegreerde
- Interface
- IT
- json
- bekend
- taal
- Talen
- Groot
- Wachttijd
- leiden
- LEARN
- leren
- Laten we
- beperkingen
- Beperkt
- grenzen
- lijnen
- Lijst
- langer
- Kijk
- ziet eruit als
- kwijt te raken
- Laag
- machine
- machine learning
- Hoofd
- maken
- handboek
- handwerk
- handmatig
- productie
- veel
- Match
- Media
- Geheugen
- methode
- miljoenen
- minuten
- ML
- model
- modellen
- meer
- meervoudig
- Naturel
- Natural Language Processing
- Noodzaak
- New
- nlp
- Geluid
- notitieboekje
- November
- aantal
- object
- EEN
- open
- bestellen
- organisaties
- origineel
- Overige
- overzicht
- het te bezitten.
- Paketten
- papieren
- parameters
- deel
- prestatie
- beeld
- stuk
- platform
- Plato
- Plato gegevensintelligentie
- PlatoData
- punt
- positief
- mogelijk
- Post
- Berichten
- bevoegdheden
- voorspellen
- Voorspellingen
- predictor
- presenteren
- prijs
- Voorafgaand
- verwerking
- Product
- zorgen voor
- biedt
- het verstrekken van
- gepubliceerde
- Python
- kwaliteit
- Gerandomiseerd
- Rauw
- klaar
- vast
- vastgoed
- ontvangende
- adviseren
- verwant
- blijven
- HERHAALDELIJK
- te vragen
- verzoeken
- vereisen
- vereiste
- Voorwaarden
- vereist
- onderzoeker
- Resolutie
- Resources
- Reageren
- antwoord
- resultaat
- verkregen
- Resultaten
- terugkeer
- Retourneren
- RGB
- Rol
- lopen
- lopend
- sagemaker
- dezelfde
- Scale
- Wetenschap
- Wetenschapper
- schermen
- scripts
- sdk
- Tweede
- sectie
- secties
- zaad
- gekozen
- verzending
- senior
- service
- Diensten
- het instellen van
- settings
- verscheidene
- moet
- tonen
- Shows
- aanzienlijke
- evenzo
- single
- Maat
- kleinere
- gladder
- So
- oplossing
- Oplossingen
- special
- specifiek
- gespecificeerd
- stabiel
- Land
- Stappen
- gestopt
- studio
- stijl
- geslaagd
- dergelijk
- lijdt
- voldoende
- ondersteuning
- Nemen
- neemt
- Taak
- taken
- team
- tech
- technieken
- testen
- De
- hun
- daarom
- Door
- niet de tijd of
- keer
- naar
- vandaag
- samen
- traditioneel
- Trainen
- getraind
- Trainingen
- reist
- types
- ui
- begrijpen
- universiteit-
- us
- .
- Gebruiker
- User Interface
- utilities
- maakt gebruik van
- waardevol
- Values
- divers
- via
- Video
- manieren
- Wat
- welke
- wit
- wil
- binnen
- zonder
- Mijn werk
- samenwerken
- werkte
- Bedrijven
- You
- Your
- zephyrnet