Services d’imagerie Stability AI - Amazon Bedrock

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Services d’imagerie Stability AI

Vous pouvez utiliser Stability AI Image Services avec Amazon Bedrock pour accéder à treize outils de retouche d'image spécialisés conçus pour accélérer les flux de travail créatifs professionnels. Grâce aux services d’imagerie Stability AI, vous pouvez générer des images à partir d’une esquisse, restructurer et relooker une image existante ou supprimer et remplacer des objets dans une image.

Cette section décrit comment effectuer des appels d'inférence vers Stability AI Image Services à l'aide du InvokeModel. Cette section fournit également des exemples de code en Python et des exemples d’images avant et après l’utilisation des services d’imagerie Stability AI.

Les services d’imagerie Stability AI sont disponibles dans les catégories suivantes :

  • Retouche : services de retouche d’images basés sur l’IA, y compris la peinture à l’aide de masques (remplissage génératif) ou de mots. Comprend des outils pour le placement de produits et la publicité, ainsi que des outils de base tels que la suppression de l’arrière-plan.

  • Contrôle : peut prendre des invites, des cartes et d’autres guides. Ces services tirent parti ControlNets de technologies similaires basées sur des modèles de diffusion stable.

Note

L'abonnement à n'importe quel service de modification ou de contrôle Stability AI Image Service vous inscrit automatiquement aux treize services d'imagerie Stability AI disponibles.

Demande et réponse

Le corps de la demande est transmis dans le body champ d'une demande à InvokeModel.

Modèle de champ du corps de la demande d'invocation

Lorsque vous passez un InvokeModel appel à l'aide de Stability AI Image Services, remplissez le champ body avec un objet JSON semblable à celui ci-dessous.

{ 'prompt': 'Create an image of a panda' }

Champ body des réponses à l’invocation du modèle

Lorsque vous passez un InvokeModel appel à l'aide de Stability AI Image Services, la réponse est la suivante :

{ 'seeds': [2130420379], 'finish_reasons': [null], 'images': ['...'] }
  • seeds : (chaîne) liste des amorces permettant de générer des images pour le modèle.

  • finish_reasons : Enum indiquant si la demande a été filtrée ou non. null indiquera que la demande a été acceptée. Valeurs possibles actuelles : "Filter reason: prompt", "Filter reason: output image", "Filter reason: input image", "Inference error", null.

  • images : liste des images générées au format de chaîne Base64.

Pour plus d'informations, consultez https://platform.us.stability. ai/docs/api-reference#tag/v1génération.

Haut de gamme

La section suivante décrit les services d'imagerie haut de gamme Stability AI.

Creative Upscale prend des images entre 64 x 64 et 1 mégapixel et les fait passer à une résolution 4K. Ce service permet de redimensionner les images de 20 à 40 fois tout en préservant et souvent en améliorant la qualité. Creative Upscale fonctionne mieux sur les images très dégradées et ne convient pas aux photos de 1 mégapixel ou plus, car il permet de nombreuses réimaginations.

Les paramètres requis pour Creative Upscale sont les suivants :

  • prompt : ce que vous souhaitez voir dans l’image de sortie. Une invite descriptive forte qui définit clairement les éléments, les couleurs et les sujets permettra d’obtenir de meilleurs résultats. Contrôlez la pondération d’un mot donné à l’aide du format (mot:pondération), où « mot » est le mot dont vous souhaitez contrôler la pondération et « pondération » est une valeur. Une valeur comprise entre 0 et 1,0 réduit l’accent sur le mot et une valeur comprise entre 1,1 et 2 met l’accent dessus. Par exemple : « Le ciel était d’un (bleu:0,3) et d’un (vert:1,8) vifs » refléterait un ciel bleu et vert, mais davantage vert que bleu. 0 caractères minimum et 10 000 caractères maximum.

  • image ‐ (chaîne) L'image Base64 à augmenter. Chaque côté de l’image doit mesurer au moins 64 pixels. Le nombre total de pixels doit être compris entre 4 096 et 1 048 576 pixels. Formats pris en charge : jpeg, png, webp.

Les paramètres suivants sont facultatifs :

  • créativité ‐ (nombre) Indique à quel point le modèle doit être créatif lors de la mise à l'échelle d'une image. Des valeurs plus élevées permettront d'ajouter plus de détails à l'image lors de la mise à l'échelle. Plage comprise entre 0,1 et 0,5. Par défaut 0,3

  • negative_prompt : (chaîne) texte de présentation décrivant ce que vous ne souhaitez pas voir dans l’image de sortie. Il s’agit d’une fonctionnalité avancée. 10 000 caractères maximum.

  • seed : (nombre) valeur spécifique utilisée pour indiquer le « caractère aléatoire » de la génération. (Omettez ce paramètre ou transmettez 0 pour utiliser une amorce aléatoire.) Plage de valeurs : de 0 à 4294967294. Valeur par défaut : 0.

  • output_format : (chaîne) indique le type de contenu de l’image générée. Enum : jpeg, png, webp. Valeur par défaut : png.

  • style_preset : guide le modèle d’image vers un style particulier. Enum : modèle 3D, film analogique, anime, cinématographique, bande dessinée, art numérique, amélioration, art fantastique, isométrique, dessin au trait, low-poly, composé de modélisation, néon-punk, origami, photographique, pixel art, texture de tuile.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-creative-upscale-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "This dreamlike digital art captures a vibrant, kaleidoscopic Big Ben in London", "creativity": 0.30 } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-creative-upscale-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "This dreamlike digital art captures a vibrant, kaleidoscopic Big Ben in London", "creativity": 0.30 } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

Le tableau suivant montre les images d'entrée et de sortie d'une opération Creative Upscale à l'aide de l'invite suivante : Cette œuvre d'art numérique onirique capture un oiseau kaléidoscopique aux couleurs vives dans une forêt tropicale luxuriante.

Conservative Upscale prend des images entre 64 x 64 et 1 mégapixel et les fait passer à une résolution 4K. Ce service permet de redimensionner les images de 20 à 40 fois tout en préservant tous les aspects. Conservative Upscale minimise les altérations de l'image et ne doit pas être utilisé pour réinventer une image.

Conservative Upscale possède les paramètres requis suivants :

  • prompt : ce que vous souhaitez voir dans l’image de sortie. Une invite descriptive forte qui définit clairement les éléments, les couleurs et les sujets permettra d’obtenir de meilleurs résultats. Contrôlez la pondération d’un mot donné à l’aide du format (mot:pondération), où « mot » est le mot dont vous souhaitez contrôler la pondération et « pondération » est une valeur. Une valeur comprise entre 0 et 1,0 réduit l’accent sur le mot et une valeur comprise entre 1,1 et 2 met l’accent dessus. Par exemple : « Le ciel était d’un (bleu:0,3) et d’un (vert:1,8) vifs » refléterait un ciel bleu et vert, mais davantage vert que bleu. 0 caractères minimum et 10 000 caractères maximum.

  • image ‐ (chaîne) L'image Base64 à augmenter. Chaque côté de l’image doit mesurer au moins 64 pixels. Le nombre total de pixels ne peut pas dépasser 9 437 184 pixels. Les proportions de l’image doivent être comprises entre 1:2,5 et 2,5:1. Formats pris en charge : jpeg, png, webp.

Les paramètres suivants sont facultatifs :

  • créativité ‐ (nombre) Indique à quel point le modèle doit être créatif lors de la mise à l'échelle d'une image. Des valeurs plus élevées permettront d'ajouter plus de détails à l'image lors de la mise à l'échelle. Plage comprise entre 0,1 et 0,5. Par défaut 0,35

  • negative_prompt : (chaîne) texte de présentation décrivant ce que vous ne souhaitez pas voir dans l’image de sortie. Il s’agit d’une fonctionnalité avancée. 10 000 caractères maximum.

  • seed : (nombre) valeur spécifique utilisée pour indiquer le « caractère aléatoire » de la génération. (Omettez ce paramètre ou transmettez 0 pour utiliser une amorce aléatoire.) Plage de valeurs : de 0 à 4294967294. Valeur par défaut : 0.

  • output_format : (chaîne) indique le type de contenu de l’image générée. Enum : jpeg, png, webp. Valeur par défaut : png.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-conservative-upscale-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "This dreamlike digital art captures a vibrant, kaleidoscopic Big Ben in London", "creativity": 0.30 } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-conservative-upscale-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "This dreamlike digital art captures a vibrant, kaleidoscopic Big Ben in London", "creativity": 0.30 } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

Le tableau suivant montre les images d'entrée et de sortie d'une opération Conservative Upscale à l'aide de l'invite suivante : photo d'un poulet géant dans une forêt.

Fast Upscale multiplie par 4 la résolution de l'image grâce à l'IA prédictive et générative. Ce service léger et rapide est idéal pour améliorer la qualité des images compressées, ce qui le rend adapté aux publications sur les réseaux sociaux et à d'autres applications.

Fast Upscale possède les paramètres requis suivants :

  • image ‐ (chaîne) L'image Base64 à augmenter. La largeur doit être comprise entre 32 et 1 536 pixels. La hauteur doit être comprise entre 32 et 1 536 pixels. Le nombre total de pixels doit être compris entre 1 024 et 1 048 576 pixels. Formats pris en charge : jpeg, png, webp.

  • output_format : (chaîne) indique le type de contenu de l’image générée. Enum : jpeg, png, webp. Valeur par défaut : png.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-fast-upscale-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64 } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-fast-upscale-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64 } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

Le tableau suivant montre les images d'entrée et de sortie d'une opération Fast Upscale.

Retouche

La section suivante décrit les services de retouche d’images Stability AI.

Inpaint modifie les images de manière intelligente en remplissant (ou en remplaçant) des zones spécifiées avec (ou par) du nouveau contenu basé sur le contenu d’une image de masque.

Voici les paramètres obligatoires d’Inpaint :

  • prompt : ce que vous souhaitez voir dans l’image de sortie. Une invite descriptive forte qui définit clairement les éléments, les couleurs et les sujets permettra d’obtenir de meilleurs résultats. Contrôlez la pondération d’un mot donné à l’aide du format (mot:pondération), où « mot » est le mot dont vous souhaitez contrôler la pondération et « pondération » est une valeur. Une valeur comprise entre 0 et 1,0 réduit l’accent sur le mot et une valeur comprise entre 1,1 et 2 met l’accent dessus. Par exemple : « Le ciel était d’un (bleu:0,3) et d’un (vert:1,8) vifs » refléterait un ciel bleu et vert, mais davantage vert que bleu. 0 caractères minimum et 10 000 caractères maximum.

  • image : (chaîne) image Base64 à peindre. Chaque côté de l’image doit mesurer au moins 64 pixels. Le nombre total de pixels ne peut pas dépasser 9 437 184 pixels. Les proportions de l’image doivent être comprises entre 1:2,5 et 2,5:1. Formats pris en charge : jpeg, png, webp.

Les paramètres suivants sont facultatifs :

  • style_preset : (chaîne) guide le modèle d’image vers un style particulier. Enum : modèle 3D, film analogique, anime, cinématographique, bande dessinée, art numérique, amélioration, art fantastique, isométrique, dessin au trait, low-poly, composé de modélisation, néon-punk, origami, photographique, pixel art, texture de tuile.

  • negative_prompt : (chaîne) texte de présentation décrivant ce que vous ne souhaitez pas voir dans l’image de sortie. Il s’agit d’une fonctionnalité avancée. 10 000 caractères maximum.

  • seed : (nombre) valeur spécifique utilisée pour indiquer le « caractère aléatoire » de la génération. (Omettez ce paramètre ou transmettez 0 pour utiliser une amorce aléatoire.) Plage de valeurs : de 0 à 4294967294. Valeur par défaut : 0.

  • output_format : (chaîne) indique le type de contenu de l’image générée. Enum : jpeg, png, webp. Valeur par défaut : png.

  • mask : (chaîne) contrôle l’intensité du processus de peinture par pixel, soit via une deuxième image (transmise dans ce paramètre), soit via le canal alpha du paramètre d’image.

    • Transmission d’un masque : l’image transmise à ce paramètre doit être une image en noir et blanc qui représente, à chaque pixel, l’intensité de la peinture en fonction du degré d’obscurité ou de lumière du pixel donné. Les pixels entièrement noirs ne représentent aucune intensité de peinture, tandis que les pixels entièrement blancs représentent une intensité maximale. Si le masque possède une taille différente de celle du paramètre d’image, il est automatiquement redimensionné.

    • Prise en charge du canal alpha : si vous ne fournissez pas de masque explicite, celui-ci est dérivé du canal alpha du paramètre d’image. Les pixels transparents sont peints, tandis que les pixels opaques sont préservés. Si une image avec un canal alpha est fournie avec un masque, le masque prévaut.

  • grow_mask : agrandit les bords du masque vers l’extérieur dans toutes les directions selon le nombre de pixels spécifié. La zone étendue autour du masque est floue, ce qui facilite la transition entre le contenu peint et l’image d’origine. Plage de valeurs : de 0 à 20. Valeur par défaut : 5. Essayez ce paramètre si vous remarquez des raccords ou des bords irréguliers autour du contenu peint. Notez qu'une croissance excessive peut masquer les détails les plus fins du masque et and/or fusionner les régions masquées voisines.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.png" mask = "./content/mask.png" region = "us-east-1" model_id = "us.stability.stable-image-inpaint-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') with open(mask, "rb") as mask_file: mask_base64 = base64.b64encode(mask_file.read()).decode('utf-8') params = { "image": image_base64, "mask": mask_base64, "prompt": "artificer of time and space" } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.png" mask = "./content/mask.png" region = "us-east-1" model_id = "us.stability.stable-image-inpaint-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') with open(mask, "rb") as mask_file: mask_base64 = base64.b64encode(mask_file.read()).decode('utf-8') params = { "image": image_base64, "mask": mask_base64, "prompt": "artificer of time and space" } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

Le tableau suivant indique les images d’entrée et de sortie d’une opération Inpaint :

Input

Masque

Output

« Man in metropolis » générée par Stable Image Ultra, invites et retouches par Sanwal Yousaf. Sous licence CC BY 4.0

Outpaint insère du contenu supplémentaire dans une image pour remplir l'espace dans n'importe quelle direction. Comparé à d'autres tentatives automatisées ou manuelles d'extension du contenu d'une image, le service Outpaint minimise les indications indiquant que l'image d'origine a été modifiée.

Outpaint possède les paramètres obligatoires suivants :

  • image ‐ (chaîne) L'image Base64 à surpeindre. Chaque côté de l’image doit mesurer au moins 64 pixels. Le nombre total de pixels ne peut pas dépasser 9 437 184 pixels. Les proportions de l’image doivent être comprises entre 1:2,5 et 2,5:1. Formats pris en charge : jpeg, png, webp.

    Note

    Au moins une direction de sortie : (gauche, droite, haut ou bas) doit être fournie avec une valeur différente de zéro. Pour des résultats de qualité optimale, tenez compte de la composition et du contenu de votre image d'origine lorsque vous choisissez les directions de surpeinture.

Les paramètres suivants sont facultatifs :

  • prompt : ce que vous souhaitez voir dans l’image de sortie. Une invite descriptive forte qui définit clairement les éléments, les couleurs et les sujets permettra d’obtenir de meilleurs résultats. Contrôlez la pondération d’un mot donné à l’aide du format (mot:pondération), où « mot » est le mot dont vous souhaitez contrôler la pondération et « pondération » est une valeur. Une valeur comprise entre 0 et 1,0 réduit l’accent sur le mot et une valeur comprise entre 1,1 et 2 met l’accent dessus. Par exemple : « Le ciel était d’un (bleu:0,3) et d’un (vert:1,8) vifs » refléterait un ciel bleu et vert, mais davantage vert que bleu. 0 caractères minimum et 10 000 caractères maximum.

  • style_preset : (chaîne) guide le modèle d’image vers un style particulier. Enum : modèle 3D, film analogique, anime, cinématographique, bande dessinée, art numérique, amélioration, art fantastique, isométrique, dessin au trait, low-poly, composé de modélisation, néon-punk, origami, photographique, pixel art, texture de tuile.

  • seed : (nombre) valeur spécifique utilisée pour indiquer le « caractère aléatoire » de la génération. (Omettez ce paramètre ou transmettez 0 pour utiliser une amorce aléatoire.) Plage de valeurs : de 0 à 4294967294. Valeur par défaut : 0.

  • output_format : (chaîne) indique le type de contenu de l’image générée. Enum : jpeg, png, webp. Valeur par défaut : png.

  • créativité ‐ (nombre) Indique à quel point le modèle doit être créatif lorsqu'il surpeint une image. Plus les valeurs sont élevées, plus de contenu créatif sera ajouté à l'image lors de la peinture. Plage comprise entre 0,1 et 1,0. Valeur par défaut : 0,5.

  • left ‐ (entier) Nombre de pixels à surpeindre sur le côté gauche de l'image. Au moins une direction de surpeinture doit être fournie avec une valeur différente de zéro. Plage de 0 à 2000. Par défaut 0.

  • right ‐ (entier) Nombre de pixels à surpeindre sur le côté droit de l'image. Au moins une direction de surpeinture doit être fournie avec une valeur différente de zéro. Plage de 0 à 2000. Par défaut 0.

  • up ‐ (entier) Nombre de pixels à surpeindre en haut de l'image. Au moins une direction de surpeinture doit être fournie avec une valeur différente de zéro. Plage de 0 à 2000. Par défaut 0.

  • down ‐ (entier) Nombre de pixels à surpeindre en bas de l'image. Au moins une direction de surpeinture doit être fournie avec une valeur différente de zéro. Plage de 0 à 2000. Par défaut 0.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-outpaint-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "left": 512, "right": 512, "up": 200, "down": 100 } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.png" region = "us-east-1" model_id = "us.stability.stable-outpaint-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "left": 512, "right": 512, "up": 200, "down": 100 } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

Le tableau suivant montre les images d'entrée et de sortie d'une opération Outpaint.

Search and Recolor vous permet de modifier la couleur d’un objet spécifique dans une image à l’aide d’une invite. Ce service est une version spécifique de peinture qui ne nécessite pas de masque. Il segmente automatiquement l’objet et le recolore à l’aide des couleurs demandées dans l’invite.

Voici les paramètres obligatoires de Search and Recolor :

  • prompt : ce que vous souhaitez voir dans l’image de sortie. Une invite descriptive forte qui définit clairement les éléments, les couleurs et les sujets permettra d’obtenir de meilleurs résultats. Contrôlez la pondération d’un mot donné à l’aide du format (mot:pondération), où « mot » est le mot dont vous souhaitez contrôler la pondération et « pondération » est une valeur. Une valeur comprise entre 0 et 1,0 réduit l’accent sur le mot et une valeur comprise entre 1,1 et 2 met l’accent dessus. Par exemple : « Le ciel était d’un (bleu:0,3) et d’un (vert:1,8) vifs » refléterait un ciel bleu et vert, mais davantage vert que bleu. 0 caractères minimum et 10 000 caractères maximum.

  • image : (chaîne) image Base64 à recolorer. Chaque côté de l’image doit mesurer au moins 64 pixels. Le nombre total de pixels ne peut pas dépasser 9 437 184 pixels. Les proportions de l’image doivent être comprises entre 1:2,5 et 2,5:1. Formats pris en charge : jpeg, png, webp.

  • select_prompt : (chaîne) brève description des éléments à rechercher dans l’image. 10 000 caractères maximum.

Les paramètres suivants sont facultatifs :

  • style_preset : (chaîne) guide le modèle d’image vers un style particulier. Enum : modèle 3D, film analogique, anime, cinématographique, bande dessinée, art numérique, amélioration, art fantastique, isométrique, dessin au trait, low-poly, composé de modélisation, néon-punk, origami, photographique, pixel art, texture de tuile.

  • negative_prompt : (chaîne) texte de présentation décrivant ce que vous ne souhaitez pas voir dans l’image de sortie. Il s’agit d’une fonctionnalité avancée. 10 000 caractères maximum.

  • seed : (nombre) valeur spécifique utilisée pour indiquer le « caractère aléatoire » de la génération. (Omettez ce paramètre ou transmettez 0 pour utiliser une amorce aléatoire.) Plage de valeurs : de 0 à 4294967294. Valeur par défaut : 0.

  • output_format : (chaîne) indique le type de contenu de l’image générée. Enum : jpeg, png, webp. Valeur par défaut : png.

  • grow_mask : agrandit les bords du masque vers l’extérieur dans toutes les directions selon le nombre de pixels spécifié. La zone étendue autour du masque est floue, ce qui facilite la transition entre le contenu peint et l’image d’origine. Plage de valeurs : de 0 à 20. Valeur par défaut : 5. Essayez ce paramètre si vous remarquez des raccords ou des bords irréguliers autour du contenu peint. Notez qu'une croissance excessive peut masquer les détails les plus fins du masque et and/or fusionner les régions masquées voisines.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.png" region = "us-east-1" model_id = "us.stability.stable-image-search-recolor-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "pink jacket", "select_prompt": "jacket" } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.png" region = "us-east-1" model_id = "us.stability.stable-image-search-recolor-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "pink jacket", "select_prompt": "jacket" } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

Le tableau suivant montre les images d’entrée et de sortie d’une opération Search and Recolor à l’aide de l’invite suivante : veste rose.

Input

Output

« Man wearing puffer jacket » générée par Stable Image Ultra, invites et retouches par Sanwal Yousaf. Sous licence CC BY 4.0

Search and Replace vous permet d’identifier un objet à remplacer dans un langage simple à l’aide d’une invite de recherche. Le service segmente automatiquement l’objet et le remplace par l’objet demandé dans l’invite sans avoir besoin de masque.

Voici les paramètres obligatoires de Search and Replace :

  • prompt : ce que vous souhaitez voir dans l’image de sortie. Une invite descriptive forte qui définit clairement les éléments, les couleurs et les sujets permettra d’obtenir de meilleurs résultats. Contrôlez la pondération d’un mot donné à l’aide du format (mot:pondération), où « mot » est le mot dont vous souhaitez contrôler la pondération et « pondération » est une valeur. Une valeur comprise entre 0 et 1,0 réduit l’accent sur le mot et une valeur comprise entre 1,1 et 2 met l’accent dessus. Par exemple : « Le ciel était d’un (bleu:0,3) et d’un (vert:1,8) vifs » refléterait un ciel bleu et vert, mais davantage vert que bleu. 0 caractères minimum et 10 000 caractères maximum.

  • image : (chaîne) image Base64 à recolorer. Chaque côté de l’image doit mesurer au moins 64 pixels. Le nombre total de pixels ne peut pas dépasser 9 437 184 pixels. Les proportions de l’image doivent être comprises entre 1:2,5 et 2,5:1. Formats pris en charge : jpeg, png, webp.

  • search_prompt : (chaîne) brève description des éléments à peindre dans l’image. 10 000 caractères maximum.

Les paramètres suivants sont facultatifs :

  • style_preset : (chaîne) guide le modèle d’image vers un style particulier. Enum : modèle 3D, film analogique, anime, cinématographique, bande dessinée, art numérique, amélioration, art fantastique, isométrique, dessin au trait, low-poly, composé de modélisation, néon-punk, origami, photographique, pixel art, texture de tuile.

  • negative_prompt : (chaîne) texte de présentation décrivant ce que vous ne souhaitez pas voir dans l’image de sortie. Il s’agit d’une fonctionnalité avancée. 10 000 caractères maximum.

  • seed : (nombre) valeur spécifique utilisée pour indiquer le « caractère aléatoire » de la génération. (Omettez ce paramètre ou transmettez 0 pour utiliser une amorce aléatoire.) Plage de valeurs : de 0 à 4294967294. Valeur par défaut : 0.

  • output_format : (chaîne) indique le type de contenu de l’image générée. Enum : jpeg, png, webp. Valeur par défaut : png.

  • grow_mask : agrandit les bords du masque vers l’extérieur dans toutes les directions selon le nombre de pixels spécifié. La zone étendue autour du masque est floue, ce qui facilite la transition entre le contenu peint et l’image d’origine. Plage de valeurs : de 0 à 20. Valeur par défaut : 5. Essayez ce paramètre si vous remarquez des raccords ou des bords irréguliers autour du contenu peint. Notez qu'une croissance excessive peut masquer les détails les plus fins du masque et and/or fusionner les régions masquées voisines.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.png" region = "us-east-1" model_id = "us.stability.stable-image-search-replace-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "jacket", "search_prompt": "sweater", } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.png" region = "us-east-1" model_id = "us.stability.stable-image-search-replace-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "jacket", "search_prompt": "sweater", } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

Le tableau suivant montre les images d’entrée et de sortie d’une opération Search and Replace à l’aide de l’invite suivante : veste.

Input

Output

« Female model wearing fall sweater » générée par Stable Image Ultra. Invites et retouches par Sanwal Yousaf. Sous licence CC BY 4.0

Erase vous permet de supprimer les éléments indésirables à l’aide de masques d’image, tout en préservant intelligemment la cohérence de l’arrière-plan.

Voici les paramètres obligatoires d’Erase :

  • image : (chaîne) image Base64 faisant l’objet de l’effacement. Chaque côté de l’image doit mesurer au moins 64 pixels. Le nombre total de pixels ne peut pas dépasser 9 437 184 pixels. Les proportions de l’image doivent être comprises entre 1:2,5 et 2,5:1. Formats pris en charge : jpeg, png, webp.

Les paramètres suivants sont facultatifs :

  • seed : (nombre) valeur spécifique utilisée pour indiquer le « caractère aléatoire » de la génération. (Omettez ce paramètre ou transmettez 0 pour utiliser une amorce aléatoire.) Plage de valeurs : de 0 à 4294967294. Valeur par défaut : 0.

  • output_format : (chaîne) indique le type de contenu de l’image générée. Enum : jpeg, png, webp. Valeur par défaut : png.

  • mask : (chaîne) contrôle l’intensité du processus de peinture par pixel, soit via une deuxième image (transmise dans ce paramètre), soit via le canal alpha du paramètre d’image.

    • Transmission d’un masque : l’image transmise à ce paramètre doit être une image en noir et blanc qui représente, à chaque pixel, l’intensité de la peinture en fonction du degré d’obscurité ou de lumière du pixel donné. Les pixels entièrement noirs ne représentent aucune intensité de peinture, tandis que les pixels entièrement blancs représentent une intensité maximale. Si le masque possède une taille différente de celle du paramètre d’image, il est automatiquement redimensionné.

    • Prise en charge du canal alpha : si vous ne fournissez pas de masque explicite, celui-ci est dérivé du canal alpha du paramètre d’image. Les pixels transparents sont peints, tandis que les pixels opaques sont préservés. Si une image avec un canal alpha est fournie avec un masque, le masque prévaut.

  • grow_mask : agrandit les bords du masque vers l’extérieur dans toutes les directions selon le nombre de pixels spécifié. La zone étendue autour du masque est floue, ce qui facilite la transition entre le contenu peint et l’image d’origine. Plage de valeurs : de 0 à 20. Valeur par défaut : 5. Essayez ce paramètre si vous remarquez des raccords ou des bords irréguliers autour du contenu peint. Notez qu'une croissance excessive peut masquer les détails les plus fins du masque et and/or fusionner les régions masquées voisines.

Note

Pour des résultats d’effacement optimaux, assurez-vous que votre masque définit avec précision les zones à supprimer. Si aucun masque explicite n’est fourni, le service utilise le canal alpha de l’image d’entrée. Le masque prévaut si les deux sont fournis.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.png" mask = "./content/mask.png" region = "us-east-1" model_id = "us.stability.stable-image-erase-object-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8'), with open(mask, "rb") as mask_file: mask_base64 = base64.b64encode(mask_file.read()).decode('utf-8') params = { "image": image_base64, "mask": mask_base64 } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.png" mask = "./content/mask.png" region = "us-east-1" model_id = "us.stability.stable-image-erase-object-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8'), with open(mask, "rb") as mask_file: mask_base64 = base64.b64encode(mask_file.read()).decode('utf-8') params = { "image": image_base64, "mask": mask_base64 } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

Le tableau suivant indique les images d’entrée et de sortie d’une opération Erase :

Input

Masque

Output

« Students Desk » générée par Stable Image Ultra. Invites et retouches par Sanwal Yousaf. Sous licence CC BY 4.0

Remove Background vous permet d’isoler des sujets de l’arrière-plan avec précision.

Voici les paramètres obligatoires de Remove Background :

  • image : (chaîne) image Base64 dont vous souhaitez supprimer l’arrière-plan. Chaque côté de l’image doit mesurer au moins 64 pixels. Le nombre total de pixels ne peut pas dépasser 9 437 184 pixels. Les proportions de l’image doivent être comprises entre 1:2,5 et 2,5:1. Formats pris en charge : jpeg, png, webp.

Les paramètres suivants sont facultatifs :

  • output_format : (chaîne) indique le type de contenu de l’image générée. Enum : jpeg, png, webp. Valeur par défaut : png.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.png" region = "us-east-1" model_id = "us.stability.stable-image-remove-background-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.png" region = "us-east-1" model_id = "us.stability.stable-image-remove-background-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64 } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

Le tableau suivant présente les images d’entrée et de sortie d’une opération Remove Background :

Input

Output

« Female model wearing fall sweater » générée par Stable Image Ultra. Invites et retouches par Sanwal Yousaf. Sous licence CC BY 4.0

Contrôle

La section suivante décrit les services de contrôle d’images Stability AI.

Améliorez vos esquisses dessinées à la main pour obtenir des résultats raffinés avec un contrôle précis. Pour les images autres que des esquisses, Control Sketch permet de manipuler en détail l’aspect final en exploitant les lignes de contour et les arêtes de l’image.

Voici les paramètres obligatoires de Control Sketch :

  • prompt : ce que vous souhaitez voir dans l’image de sortie. Une invite descriptive forte qui définit clairement les éléments, les couleurs et les sujets permettra d’obtenir de meilleurs résultats. Contrôlez la pondération d’un mot donné à l’aide du format (mot:pondération), où « mot » est le mot dont vous souhaitez contrôler la pondération et « pondération » est une valeur. Une valeur comprise entre 0 et 1,0 réduit l’accent sur le mot et une valeur comprise entre 1,1 et 2 met l’accent dessus. Par exemple : « Le ciel était d’un (bleu:0,3) et d’un (vert:1,8) vifs » refléterait un ciel bleu et vert, mais davantage vert que bleu. 0 caractères minimum et 10 000 caractères maximum.

  • image : (chaîne) image Base64 de l’esquisse. Chaque côté de l’image doit mesurer au moins 64 pixels. Le nombre total de pixels ne peut pas dépasser 9 437 184 pixels. Les proportions de l’image doivent être comprises entre 1:2,5 et 2,5:1. Formats pris en charge : jpeg, png, webp.

Les paramètres suivants sont facultatifs :

  • control_strength : (nombre) influence ou contrôle de l’image sur la génération. Représenté sous la forme d’une valeur flottante comprise entre 0 et 1, où 0 représente l’influence la plus faible et 1 la plus forte. Valeur par défaut : 0,7.

  • negative_prompt : (chaîne) texte de présentation décrivant ce que vous ne souhaitez pas voir dans l’image de sortie. Il s’agit d’une fonctionnalité avancée. 10 000 caractères maximum.

  • seed : (nombre) valeur spécifique utilisée pour indiquer le « caractère aléatoire » de la génération. (Omettez ce paramètre ou transmettez 0 pour utiliser une amorce aléatoire.) Plage de valeurs : de 0 à 4294967294. Valeur par défaut : 0.

  • output_format : (chaîne) indique le type de contenu de l’image générée. Enum : jpeg, png, webp. Valeur par défaut : png.

  • style_preset : guide le modèle d’image vers un style particulier. Enum : modèle 3D, film analogique, anime, cinématographique, bande dessinée, art numérique, amélioration, art fantastique, isométrique, dessin au trait, low-poly, composé de modélisation, néon-punk, origami, photographique, pixel art, texture de tuile.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-image-control-sketch-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "a house with background of mountains and river flowing nearby" } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-image-control-sketch-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "a house with background of mountains and river flowing nearby" } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

Le tableau suivant montre les images d’entrée et de sortie d’un appel Control Sketch à l’aide de l’invite suivante : une maison avec en arrière-plan des montagnes et une rivière qui coule à proximité.

Input

Output

« House, mountains, and river sketch » de Sanwal Yousaf. Sous licence CC BY 4.0

Control Structure vous permet de générer des images tout en conservant la structure d’une image d’entrée. Cela est particulièrement utile pour les scénarios avancés de création de contenu tels que la recréation de scènes ou le rendu de personnages à partir de modèles.

Voici les paramètres obligatoires de Control Structure :

  • prompt : ce que vous souhaitez voir dans l’image de sortie. Une invite descriptive forte qui définit clairement les éléments, les couleurs et les sujets permettra d’obtenir de meilleurs résultats. Contrôlez la pondération d’un mot donné à l’aide du format (mot:pondération), où « mot » est le mot dont vous souhaitez contrôler la pondération et « pondération » est une valeur. Une valeur comprise entre 0 et 1,0 réduit l’accent sur le mot et une valeur comprise entre 1,1 et 2 met l’accent dessus. Par exemple : « Le ciel était d’un (bleu:0,3) et d’un (vert:1,8) vifs » refléterait un ciel bleu et vert, mais davantage vert que bleu. 0 caractères minimum et 10 000 caractères maximum.

  • image : (chaîne) image Base64 de l’esquisse. Chaque côté de l’image doit mesurer au moins 64 pixels. Le nombre total de pixels ne peut pas dépasser 9 437 184 pixels. Les proportions de l’image doivent être comprises entre 1:2,5 et 2,5:1. Formats pris en charge : jpeg, png, webp.

Les paramètres suivants sont facultatifs :

  • control_strength : (nombre) influence ou contrôle de l’image sur la génération. Représenté sous la forme d’une valeur flottante comprise entre 0 et 1, où 0 représente l’influence la plus faible et 1 la plus forte. Valeur par défaut : 0,7.

  • negative_prompt : (chaîne) texte de présentation décrivant ce que vous ne souhaitez pas voir dans l’image de sortie. Il s’agit d’une fonctionnalité avancée. 10 000 caractères maximum.

  • seed : (nombre) valeur spécifique utilisée pour indiquer le « caractère aléatoire » de la génération. (Omettez ce paramètre ou transmettez 0 pour utiliser une amorce aléatoire.) Plage de valeurs : de 0 à 4294967294. Valeur par défaut : 0.

  • output_format : (chaîne) indique le type de contenu de l’image générée. Enum : jpeg, png, webp. Valeur par défaut : png.

  • style_preset : guide le modèle d’image vers un style particulier. Enum : modèle 3D, film analogique, anime, cinématographique, bande dessinée, art numérique, amélioration, art fantastique, isométrique, dessin au trait, low-poly, composé de modélisation, néon-punk, origami, photographique, pixel art, texture de tuile.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-image-control-structure-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "surreal structure with motion generated sparks lighting the scene" } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-image-control-structure-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "surreal structure with motion generated sparks lighting the scene" } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

Le tableau suivant montre les images d’entrée et de sortie d’une opération Control Structure à l’aide de l’invite suivante : structure surréaliste avec des étincelles générées par le mouvement qui éclairent la scène.

Input

Output

Style Guide vous permet d’extraire des éléments stylistiques d’une image d’entrée, à l’aide desquels vous guidez ensuite la création d’une image de sortie en fonction de l’invite. Le résultat est une nouvelle image dans le même style que l’image d’entrée.

Voici les paramètres obligatoires de Style Guide :

  • prompt : ce que vous souhaitez voir dans l’image de sortie. Une invite descriptive forte qui définit clairement les éléments, les couleurs et les sujets permettra d’obtenir de meilleurs résultats. Contrôlez la pondération d’un mot donné à l’aide du format (mot:pondération), où « mot » est le mot dont vous souhaitez contrôler la pondération et « pondération » est une valeur. Une valeur comprise entre 0 et 1,0 réduit l’accent sur le mot et une valeur comprise entre 1,1 et 2 met l’accent dessus. Par exemple : « Le ciel était d’un (bleu:0,3) et d’un (vert:1,8) vifs » refléterait un ciel bleu et vert, mais davantage vert que bleu. 0 caractères minimum et 10 000 caractères maximum.

  • image : (chaîne) image Base64 de l’esquisse. Chaque côté de l’image doit mesurer au moins 64 pixels. Le nombre total de pixels ne peut pas dépasser 9 437 184 pixels. Les proportions de l’image doivent être comprises entre 1:2,5 et 2,5:1. Formats pris en charge : jpeg, png, webp.

Les paramètres suivants sont facultatifs :

  • aspect_ratio : (chaîne) contrôle les proportions de l’image générée. Ce paramètre n'est valide que pour les text-to-image demandes. Valeur par défaut : 1:1. Enum : 16:9, 1:1, 21:9, 2:3, 3:2, 4:5, 5:4, 9:16, 9:21. Valeur par défaut : 1:1.

  • negative_prompt : (chaîne) texte de présentation décrivant ce que vous ne souhaitez pas voir dans l’image de sortie. Il s’agit d’une fonctionnalité avancée. 10 000 caractères maximum.

  • seed : (nombre) valeur spécifique utilisée pour indiquer le « caractère aléatoire » de la génération. (Omettez ce paramètre ou transmettez 0 pour utiliser une amorce aléatoire.) Plage de valeurs : de 0 à 4294967294. Valeur par défaut : 0.

  • output_format : (chaîne) indique le type de contenu de l’image générée. Enum : jpeg, png, webp. Valeur par défaut : png.

  • fidelity : (nombre) mesure dans laquelle le style de l’image de sortie ressemble à celui de l’image d’entrée. Plage de valeurs : de 0 à 1. Valeur par défaut : 0,5.

  • style_preset : guide le modèle d’image vers un style particulier. Enum : modèle 3D, film analogique, anime, cinématographique, bande dessinée, art numérique, amélioration, art fantastique, isométrique, dessin au trait, low-poly, composé de modélisation, néon-punk, origami, photographique, pixel art, texture de tuile.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-image-style-guide-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "wide shot of modern metropolis" } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-image-style-guide-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "wide shot of modern metropolis" } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

Le tableau suivant montre les images d’entrée et de sortie d’un appel Style Guide à l’aide de l’invite suivante : plan large d’une métropole moderne.

Input

Output

Style Transfer vous permet d’appliquer les caractéristiques visuelles des images de style de référence aux images cible. Alors que le service Style Guide extrait des éléments stylistiques d’une image d’entrée qui lui permettent de guider la création d’une image de sortie en fonction de l’invite, Style Transfer transforme spécifiquement le contenu existant tout en préservant la composition d’origine. Cet outil permet de créer du contenu cohérent sur plusieurs ressources.

Voici les paramètres obligatoires de Style Transfer :

  • init_image : (chaîne) image Base64 contenant le sujet que vous souhaitez redéfinir. Chaque côté de l’image doit mesurer au moins 64 pixels. Le nombre total de pixels ne peut pas dépasser 9 437 184 pixels. Les proportions de l’image doivent être comprises entre 1:2,5 et 2,5:1. Formats pris en charge : jpeg, png, webp.

  • style_image : (chaîne) image Base64 contenant le sujet que vous souhaitez redéfinir. Chaque côté de l’image doit mesurer au moins 64 pixels. Le nombre total de pixels ne peut pas dépasser 9 437 184 pixels. Les proportions de l’image doivent être comprises entre 1:2,5 et 2,5:1. Formats pris en charge : jpeg, png, webp.

Les paramètres suivants sont facultatifs :

  • prompt : (chaîne) ce que vous souhaitez voir dans l’image de sortie. Une invite descriptive forte qui définit clairement les éléments, les couleurs et les sujets permettra d’obtenir de meilleurs résultats. Contrôlez la pondération d’un mot donné à l’aide du format (mot:pondération), où « mot » est le mot dont vous souhaitez contrôler la pondération et « pondération » est une valeur. Une valeur comprise entre 0 et 1,0 réduit l’accent sur le mot et une valeur comprise entre 1,1 et 2 met l’accent dessus. Par exemple : « Le ciel était d’un (bleu:0,3) et d’un (vert:1,8) vifs » refléterait un ciel bleu et vert, mais davantage vert que bleu.

  • negative_prompt : (chaîne) texte de présentation décrivant ce que vous ne souhaitez pas voir dans l’image de sortie. Il s’agit d’une fonctionnalité avancée. 10 000 caractères maximum.

  • seed : (nombre) valeur spécifique utilisée pour indiquer le « caractère aléatoire » de la génération. (Omettez ce paramètre ou transmettez 0 pour utiliser une amorce aléatoire.) Plage de valeurs : de 0 à 4294967294. Valeur par défaut : 0.

  • output_format : (chaîne) indique le type de contenu de l’image générée. Enum : jpeg, png, webp. Valeur par défaut : png.

  • composition_fidelity : (nombre) mesure dans laquelle le style de l’image de sortie ressemble à celui de l’image d’entrée. Plage de valeurs : de 0 à 1. Valeur par défaut : 0,9.

  • style_strength : (nombre) parfois appelé débruitage, ce paramètre contrôle l’influence du paramètre style_image sur l’image générée. La valeur 0 produirait une image identique à l’entrée. La valeur 1 serait comme si vous n’aviez transmis aucune image. Plage de valeurs : de 0 à 1. Valeur par défaut : 1.

  • change_strength : (nombre) mesure dans laquelle l’image d’origine doit changer. Plage de valeurs : de 0,1 à 1. Valeur par défaut : 0,9.

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.jpg" style_image = "./content/style.jpg" region = "us-east-1" model_id = "us.stability.stable-style-transfer-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') with open(style_image, "rb") as style_image_file: style_image_base64 = base64.b64encode(style_image_file.read()).decode('utf-8') params = { "init_image": image_base64, "style_image": style_image_base64, "prompt": "statue" } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/cat_statue_512x512.jpg" style_image = "./content/glowbot_style.jpg" region = "us-east-1" model_id = "us.stability.stable-style-transfer-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') with open(style_image, "rb") as style_image_file: style_image_base64 = base64.b64encode(style_image_file.read()).decode('utf-8') params = { "init_image": image_base64, "style_image": style_image_base64, "prompt": "statue" } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

Le tableau suivant indique les images d’entrée et de sortie d’un appel Style Transfer :

Input

Style

Output