Nel novembre 2022, noi ha annunciato con cui i clienti AWS possono generare immagini dal testo Diffusione stabile modelli in JumpStart di Amazon SageMaker. Oggi annunciamo una nuova funzionalità che consente di eseguire l'upscaling delle immagini (ridimensionare le immagini senza perdere qualità) con i modelli Stable Diffusion in JumpStart. Un'immagine a bassa risoluzione, sfocata e pixelata può essere convertita in un'immagine ad alta risoluzione che appare più liscia, chiara e dettagliata. Questo processo, chiamato upscaling, può essere applicato sia a immagini reali che a immagini generate da text-to-image Modelli di diffusione stabile. Questo può essere utilizzato per migliorare la qualità dell'immagine in vari settori come l'e-commerce e il settore immobiliare, nonché per artisti e fotografi. Inoltre, l'upscaling può migliorare la qualità visiva delle immagini a bassa risoluzione quando visualizzate su schermi ad alta risoluzione.
Stable Diffusion utilizza un algoritmo AI per l'upscaling delle immagini, eliminando la necessità di lavoro manuale che potrebbe richiedere il riempimento manuale degli spazi vuoti in un'immagine. È stato addestrato su milioni di immagini ed è in grado di prevedere con precisione immagini ad alta risoluzione, con conseguente aumento significativo dei dettagli rispetto ai tradizionali upscaler di immagini. Inoltre, a differenza delle tecniche di apprendimento non profondo come il vicino più vicino, Stable Diffusion tiene conto del contesto dell'immagine, utilizzando un prompt testuale per guidare il processo di upscaling.
In questo post, forniamo una panoramica su come distribuire ed eseguire l'inferenza con il modello di upscaler Stable Diffusion in due modi: tramite l'interfaccia utente (UI) di JumpStart in Amazon Sage Maker Studio, e a livello di codice API JumpStart disponibile in SDK Python di SageMaker.
Panoramica della soluzione
Le immagini seguenti mostrano esempi di upscaling eseguito dal modello. Sulla sinistra è l'immagine originale a bassa risoluzione ingrandita per corrispondere alla dimensione dell'immagine generata dal modello. Sulla destra è l'immagine generata dal modello.
La prima immagine generata è il risultato dell'immagine di un gatto a bassa risoluzione e del prompt "un gatto bianco".
La seconda immagine generata è il risultato dell'immagine di una farfalla a bassa risoluzione e del prompt "una farfalla su una foglia verde".
L'esecuzione di modelli di grandi dimensioni come Stable Diffusion richiede script di inferenza personalizzati. Devi eseguire test end-to-end per assicurarti che lo script, il modello e l'istanza desiderata funzionino insieme in modo efficiente. JumpStart semplifica questo processo fornendo script pronti all'uso che sono stati ampiamente testati. Puoi accedere a questi script con un clic tramite l'interfaccia utente di Studio o con pochissime righe di codice tramite il API JumpStart.
Le sezioni seguenti forniscono una panoramica su come distribuire il modello ed eseguire l'inferenza utilizzando l'interfaccia utente di Studio o le API JumpStart.
Si noti che utilizzando questo modello, si accetta il Licenza CreativeML Open RAIL++-M.
Accedi a JumpStart tramite l'interfaccia utente di Studio
In questa sezione viene illustrato come addestrare e distribuire i modelli JumpStart tramite l'interfaccia utente di Studio. Il video seguente mostra come trovare il modello di upscaler Stable Diffusion preaddestrato su JumpStart e distribuirlo. La pagina del modello contiene preziose informazioni sul modello e su come utilizzarlo. Per l'inferenza, utilizziamo il tipo di istanza ml.p3.2xlarge perché fornisce l'accelerazione GPU necessaria per una latenza a bassa inferenza a un prezzo contenuto. Dopo aver configurato l'istanza di hosting SageMaker, scegli Schierare. Ci vorranno 5-10 minuti prima che l'endpoint sia attivo e funzionante e pronto a rispondere alle richieste di inferenza.
Per accelerare il tempo necessario per l'inferenza, JumpStart fornisce un notebook di esempio che mostra come eseguire l'inferenza sull'endpoint appena creato. Per accedere al taccuino in Studio, scegli Apri taccuino nel Usa Endpoint da Studio sezione della pagina dell'endpoint del modello.
Usa JumpStart a livello di codice con SageMaker SDK
Puoi utilizzare l'interfaccia utente di JumpStart per distribuire in modo interattivo un modello pre-addestrato in pochi clic. Tuttavia, puoi anche utilizzare i modelli JumpStart in modo programmatico utilizzando le API integrate in SageMaker Python SDK.
In questa sezione, scegliamo un modello pre-addestrato appropriato in JumpStart, distribuiamo questo modello a un endpoint SageMaker ed eseguiamo l'inferenza sull'endpoint distribuito, il tutto utilizzando SageMaker Python SDK. Gli esempi seguenti contengono frammenti di codice. Per il codice completo con tutti i passaggi di questa demo, vedere il file Introduzione a JumpStart – Migliora la qualità dell'immagine guidata dal prompt esempio taccuino.
Distribuire il modello pre-addestrato
SageMaker utilizza i container Docker per varie attività di build e runtime. JumpStart utilizza il Contenitori di deep learning di SageMaker (DLC) che sono specifici del framework. Per prima cosa recuperiamo eventuali pacchetti aggiuntivi, nonché gli script per gestire l'addestramento e l'inferenza per l'attività selezionata. Quindi gli artefatti del modello pre-addestrati vengono recuperati separatamente con model_uris
, che fornisce flessibilità alla piattaforma. Ciò consente di utilizzare più modelli pre-addestrati con un singolo script di inferenza. Il codice seguente illustra questo processo:
Successivamente, forniamo tali risorse in a Modello SageMaker istanza e distribuire un endpoint:
Dopo che il nostro modello è stato distribuito, possiamo ottenere previsioni da esso in tempo reale!
Formato di input
L'endpoint accetta un'immagine a bassa risoluzione come valori RGB non elaborati o un'immagine con codifica Base64. Il gestore di inferenza decodifica l'immagine in base a content_type
:
- Nel
content_type = “application/json”
, il payload di input deve essere un dizionario JSON con i valori RGB non elaborati, un prompt testuale e altri parametri facoltativi - Nel
content_type = “application/json;jpeg”
, il payload di input deve essere un dizionario JSON con l'immagine con codifica Base64, un prompt testuale e altri parametri facoltativi
Formato di output
I seguenti esempi di codice offrono un'idea dell'aspetto degli output. Analogamente al formato di input, l'endpoint può rispondere con i valori RGB non elaborati dell'immagine o un'immagine con codifica base64. Questo può essere specificato dall'impostazione accept
ad uno dei due valori:
- Nel
accept = “application/json”
, l'endpoint restituisce un dizionario JSON con valori RGB per l'immagine - Nel
accept = “application/json;jpeg”
, l'endpoint restituisce un dizionario JSON con l'immagine JPEG come byte codificati con la codifica base64.b64
Tieni presente che l'invio o la ricezione del payload con i valori RGB non elaborati può raggiungere i limiti predefiniti per il payload di input e la dimensione della risposta. Pertanto, si consiglia di utilizzare l'immagine con codifica base64 per impostazione content_type = “application/json;jpeg”
ed accept = “application/json;jpeg”
.
Il codice seguente è un esempio di richiesta di inferenza:
La risposta dell'endpoint è un oggetto JSON contenente le immagini generate e il prompt:
Parametri supportati
I modelli di upscaling Stable Diffusion supportano molti parametri per la generazione di immagini:
- Immagine – Un'immagine a bassa risoluzione.
- pronto – Un prompt per guidare la generazione dell'immagine. Può essere una stringa o un elenco di stringhe.
- num_inference_steps (facoltativo) – Il numero di fasi di riduzione del rumore durante la generazione dell'immagine. Più passaggi portano a un'immagine di qualità superiore. Se specificato, deve essere un numero intero positivo. Tieni presente che più passaggi di inferenza porteranno a un tempo di risposta più lungo.
- guidance_scale (facoltativo) – Una scala di guida più alta produce un'immagine più strettamente correlata al prompt, a scapito della qualità dell'immagine. Se specificato, deve essere un float.
guidance_scale<=1
viene ignorato. - negative_prompt (facoltativo) – Questo guida la generazione dell'immagine rispetto a questo prompt. Se specificato, deve essere una stringa o un elenco di stringhe e utilizzato con
guidance_scale
. Seguidance_scale
è disabilitato, anche questo è disabilitato. Inoltre, se il prompt è un elenco di stringhe, anche negative_prompt deve essere un elenco di stringhe. - seme (facoltativo) – Questo corregge lo stato randomizzato per la riproducibilità. Se specificato, deve essere un numero intero. Ogni volta che usi lo stesso prompt con lo stesso seme, l'immagine risultante sarà sempre la stessa.
- livello_rumore (facoltativo) – Questo aggiunge rumore ai vettori latenti prima dell'upscaling. Se specificato, deve essere un numero intero.
È possibile eseguire l'upscaling ricorsivo di un'immagine richiamando ripetutamente l'endpoint per ottenere immagini di qualità sempre più elevata.
Dimensioni dell'immagine e tipi di istanza
Le immagini generate dal modello possono essere fino a quattro volte più grandi dell'immagine originale a bassa risoluzione. Inoltre, il fabbisogno di memoria del modello (memoria GPU) cresce con la dimensione dell'immagine generata. Pertanto, se stai eseguendo l'upscaling di un'immagine già ad alta risoluzione o stai eseguendo l'upscaling di immagini in modo ricorsivo, seleziona un tipo di istanza con una grande memoria GPU. Ad esempio, ml.g5.2xlarge ha più memoria GPU rispetto al tipo di istanza ml.p3.2xlarge che abbiamo utilizzato in precedenza. Per ulteriori informazioni sui diversi tipi di istanza, fare riferimento a Tipi di istanza Amazon EC2.
Upscaling delle immagini pezzo per pezzo
Per ridurre i requisiti di memoria durante l'upscaling di immagini di grandi dimensioni, è possibile suddividere l'immagine in sezioni più piccole, note come piastrellee migliora ogni riquadro individualmente. Dopo che le tessere sono state ingrandite, possono essere miscelate insieme per creare l'immagine finale. Questo metodo richiede l'adattamento del prompt per ogni riquadro in modo che il modello possa comprendere il contenuto del riquadro ed evitare di creare immagini strane. La parte dello stile del prompt dovrebbe rimanere coerente per tutti i riquadri per facilitare la fusione. Quando si utilizzano impostazioni di riduzione del rumore più elevate, è importante essere più specifici nel prompt perché il modello ha più libertà di adattare l'immagine. Questo può essere difficile quando il riquadro contiene solo lo sfondo o non è direttamente correlato al contenuto principale dell'immagine.
Limitazioni e bias
Anche se Stable Diffusion ha prestazioni impressionanti nell'upscaling, soffre di numerose limitazioni e distorsioni. Questi includono ma non sono limitati a:
- Il modello potrebbe non generare facce o arti accurati perché i dati di addestramento non includono immagini sufficienti con queste caratteristiche
- Il modello è stato addestrato sul Insieme di dati LAION-5B, che ha contenuti per adulti e potrebbe non essere adatto all'uso del prodotto senza ulteriori considerazioni
- Il modello potrebbe non funzionare bene con lingue diverse dall'inglese perché il modello è stato addestrato su testo in lingua inglese
- Il modello non può generare un buon testo all'interno delle immagini
Per ulteriori informazioni su limitazioni e pregiudizi, fare riferimento al Scheda modello upscaler Stable Diffusion.
ripulire
Dopo aver eseguito il notebook, assicurati di eliminare tutte le risorse create nel processo per assicurarti che la fatturazione venga interrotta. Il codice per ripulire l'endpoint è disponibile nel file associate taccuino.
Conclusione
In questo post, abbiamo mostrato come distribuire un modello di upscaler Stable Diffusion preaddestrato utilizzando JumpStart. Abbiamo mostrato frammenti di codice in questo post: il codice completo con tutti i passaggi di questa demo è disponibile in Introduzione a JumpStart – Migliora la qualità dell'immagine guidata dal prompt esempio taccuino. Prova tu stesso la soluzione e inviaci i tuoi commenti.
Per saperne di più sul modello e su come funziona, consulta le seguenti risorse:
Per ulteriori informazioni su JumpStart, consulta i seguenti post del blog:
Informazioni sugli autori
Dott. Vivek Madan è uno scienziato applicato con il team Amazon SageMaker JumpStart. Ha conseguito il dottorato di ricerca presso l'Università dell'Illinois a Urbana-Champaign ed è stato ricercatore post-dottorato presso la Georgia Tech. È un ricercatore attivo nell'apprendimento automatico e nella progettazione di algoritmi e ha pubblicato articoli in conferenze EMNLP, ICLR, COLT, FOCS e SODA.
Heiko Hotz è un Senior Solutions Architect per AI e Machine Learning con un focus speciale su Natural Language Processing (NLP), Large Language Models (LLM) e Generative AI. Prima di ricoprire questo ruolo, è stato Head of Data Science per il servizio clienti UE di Amazon. Heiko aiuta i nostri clienti ad avere successo nel loro percorso AI/ML su AWS e ha lavorato con organizzazioni in molti settori, tra cui assicurazioni, servizi finanziari, media e intrattenimento, sanità, servizi pubblici e produzione. Nel tempo libero Heiko viaggia il più possibile.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- Platoblockchain. Web3 Metaverse Intelligence. Conoscenza amplificata. Accedi qui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/upscale-images-with-stable-diffusion-in-amazon-sagemaker-jumpstart/
- 100
- 2022
- 7
- a
- WRI
- accelerare
- Accetta
- accetta
- accesso
- Il mio account
- preciso
- con precisione
- raggiunto
- attivo
- adattare
- aggiuntivo
- Inoltre
- Aggiunge
- Adulto
- Dopo shavasana, sedersi in silenzio; saluti;
- contro
- AI
- AI e apprendimento automatico
- AI / ML
- algoritmo
- Tutti
- consente
- già
- sempre
- Amazon
- Amazon Sage Maker
- JumpStart di Amazon SageMaker
- ed
- Annunciare
- api
- API
- applicato
- opportuno
- Artisti
- associato
- automaticamente
- disponibile
- AWS
- sfondo
- basato
- perché
- prima
- essendo
- pregiudizio
- fatturazione
- mescolanza
- Blog
- Post di Blog
- Rompere
- costruire
- detto
- Può ottenere
- CAT
- impegnativo
- dai un'occhiata
- Scegli
- classe
- più chiaro
- strettamente
- codice
- Commenti
- rispetto
- conferenze
- coerente
- Contenitore
- Tecnologie Container
- contiene
- contenuto
- contesto
- convertito
- creare
- creato
- Creazione
- costume
- cliente
- Servizio clienti
- Clienti
- dati
- scienza dei dati
- diminuire
- deep
- apprendimento profondo
- Predefinito
- dimostrare
- schierare
- schierato
- Design
- dettaglio
- dettagliati
- diverso
- Emittente
- direttamente
- disabile
- docker
- non
- durante
- ogni
- In precedenza
- più facile
- ecommerce
- in modo efficiente
- o
- eliminando
- da un capo all'altro
- endpoint
- Inglese
- garantire
- Intrattenimento
- iscrizione
- tenuta
- EU
- esempio
- Esempi
- facce
- caratteristica
- Recuperato
- pochi
- Compila il
- finale
- finanziario
- servizi finanziari
- Trovate
- Nome
- in forma
- Flessibilità
- galleggiante
- Focus
- i seguenti
- formato
- La libertà
- da
- pieno
- ulteriormente
- Inoltre
- generare
- generato
- ELETTRICA
- generativo
- AI generativa
- Georgia
- ottenere
- Dare
- Intravedere
- buono
- GPU
- Green
- cresce
- guida
- Guide
- maniglia
- capo
- assistenza sanitaria
- altezza
- aiuta
- ad alta risoluzione
- superiore
- Colpire
- di hosting
- Come
- Tutorial
- Tuttavia
- HTML
- HTTPS
- Illinois
- Immagine
- immagini
- importante
- impressionante
- competenze
- in
- includere
- Compreso
- Aumento
- Individualmente
- industrie
- informazioni
- ingresso
- esempio
- assicurazione
- integrato
- Interfaccia
- IT
- viaggio
- json
- conosciuto
- Lingua
- Le Lingue
- grandi
- Latenza
- portare
- IMPARARE
- apprendimento
- Consente di
- limiti
- Limitato
- limiti
- Linee
- Lista
- più a lungo
- Guarda
- una
- a
- Basso
- macchina
- machine learning
- Principale
- make
- Manuale
- lavoro manuale
- manualmente
- consigliato per la
- molti
- partita
- Media
- Memorie
- metodo
- milioni
- Minuti
- ML
- modello
- modelli
- Scopri di più
- multiplo
- Naturale
- Elaborazione del linguaggio naturale
- Bisogno
- New
- nlp
- Rumore
- taccuino
- Novembre
- numero
- oggetto
- ONE
- aprire
- minimo
- organizzazioni
- i
- Altro
- panoramica
- proprio
- Packages
- documenti
- parametri
- parte
- performance
- immagine
- pezzo
- piattaforma
- Platone
- Platone Data Intelligence
- PlatoneDati
- punto
- positivo
- possibile
- Post
- Post
- potenze
- predire
- Previsioni
- Predictor
- presenti
- prezzo
- Precedente
- processi
- lavorazione
- Prodotto
- fornire
- fornisce
- fornitura
- pubblicato
- Python
- qualità
- Randomizzato
- Crudo
- pronto
- di rose
- beni immobili
- ricevente
- raccomandare
- relazionato
- rimanere
- RIPETUTAMENTE
- richiesta
- richieste
- richiedere
- requisito
- Requisiti
- richiede
- ricercatore
- Risoluzione
- Risorse
- Rispondere
- risposta
- colpevole
- risultante
- Risultati
- ritorno
- problemi
- RGB
- Ruolo
- Correre
- running
- sagemaker
- stesso
- Scala
- Scienze
- Scienziato
- schermi
- script
- sdk
- Secondo
- Sezione
- sezioni
- seme
- selezionato
- invio
- anziano
- servizio
- Servizi
- regolazione
- impostazioni
- alcuni
- dovrebbero
- mostrare attraverso le sue creazioni
- Spettacoli
- significativa
- Allo stesso modo
- singolo
- Taglia
- inferiore
- più liscia
- So
- soluzione
- Soluzioni
- la nostra speciale
- specifico
- specificato
- stabile
- Regione / Stato
- Passi
- fermato
- studio
- style
- di successo
- tale
- soffre
- sufficiente
- supporto
- Fai
- prende
- Task
- task
- team
- Tech
- tecniche
- test
- Il
- loro
- perciò
- Attraverso
- tempo
- volte
- a
- oggi
- insieme
- tradizionale
- Treni
- allenato
- Training
- viaggia
- Tipi di
- ui
- capire
- Università
- us
- uso
- Utente
- Interfaccia utente
- utilità
- utilizza
- Prezioso
- Valori
- vario
- via
- Video
- modi
- Che
- quale
- bianca
- volere
- entro
- senza
- Lavora
- lavorare insieme
- lavorato
- lavori
- Tu
- Trasferimento da aeroporto a Sharm
- zefiro