Im November 2022 haben wir angekündigt mit denen AWS-Kunden Bilder aus Text generieren können Stable Diffusion Modelle in Amazon SageMaker-JumpStart. Heute kündigen wir eine neue Funktion an, mit der Sie Bilder mit Stable Diffusion-Modellen in JumpStart hochskalieren (Bildgröße ohne Qualitätsverlust ändern) können. Ein Bild mit niedriger Auflösung, verschwommen und verpixelt kann in ein hochauflösendes Bild umgewandelt werden, das glatter, klarer und detaillierter erscheint. Dieser Prozess, genannt Upscaling, kann sowohl auf reale Bilder als auch auf Bilder angewendet werden, die von generiert wurden Text-zu-Bild Stabile Diffusionsmodelle. Dies kann zur Verbesserung der Bildqualität in verschiedenen Branchen wie E-Commerce und Immobilien sowie für Künstler und Fotografen verwendet werden. Außerdem kann Hochskalieren die visuelle Qualität von Bildern mit niedriger Auflösung verbessern, wenn sie auf Bildschirmen mit hoher Auflösung angezeigt werden.
Stable Diffusion verwendet einen KI-Algorithmus, um Bilder hochzuskalieren, sodass keine manuelle Arbeit erforderlich ist, die möglicherweise das manuelle Füllen von Lücken in einem Bild erfordert. Es wurde mit Millionen von Bildern trainiert und kann hochauflösende Bilder genau vorhersagen, was zu einer deutlichen Detailverbesserung im Vergleich zu herkömmlichen Bild-Upscalern führt. Darüber hinaus berücksichtigt Stable Diffusion im Gegensatz zu Nicht-Deep-Learning-Techniken wie Nearest Neighbor den Kontext des Bildes und verwendet eine Textaufforderung, um den Upscaling-Prozess zu steuern.
In diesem Beitrag geben wir einen Überblick darüber, wie die Inferenz mit dem Upscaler-Modell Stable Diffusion auf zwei Arten bereitgestellt und ausgeführt wird: über die Benutzeroberfläche (UI) von JumpStart in Amazon SageMaker-Studio, und programmgesteuert durch JumpStart-APIs erhältlich in der SageMaker Python-SDK.
Lösungsüberblick
Die folgenden Bilder zeigen Beispiele für die vom Modell durchgeführte Hochskalierung. Auf der linken Seite ist das Originalbild mit niedriger Auflösung vergrößert, um der Größe des vom Modell erzeugten Bildes zu entsprechen. Rechts ist das vom Modell generierte Bild.
Das erste generierte Bild ist das Ergebnis eines Katzenbildes mit niedriger Auflösung und der Eingabeaufforderung „eine weiße Katze“.
Das zweite generierte Bild ist das Ergebnis eines Schmetterlingsbildes mit niedriger Auflösung und der Eingabeaufforderung „ein Schmetterling auf einem grünen Blatt“.
Das Ausführen großer Modelle wie Stable Diffusion erfordert benutzerdefinierte Inferenzskripte. Sie müssen End-to-End-Tests durchführen, um sicherzustellen, dass das Skript, das Modell und die gewünschte Instanz effizient zusammenarbeiten. JumpStart vereinfacht diesen Prozess, indem es gebrauchsfertige Skripts bereitstellt, die umfassend getestet wurden. Sie können auf diese Skripte mit einem Klick über die Studio-Benutzeroberfläche oder mit sehr wenigen Codezeilen über die zugreifen JumpStart-APIs.
Die folgenden Abschnitte bieten einen Überblick über die Bereitstellung des Modells und die Ausführung von Inferenzen mithilfe der Studio-Benutzeroberfläche oder der JumpStart-APIs.
Beachten Sie, dass Sie durch die Verwendung dieses Modells dem zustimmen CreativeML Open RAIL++-M-Lizenz.
Greifen Sie über die Studio-Benutzeroberfläche auf JumpStart zu
In diesem Abschnitt zeigen wir, wie Sie JumpStart-Modelle über die Studio-Benutzeroberfläche trainieren und bereitstellen. Das folgende Video zeigt, wie Sie das vortrainierte Stable Diffusion Upscaler-Modell auf JumpStart finden und bereitstellen. Die Modellseite enthält wertvolle Informationen über das Modell und seine Verwendung. Für die Inferenz verwenden wir den Instance-Typ ml.p3.2xlarge, da er die GPU-Beschleunigung bietet, die für eine niedrige Inferenzlatenz zu einem niedrigen Preis erforderlich ist. Nachdem Sie die SageMaker-Hosting-Instanz konfiguriert haben, wählen Sie Deploy. Es dauert 5 bis 10 Minuten, bis der Endpunkt betriebsbereit und bereit ist, auf Inferenzanforderungen zu reagieren.
Um die Zeit bis zur Inferenz zu verkürzen, stellt JumpStart ein Beispiel-Notebook bereit, das zeigt, wie die Inferenz auf dem neu erstellten Endpunkt ausgeführt wird. Um auf das Notizbuch in Studio zuzugreifen, wählen Sie Notizbuch öffnen der Verwenden Sie Endpoint aus Studio Abschnitt der Modellendpunktseite.
Verwenden Sie JumpStart programmgesteuert mit dem SageMaker SDK
Sie können die JumpStart-Benutzeroberfläche verwenden, um ein vortrainiertes Modell mit nur wenigen Klicks interaktiv bereitzustellen. Sie können JumpStart-Modelle jedoch auch programmgesteuert verwenden, indem Sie APIs verwenden, die in das SageMaker Python SDK integriert sind.
In diesem Abschnitt wählen wir ein geeignetes vortrainiertes Modell in JumpStart aus, stellen dieses Modell auf einem SageMaker-Endpunkt bereit und führen die Inferenz auf dem bereitgestellten Endpunkt aus, alles unter Verwendung des SageMaker Python SDK. Die folgenden Beispiele enthalten Codeausschnitte. Den vollständigen Code mit allen Schritten in dieser Demo finden Sie unter Einführung in JumpStart – Verbessern Sie die Bildqualität durch Eingabeaufforderung Beispiel Notizbuch.
Stellen Sie das vorab trainierte Modell bereit
SageMaker verwendet Docker-Container für verschiedene Build- und Laufzeitaufgaben. JumpStart verwendet die SageMaker Deep Learning-Container (DLCs), die Framework-spezifisch sind. Wir rufen zuerst alle zusätzlichen Pakete sowie Skripte ab, um das Training und die Inferenz für die ausgewählte Aufgabe zu handhaben. Dann werden die vortrainierten Modellartefakte separat mit abgerufen model_uris
, was der Plattform Flexibilität verleiht. Dadurch können mehrere vortrainierte Modelle mit einem einzigen Inferenzskript verwendet werden. Der folgende Code veranschaulicht diesen Vorgang:
Als Nächstes stellen wir diese Ressourcen in a bereit SageMaker-Modell Instanz und stellen Sie einen Endpunkt bereit:
Nachdem unser Modell bereitgestellt wurde, können wir daraus Vorhersagen in Echtzeit erhalten!
Eingabeformat
Der Endpunkt akzeptiert ein Bild mit niedriger Auflösung als RGB-Rohwerte oder ein base64-codiertes Bild. Der Inferenzhandler dekodiert das Bild basierend auf content_type
:
- Aussichten für
content_type = “application/json”
, muss die Eingabenutzlast ein JSON-Wörterbuch mit den rohen RGB-Werten, einer Texteingabeaufforderung und anderen optionalen Parametern sein - Aussichten für
content_type = “application/json;jpeg”
, muss die Eingabenutzlast ein JSON-Wörterbuch mit dem base64-codierten Bild, einer Texteingabeaufforderung und anderen optionalen Parametern sein
Ausgabeformat
Die folgenden Codebeispiele geben Ihnen einen Eindruck davon, wie die Ausgaben aussehen. Ähnlich wie beim Eingabeformat kann der Endpunkt mit den rohen RGB-Werten des Bildes oder einem Base64-codierten Bild antworten. Dies kann per Einstellung festgelegt werden accept
auf einen der beiden Werte:
- Aussichten für
accept = “application/json”
, gibt der Endpunkt ein JSON-Wörterbuch mit RGB-Werten für das Bild zurück - Aussichten für
accept = “application/json;jpeg”
, gibt der Endpunkt ein JSON-Wörterbuch mit dem JPEG-Bild als Bytes zurück, die mit base64.b64-Codierung codiert sind
Beachten Sie, dass das Senden oder Empfangen der Nutzlast mit den rohen RGB-Werten die Standardgrenzen für die Eingabenutzlast und die Antwortgröße erreichen kann. Daher empfehlen wir, das base64-codierte Bild per Einstellung zu verwenden content_type = “application/json;jpeg”
und accept = “application/json;jpeg”
.
Der folgende Code ist ein Beispiel für eine Inferenzanforderung:
Die Endpunktantwort ist ein JSON-Objekt, das die generierten Bilder und die Eingabeaufforderung enthält:
Unterstützte Parameter
Stabile Diffusions-Upscaling-Modelle unterstützen viele Parameter für die Bilderzeugung:
- Image – Ein Bild mit niedriger Auflösung.
- Eingabeaufforderung – Eine Aufforderung zur Führung der Bilderzeugung. Es kann eine Zeichenfolge oder eine Liste von Zeichenfolgen sein.
- num_inference_steps (optional) – Die Anzahl der Rauschunterdrückungsschritte während der Bilderzeugung. Mehr Schritte führen zu einer höheren Bildqualität. Falls angegeben, muss es sich um eine positive Ganzzahl handeln. Beachten Sie, dass mehr Inferenzschritte zu einer längeren Reaktionszeit führen.
- guide_scale (optional) – Eine höhere Führungsskala führt zu einem Bild, das näher an der Aufforderung hängt, auf Kosten der Bildqualität. Falls angegeben, muss es sich um einen Float handeln.
guidance_scale<=1
wird ignoriert. - negative_Eingabeaufforderung (optional) – Dies führt die Bilderzeugung gegen diese Aufforderung. Wenn angegeben, muss es sich um eine Zeichenfolge oder eine Liste von Zeichenfolgen handeln und mit verwendet werden
guidance_scale
. Wennguidance_scale
deaktiviert ist, ist diese ebenfalls deaktiviert. Wenn die Eingabeaufforderung eine Liste von Zeichenfolgen ist, muss außerdem negative_prompt auch eine Liste von Zeichenfolgen sein. - Samen (optional) – Dies fixiert den randomisierten Zustand für die Reproduzierbarkeit. Falls angegeben, muss es sich um eine ganze Zahl handeln. Wenn Sie denselben Prompt mit demselben Seed verwenden, ist das resultierende Bild immer dasselbe.
- Geräuschpegel (optional) – Dies fügt latenten Vektoren vor dem Hochskalieren Rauschen hinzu. Falls angegeben, muss es sich um eine ganze Zahl handeln.
Sie können ein Bild rekursiv hochskalieren, indem Sie den Endpunkt wiederholt aufrufen, um Bilder mit immer höherer Qualität zu erhalten.
Bildgröße und Instanztypen
Vom Modell generierte Bilder können bis zu viermal so groß sein wie das ursprüngliche Bild mit niedriger Auflösung. Außerdem wächst der Speicherbedarf des Modells (GPU-Speicher) mit der Größe des generierten Bildes. Wenn Sie also ein bereits hochaufgelöstes Bild hochskalieren oder Bilder rekursiv hochskalieren, wählen Sie einen Instance-Typ mit einem großen GPU-Speicher aus. Beispielsweise hat ml.g5.2xlarge mehr GPU-Speicher als der zuvor verwendete ml.p3.2xlarge-Instance-Typ. Weitere Informationen zu verschiedenen Instanztypen finden Sie unter Amazon EC2-Instanztypen.
Bilder Stück für Stück hochskalieren
Um den Speicherbedarf beim Hochskalieren großer Bilder zu verringern, können Sie das Bild in kleinere Abschnitte aufteilen, sogenannte Fliesen, und skalieren Sie jede Kachel einzeln hoch. Nachdem die Kacheln hochskaliert wurden, können sie zusammengefügt werden, um das endgültige Bild zu erstellen. Bei dieser Methode muss die Eingabeaufforderung für jede Kachel angepasst werden, damit das Modell den Inhalt der Kachel verstehen und das Erstellen seltsamer Bilder vermeiden kann. Der Stilteil der Eingabeaufforderung sollte für alle Kacheln einheitlich bleiben, um das Mischen zu erleichtern. Bei Verwendung höherer Rauschunterdrückungseinstellungen ist es wichtig, in der Eingabeaufforderung genauer zu sein, da das Modell mehr Freiheit hat, das Bild anzupassen. Dies kann schwierig sein, wenn die Kachel nur Hintergrund enthält oder nicht direkt mit dem Hauptinhalt des Bildes in Verbindung steht.
Einschränkungen und Voreingenommenheit
Obwohl Stable Diffusion eine beeindruckende Leistung beim Hochskalieren aufweist, leidet es unter mehreren Einschränkungen und Vorurteilen. Dazu gehören unter anderem:
- Das Modell generiert möglicherweise keine genauen Gesichter oder Gliedmaßen, da die Trainingsdaten nicht genügend Bilder mit diesen Merkmalen enthalten
- Das Modell wurde auf dem trainiert LAION-5B-Datensatz, die nicht jugendfreien Inhalt hat und ohne weitere Überlegungen möglicherweise nicht für die Produktnutzung geeignet ist
- Das Modell funktioniert möglicherweise nicht gut mit nicht-englischen Sprachen, da das Modell mit englischsprachigem Text trainiert wurde
- Das Modell kann keinen guten Text in Bildern generieren
Weitere Informationen zu Einschränkungen und Verzerrungen finden Sie unter Stable Diffusion Upscaler-Modellkarte.
Aufräumen
Nachdem Sie das Notebook ausgeführt haben, müssen Sie alle dabei erstellten Ressourcen löschen, um sicherzustellen, dass die Abrechnung gestoppt wird. Der Code zum Bereinigen des Endpunkts ist in der zugehörigen Datei verfügbar Notizbuch.
Zusammenfassung
In diesem Beitrag haben wir gezeigt, wie Sie ein vortrainiertes Stable-Diffusion-Upscaler-Modell mit JumpStart bereitstellen. Wir haben Codeausschnitte in diesem Beitrag gezeigt – der vollständige Code mit allen Schritten in dieser Demo ist im verfügbar Einführung in JumpStart – Verbessern Sie die Bildqualität durch Eingabeaufforderung Beispiel Notizbuch. Probieren Sie die Lösung selbst aus und senden Sie uns Ihre Kommentare.
Weitere Informationen zum Modell und seiner Funktionsweise finden Sie in den folgenden Ressourcen:
Um mehr über JumpStart zu erfahren, sehen Sie sich die folgenden Blogbeiträge an:
Über die Autoren
Vivek Madan ist ein angewandter Wissenschaftler im Amazon SageMaker JumpStart-Team. Er promovierte an der University of Illinois at Urbana-Champaign und war Postdoktorand an der Georgia Tech. Er ist ein aktiver Forscher in den Bereichen maschinelles Lernen und Algorithmendesign und hat Artikel auf Konferenzen von EMNLP, ICLR, COLT, FOCS und SODA veröffentlicht.
Heiko Hotz ist Senior Solutions Architect für AI & Machine Learning mit besonderem Fokus auf Natural Language Processing (NLP), Large Language Models (LLMs) und Generative AI. Vor dieser Funktion war er Head of Data Science für den EU-Kundendienst von Amazon. Heiko hilft unseren Kunden dabei, ihre KI/ML-Reise auf AWS erfolgreich zu gestalten, und hat mit Organisationen in vielen Branchen zusammengearbeitet, darunter Versicherungen, Finanzdienstleistungen, Medien und Unterhaltung, Gesundheitswesen, Versorgungsunternehmen und Fertigung. In seiner Freizeit reist Heiko so viel wie möglich.
- SEO-gestützte Content- und PR-Distribution. Holen Sie sich noch heute Verstärkung.
- Platoblockkette. Web3-Metaverse-Intelligenz. Wissen verstärkt. Hier zugreifen.
- Quelle: https://aws.amazon.com/blogs/machine-learning/upscale-images-with-stable-diffusion-in-amazon-sagemaker-jumpstart/
- 100
- 2022
- 7
- a
- Über Uns
- beschleunigen
- Akzeptieren
- Akzeptiert
- Zugang
- Konto
- genau
- genau
- erreicht
- aktiv
- automatisch
- Zusätzliche
- zusätzlich
- Fügt
- Erwachsenen-
- Nach der
- gegen
- AI
- KI & Maschinelles Lernen
- AI / ML
- Algorithmus
- Alle
- erlaubt
- bereits
- immer
- Amazon
- Amazon Sage Maker
- Amazon SageMaker-JumpStart
- und
- Bekannt geben
- Bienen
- APIs
- angewandt
- angemessen
- Künstler
- damit verbundenen
- Im Prinzip so, wie Sie es von Google Maps kennen.
- verfügbar
- AWS
- Hintergrund
- basierend
- weil
- Bevor
- Sein
- vorspannen
- Rechnungs-
- Vermischung
- Blog
- Blog-Beiträge
- Break
- bauen
- namens
- Kann bekommen
- CAT
- herausfordernd
- aus der Ferne überprüfen
- Auswählen
- Klasse
- klarer
- eng
- Code
- Bemerkungen
- verglichen
- Kongressbegleitung
- konsistent
- Container
- Behälter
- enthält
- Inhalt
- Kontext
- umgewandelt
- erstellen
- erstellt
- Erstellen
- Original
- Kunde
- Kundenservice
- Kunden
- technische Daten
- Datenwissenschaft
- verringern
- tief
- tiefe Lernen
- Standard
- zeigen
- einsetzen
- Einsatz
- Design
- Detail
- detailliert
- anders
- Rundfunk
- Direkt
- behindert
- Docker
- Tut nicht
- im
- jeder
- Früher
- einfacher
- E-EINKAUF
- effizient
- entweder
- eliminieren
- End-to-End
- Endpunkt
- Englisch
- gewährleisten
- Unterhaltung
- Eintrag
- Sommer
- EU
- Beispiel
- Beispiele
- Gesichter
- Merkmal
- Abgerufen
- wenige
- Reichen Sie das
- Finale
- Revolution
- Finanzdienstleistungen
- Finden Sie
- Vorname
- passen
- Flexibilität
- Schwimmer
- Setzen Sie mit Achtsamkeit
- Folgende
- Format
- Freiheit
- für
- voller
- weiter
- Außerdem
- erzeugen
- erzeugt
- Generation
- generativ
- Generative KI
- Georgien
- bekommen
- ABSICHT
- Blick
- gut
- GPU
- Grün
- Wächst
- Guide
- Anleitungen
- Griff
- ganzer
- Gesundheitswesen
- Höhe
- hilft
- hochauflösenden
- höher
- Hit
- Hosting
- Ultraschall
- Hilfe
- aber
- HTML
- HTTPS
- Illinois
- Image
- Bilder
- wichtig
- beeindruckend
- zu unterstützen,
- in
- das
- Einschließlich
- Erhöhung
- Individuell
- Branchen
- Information
- Varianten des Eingangssignals:
- Instanz
- Versicherung
- integriert
- Schnittstelle
- IT
- Reise
- JSON
- bekannt
- Sprache
- Sprachen
- grosse
- Latency
- führen
- LERNEN
- lernen
- Lasst uns
- Einschränkungen
- Limitiert
- Grenzen
- Linien
- Liste
- länger
- aussehen
- aussehen wie
- verlieren
- Sneaker
- Maschine
- Maschinelles Lernen
- Main
- um
- manuell
- Handarbeit
- manuell
- Herstellung
- viele
- Spiel
- Medien
- Memory
- Methode
- Millionen
- Minuten
- ML
- Modell
- für
- mehr
- mehrere
- Natürliche
- Verarbeitung natürlicher Sprache
- Need
- Neu
- Nlp
- Lärm
- Notizbuch
- November
- Anzahl
- Objekt
- EINEM
- XNUMXh geöffnet
- Auftrag
- Organisationen
- Original
- Andere
- Überblick
- besitzen
- Pakete
- Papiere
- Parameter
- Teil
- Leistung
- ein Bild
- Stück
- Plattform
- Plato
- Datenintelligenz von Plato
- PlatoData
- Points
- positiv
- möglich
- Post
- BLOG-POSTS
- Kräfte
- vorhersagen
- Prognosen
- Predictor
- Gegenwart
- Preis
- Vor
- Prozessdefinierung
- Verarbeitung
- Produkt
- die
- bietet
- Bereitstellung
- veröffentlicht
- Python
- Qualität
- Zufällig
- Roh
- bereit
- echt
- Immobilien
- Empfang
- empfehlen
- bezogene
- bleiben
- WIEDERHOLT
- Anforderung
- Zugriffe
- erfordern
- Anforderung
- Voraussetzungen:
- erfordert
- Forscher
- Auflösung
- Downloads
- Reagieren
- Antwort
- Folge
- was zu
- Die Ergebnisse
- Rückkehr
- Rückgabe
- RGB
- Rollen
- Führen Sie
- Laufen
- sagemaker
- gleich
- Skalieren
- Wissenschaft
- Wissenschaftler
- Bildschirme
- Skripte
- Sdk
- Zweite
- Abschnitt
- Abschnitte
- Samen
- ausgewählt
- Sendung
- Senior
- Lösungen
- Einstellung
- Einstellungen
- mehrere
- sollte
- erklären
- Konzerte
- signifikant
- Ähnlich
- Single
- Größe
- kleinere
- glatter
- So
- Lösung
- Lösungen
- besondere
- spezifisch
- angegeben
- stabil
- Bundesstaat
- Shritte
- gestoppt
- Studio Adressen
- Stil
- erfolgreich
- so
- Leidet
- ausreichend
- Support
- Nehmen
- nimmt
- Aufgabe
- und Aufgaben
- Team
- Tech
- Techniken
- Tests
- Das
- ihr
- deswegen
- Durch
- Zeit
- mal
- zu
- heute
- gemeinsam
- traditionell
- Training
- trainiert
- Ausbildung
- Reisen
- Typen
- ui
- verstehen
- Universität
- us
- -
- Mitglied
- Benutzerschnittstelle
- Dienstprogramme
- die
- wertvoll
- Werte
- verschiedene
- Video
- Wege
- Was
- welche
- Weiß
- werden wir
- .
- ohne
- Arbeiten
- zusammenarbeiten
- gearbeitet
- Werk
- Du
- Ihr
- Zephyrnet