En novembre 2022, nous annoncé que les clients AWS peuvent générer des images à partir de texte avec Diffusion stable modèles dans Amazon SageMaker JumpStart. Aujourd'hui, nous annonçons une nouvelle fonctionnalité qui vous permet de mettre à l'échelle des images (redimensionner des images sans perte de qualité) avec des modèles de diffusion stable dans JumpStart. Une image basse résolution, floue et pixélisée peut être convertie en une image haute résolution qui apparaît plus lisse, plus claire et plus détaillée. Ce processus, appelé Upscaling, peut être appliqué à la fois aux images réelles et aux images générées par modèles de diffusion stable texte-image. Cela peut être utilisé pour améliorer la qualité d'image dans diverses industries telles que le commerce électronique et l'immobilier, ainsi que pour les artistes et les photographes. De plus, la mise à l'échelle peut améliorer la qualité visuelle des images basse résolution lorsqu'elles sont affichées sur des écrans haute résolution.
Stable Diffusion utilise un algorithme d'intelligence artificielle pour mettre à l'échelle les images, éliminant ainsi le besoin d'un travail manuel qui peut nécessiter de combler manuellement les lacunes d'une image. Il a été formé sur des millions d'images et peut prédire avec précision des images haute résolution, ce qui se traduit par une augmentation significative des détails par rapport aux convertisseurs ascendants d'images traditionnels. De plus, contrairement aux techniques d'apprentissage non profond telles que le plus proche voisin, Stable Diffusion prend en compte le contexte de l'image, en utilisant une invite textuelle pour guider le processus de mise à l'échelle.
Dans cet article, nous fournissons un aperçu de la façon de déployer et d'exécuter l'inférence avec le modèle d'upscaler Stable Diffusion de deux manières : via l'interface utilisateur (UI) de JumpStart dans Amazon SageMakerStudio, et par programmation via API JumpStart disponible dans le Kit de développement logiciel (SDK) SageMaker Python.
Vue d'ensemble de la solution
Les images suivantes montrent des exemples de mise à l'échelle effectuée par le modèle. Sur la gauche se trouve l'image basse résolution d'origine agrandie pour correspondre à la taille de l'image générée par le modèle. A droite se trouve l'image générée par le modèle.
La première image générée est le résultat d'une image de chat à basse résolution et de l'invite "un chat blanc".
La deuxième image générée est le résultat d'une image de papillon basse résolution et de l'invite "un papillon sur une feuille verte".
L'exécution de grands modèles comme Stable Diffusion nécessite des scripts d'inférence personnalisés. Vous devez exécuter des tests de bout en bout pour vous assurer que le script, le modèle et l'instance souhaitée fonctionnent ensemble efficacement. JumpStart simplifie ce processus en fournissant des scripts prêts à l'emploi qui ont été rigoureusement testés. Vous pouvez accéder à ces scripts en un clic via l'interface utilisateur de Studio ou avec très peu de lignes de code via le API JumpStart.
Les sections suivantes expliquent comment déployer le modèle et exécuter l'inférence à l'aide de l'interface utilisateur de Studio ou des API JumpStart.
Notez qu'en utilisant ce modèle, vous acceptez les Licence CreativeML Open RAIL++-M.
Accéder à JumpStart via l'interface utilisateur de Studio
Dans cette section, nous montrons comment entraîner et déployer des modèles JumpStart via l'interface utilisateur de Studio. La vidéo suivante montre comment trouver le modèle d'upscaler Stable Diffusion pré-entraîné sur JumpStart et le déployer. La page du modèle contient des informations précieuses sur le modèle et son utilisation. Pour l'inférence, nous utilisons le type d'instance ml.p3.2xlarge, car il fournit l'accélération GPU nécessaire pour une latence à faible inférence à un prix bas. Après avoir configuré l'instance d'hébergement SageMaker, choisissez Déployer. Il faudra 5 à 10 minutes pour que le point de terminaison soit opérationnel et prêt à répondre aux demandes d'inférence.
Pour accélérer le temps d'inférence, JumpStart fournit un exemple de bloc-notes qui montre comment exécuter l'inférence sur le point de terminaison nouvellement créé. Pour accéder au bloc-notes dans Studio, choisissez Cahier ouvert dans le Utiliser Endpoint depuis Studio section de la page de point de terminaison du modèle.
Utiliser JumpStart par programmation avec le SDK SageMaker
Vous pouvez utiliser l'interface utilisateur JumpStart pour déployer un modèle pré-formé de manière interactive en quelques clics. Cependant, vous pouvez également utiliser des modèles JumpStart par programmation à l'aide d'API intégrées au SDK SageMaker Python.
Dans cette section, nous choisissons un modèle pré-formé approprié dans JumpStart, déployons ce modèle sur un point de terminaison SageMaker et exécutons l'inférence sur le point de terminaison déployé, le tout à l'aide du SDK Python SageMaker. Les exemples suivants contiennent des extraits de code. Pour le code complet avec toutes les étapes de cette démo, voir le Introduction à JumpStart - Améliorez la qualité de l'image guidée par l'invite exemple de cahier.
Déployer le modèle pré-entraîné
SageMaker utilise des conteneurs Docker pour diverses tâches de construction et d'exécution. JumpStart utilise le Conteneurs d'apprentissage en profondeur SageMaker (DLC) qui sont spécifiques au framework. Nous récupérons d'abord tous les packages supplémentaires, ainsi que les scripts pour gérer la formation et l'inférence pour la tâche sélectionnée. Ensuite, les artefacts de modèle pré-formés sont récupérés séparément avec model_uris
, qui offre de la flexibilité à la plate-forme. Cela permet d'utiliser plusieurs modèles pré-formés avec un seul script d'inférence. Le code suivant illustre ce processus :
Ensuite, nous fournissons ces ressources dans un Modèle SageMaker instance et déployer un point de terminaison :
Une fois notre modèle déployé, nous pouvons en tirer des prédictions en temps réel !
Format d'entrée
Le point de terminaison accepte une image basse résolution sous forme de valeurs RVB brutes ou une image encodée en base64. Le gestionnaire d'inférence décode l'image en fonction de content_type
:
- Pour
content_type = “application/json”
, la charge utile d'entrée doit être un dictionnaire JSON avec les valeurs RVB brutes, une invite textuelle et d'autres paramètres facultatifs - Pour
content_type = “application/json;jpeg”
, la charge utile d'entrée doit être un dictionnaire JSON avec l'image encodée en base64, une invite textuelle et d'autres paramètres facultatifs
Format de sortie
Les exemples de code suivants vous donnent un aperçu de ce à quoi ressemblent les sorties. Comme pour le format d'entrée, le point de terminaison peut répondre avec les valeurs RVB brutes de l'image ou une image encodée en base64. Ceci peut être spécifié en définissant accept
à l'une des deux valeurs :
- Pour
accept = “application/json”
, le point de terminaison renvoie un dictionnaire JSON avec des valeurs RVB pour l'image - Pour
accept = “application/json;jpeg”
, le point de terminaison renvoie un dictionnaire JSON avec l'image JPEG sous forme d'octets encodés avec l'encodage base64.b64
Notez que l'envoi ou la réception de la charge utile avec les valeurs RVB brutes peut atteindre les limites par défaut pour la charge utile d'entrée et la taille de la réponse. Par conséquent, nous vous recommandons d'utiliser l'image encodée en base64 en définissant content_type = “application/json;jpeg”
et les accept = “application/json;jpeg”
.
Le code suivant est un exemple de demande d'inférence :
La réponse du point de terminaison est un objet JSON contenant les images générées et l'invite :
Paramètres pris en charge
Les modèles de conversion ascendante à diffusion stable prennent en charge de nombreux paramètres pour la génération d'images :
- image – Une image basse résolution.
- rapide – Une invite pour guider la génération d'image. Il peut s'agir d'une chaîne ou d'une liste de chaînes.
- num_inference_steps (facultatif) – Le nombre d'étapes de débruitage lors de la génération de l'image. Plus d'étapes conduisent à une image de meilleure qualité. S'il est spécifié, il doit s'agir d'un entier positif. Notez que plus d'étapes d'inférence entraîneront un temps de réponse plus long.
- guidance_scale (facultatif) – Une échelle de guidage plus élevée donne une image plus étroitement liée à l'invite, au détriment de la qualité de l'image. S'il est spécifié, il doit s'agir d'un flottant.
guidance_scale<=1
est ignoré. - negative_prompt (optionnel) – Cela guide la génération d'image par rapport à cette invite. Si spécifié, il doit s'agir d'une chaîne ou d'une liste de chaînes et utilisé avec
guidance_scale
. Siguidance_scale
est désactivé, ceci est également désactivé. De plus, si l'invite est une liste de chaînes, alors negative_prompt doit également être une liste de chaînes. - graine (facultatif) – Cela corrige l'état aléatoire pour la reproductibilité. S'il est spécifié, il doit s'agir d'un nombre entier. Chaque fois que vous utilisez la même invite avec la même graine, l'image résultante sera toujours la même.
- noise_level (optionnel) – Cela ajoute du bruit aux vecteurs latents avant la mise à l'échelle. S'il est spécifié, il doit s'agir d'un nombre entier.
Vous pouvez mettre à l'échelle une image de manière récursive en appelant le point de terminaison à plusieurs reprises pour obtenir des images de qualité de plus en plus élevée.
Taille d'image et types d'instances
Les images générées par le modèle peuvent être jusqu'à quatre fois plus grandes que l'image basse résolution d'origine. De plus, les besoins en mémoire du modèle (mémoire GPU) augmentent avec la taille de l'image générée. Par conséquent, si vous mettez à l'échelle une image déjà haute résolution ou si vous mettez à l'échelle des images de manière récursive, sélectionnez un type d'instance avec une grande mémoire GPU. Par exemple, ml.g5.2xlarge a plus de mémoire GPU que le type d'instance ml.p3.2xlarge que nous avons utilisé précédemment. Pour plus d'informations sur les différents types d'instances, reportez-vous à Types d'instances Amazon EC2.
Mise à l'échelle des images pièce par pièce
Pour réduire les besoins en mémoire lors de la mise à l'échelle d'images volumineuses, vous pouvez diviser l'image en sections plus petites, appelées carrelage, et améliorez chaque tuile individuellement. Une fois les carreaux mis à l'échelle, ils peuvent être mélangés pour créer l'image finale. Cette méthode nécessite d'adapter l'invite pour chaque tuile afin que le modèle puisse comprendre le contenu de la tuile et éviter de créer des images étranges. La partie style de l'invite doit rester cohérente pour toutes les vignettes afin de faciliter la fusion. Lorsque vous utilisez des paramètres de débruitage plus élevés, il est important d'être plus précis dans l'invite car le modèle a plus de liberté pour adapter l'image. Cela peut être difficile lorsque la vignette ne contient que l'arrière-plan ou n'est pas directement liée au contenu principal de l'image.
Limites et biais
Même si Stable Diffusion a des performances impressionnantes en matière de mise à l'échelle, il souffre de plusieurs limitations et biais. Ceux-ci incluent, mais ne sont pas limités à :
- Le modèle peut ne pas générer des visages ou des membres précis car les données d'entraînement n'incluent pas suffisamment d'images avec ces fonctionnalités
- Le modèle a été entraîné sur le Jeu de données LAION-5B, qui a un contenu réservé aux adultes et peut ne pas être adapté à l'utilisation du produit sans autre considération
- Le modèle peut ne pas fonctionner correctement avec des langues autres que l'anglais, car le modèle a été formé sur du texte en anglais
- Le modèle ne peut pas générer un bon texte dans les images
Pour plus d'informations sur les limites et les biais, reportez-vous au Carte de modèle d'upscaler à diffusion stable.
Nettoyer
Une fois que vous avez terminé d'exécuter le bloc-notes, assurez-vous de supprimer toutes les ressources créées au cours du processus pour vous assurer que la facturation est arrêtée. Le code pour nettoyer le point de terminaison est disponible dans le fichier associé cahier.
Conclusion
Dans cet article, nous avons montré comment déployer un modèle d'upscaler Stable Diffusion pré-entraîné à l'aide de JumpStart. Nous avons montré des extraits de code dans ce post - le code complet avec toutes les étapes de cette démo est disponible dans le Introduction à JumpStart - Améliorez la qualité de l'image guidée par l'invite exemple de cahier. Essayez la solution par vous-même et envoyez-nous vos commentaires.
Pour en savoir plus sur le modèle et son fonctionnement, consultez les ressources suivantes :
Pour en savoir plus sur JumpStart, consultez les articles de blog suivants :
À propos des auteurs
Dr Vivek Madan est un scientifique appliqué au sein de l'équipe Amazon SageMaker JumpStart. Il a obtenu son doctorat à l'Université de l'Illinois à Urbana-Champaign et a été chercheur postdoctoral à Georgia Tech. Il est un chercheur actif en apprentissage automatique et en conception d'algorithmes et a publié des articles dans les conférences EMNLP, ICLR, COLT, FOCS et SODA.
Heiko Hotz est un architecte de solutions senior pour l'IA et l'apprentissage automatique avec un accent particulier sur le traitement du langage naturel (NLP), les grands modèles de langage (LLM) et l'IA générative. Avant d'occuper ce poste, il était responsable de la science des données pour le service client européen d'Amazon. Heiko aide nos clients à réussir leur parcours IA/ML sur AWS et a travaillé avec des organisations de nombreux secteurs, notamment l'assurance, les services financiers, les médias et le divertissement, la santé, les services publics et la fabrication. Pendant son temps libre, Heiko voyage autant que possible.
- Contenu propulsé par le référencement et distribution de relations publiques. Soyez amplifié aujourd'hui.
- Platoblockchain. Intelligence métaverse Web3. Connaissance Amplifiée. Accéder ici.
- La source: https://aws.amazon.com/blogs/machine-learning/upscale-images-with-stable-diffusion-in-amazon-sagemaker-jumpstart/
- 100
- 2022
- 7
- a
- A Propos
- accélérer
- Accepter
- Accepte
- accès
- Compte
- Avec cette connaissance vient le pouvoir de prendre
- avec précision
- atteint
- infection
- adapter
- Supplémentaire
- En outre
- Ajoute
- Adulte
- Après
- à opposer à
- AI
- AI et apprentissage automatique
- AI / ML
- algorithme
- Tous
- permet
- déjà
- toujours
- Amazon
- Amazon Sage Maker
- Amazon SageMaker JumpStart
- et les
- Annoncer
- api
- Apis
- appliqué
- approprié
- Artistes
- associé
- automatiquement
- disponibles
- AWS
- fond
- basé
- car
- before
- va
- biais
- facturation
- mélange
- Blog
- Blogue
- Pause
- construire
- appelé
- Peut obtenir
- CHAT
- difficile
- vérifier
- Selectionnez
- classe
- plus clair
- étroitement
- code
- commentaires
- par rapport
- conférences
- cohérent
- Contenant
- Conteneurs
- contient
- contenu
- contexte
- converti
- engendrent
- créée
- La création
- Customiser
- des clients
- Service à la clientèle
- Clients
- données
- science des données
- diminuer
- profond
- l'apprentissage en profondeur
- Réglage par défaut
- démontrer
- déployer
- déployé
- Conception
- détail
- détaillé
- différent
- La diffusion
- directement
- handicapé
- Docker
- Ne fait pas
- pendant
- chacun
- Plus tôt
- plus facilement
- e-commerce
- efficacement
- non plus
- l'élimination
- end-to-end
- Endpoint
- Anglais
- assurer
- Divertissement
- entrée
- biens
- EU
- exemple
- exemples
- visages
- Fonctionnalité
- Récupéré
- few
- Déposez votre dernière attestation
- finale
- la traduction de documents financiers
- services financiers
- Trouvez
- Prénom
- s'adapter
- Flexibilité
- flotteur
- Focus
- Abonnement
- le format
- spirituelle
- De
- plein
- plus
- En outre
- générer
- généré
- génération
- génératif
- IA générative
- État de la Georgie
- obtenez
- Donner
- Coup d'œil
- Bien
- GPU
- Vert
- Pousse
- guide
- Guides
- manipuler
- front
- la médecine
- la taille
- aide
- haute résolution
- augmentation
- Frappé
- hébergement
- Comment
- How To
- Cependant
- HTML
- HTTPS
- Illinois
- image
- satellite
- important
- impressionnant
- améliorer
- in
- comprendre
- Y compris
- Améliore
- Individuellement
- secteurs
- d'information
- contribution
- instance
- Assurance
- des services
- Interfaces
- IT
- chemin
- json
- connu
- langue
- Langues
- gros
- Latence
- conduire
- APPRENTISSAGE
- apprentissage
- Allons-y
- limites
- limité
- limites
- lignes
- Liste
- plus long
- Style
- ressembler
- pas à perdre
- Faible
- click
- machine learning
- Entrée
- a prendre une
- Manuel
- travail manuel
- manuellement
- fabrication
- de nombreuses
- Match
- Médias
- Mémoire
- méthode
- des millions
- Minutes
- ML
- modèle
- numériques jumeaux (digital twin models)
- PLUS
- plusieurs
- Nature
- Traitement du langage naturel
- Besoin
- Nouveauté
- nlp
- Bruit
- cahier
- Novembre
- nombre
- objet
- ONE
- ouvert
- de commander
- organisations
- original
- Autre
- vue d'ensemble
- propre
- Forfaits
- papiers
- paramètres
- partie
- performant
- image
- pièce
- plateforme
- Platon
- Intelligence des données Platon
- PlatonDonnées
- Point
- positif
- possible
- Post
- Poteaux
- pouvoirs
- prévoir
- Prédictions
- Predictor
- représentent
- prix
- Avant
- processus
- traitement
- Produit
- fournir
- fournit
- aportando
- publié
- Python
- qualité
- Randomisé
- raw
- solutions
- réal
- biens immobiliers
- recevoir
- recommander
- en relation
- rester
- À PLUSIEURS REPRISES
- nécessaire
- demandes
- exigent
- exigence
- Exigences
- a besoin
- chercheur
- Résolution
- Resources
- Réagir
- réponse
- résultat
- résultant
- Résultats
- retourner
- Retours
- RGB
- Rôle
- Courir
- pour le running
- sagemaker
- même
- Escaliers intérieurs
- Sciences
- Scientifique
- écrans
- scripts
- Sdk
- Deuxièmement
- Section
- les sections
- seed
- choisi
- envoi
- supérieur
- service
- Services
- mise
- Paramétres
- plusieurs
- devrait
- montrer
- Spectacles
- significative
- De même
- unique
- Taille
- faibles
- plus lisse
- So
- sur mesure
- Solutions
- spécial
- groupe de neurones
- spécifié
- stable
- Région
- Étapes
- arrêté
- studio
- Catégorie
- réussi
- tel
- Souffre
- suffisant
- Support
- Prenez
- prend
- Tâche
- tâches
- équipe
- technologie
- techniques
- tests
- Le
- leur
- donc
- Avec
- fiable
- fois
- à
- aujourd'hui
- ensemble
- traditionnel
- Train
- qualifié
- Formation
- voyage
- types
- ui
- comprendre
- université
- us
- utilisé
- Utilisateur
- Interface utilisateur
- les services publics
- utilise
- Précieux
- Valeurs
- divers
- via
- Vidéo
- façons
- Quoi
- qui
- blanc
- sera
- dans les
- sans
- activités principales
- travailler ensemble
- travaillé
- vos contrats
- Vous n'avez
- Votre
- zéphyrnet