Logo de AiToolGo

Générer des images avec Amazon Bedrock et Stable Diffusion XL en utilisant Java

Discussion approfondie
Technique
 0
 0
 1
Logo de Stable Diffusion

Stable Diffusion

Black Technology LTD

Cet article fournit un guide utilisateur complet pour Amazon Bedrock, détaillant ses fonctionnalités principales, son utilisation de l'API et des exemples pratiques pour générer des images à l'aide du modèle Stable Diffusion XL de Stability.ai. Il comprend des extraits de code dans différents langages de programmation et aborde l'invocation de modèles, les paramètres et la gestion des erreurs.
  • points principaux
  • perspectives uniques
  • applications pratiques
  • sujets clés
  • idées clés
  • résultats d'apprentissage
  • points principaux

    • 1
      Couverture complète des fonctionnalités d'Amazon Bedrock
    • 2
      Exemples de code détaillés pour une mise en œuvre pratique
    • 3
      Explication claire de l'invocation de modèles et des paramètres
  • perspectives uniques

    • 1
      Utilisation innovante de Stable Diffusion pour la génération d'images
    • 2
      Exploration approfondie de la gestion des erreurs d'API et du dépannage
  • applications pratiques

    • L'article offre des conseils pratiques aux développeurs souhaitant implémenter Amazon Bedrock dans leurs applications, avec des exemples de code actionnables et des meilleures pratiques.
  • sujets clés

    • 1
      Fonctionnalités d'Amazon Bedrock
    • 2
      Génération d'images avec Stable Diffusion
    • 3
      Utilisation des API et gestion des erreurs
  • idées clés

    • 1
      Exemples de code étape par étape pour la génération d'images
    • 2
      Explication détaillée des paramètres du modèle et de leur impact
    • 3
      Focus sur la mise en œuvre pratique et le dépannage
  • résultats d'apprentissage

    • 1
      Comprendre comment invoquer des modèles à l'aide d'Amazon Bedrock
    • 2
      Apprendre à générer des images à l'aide du modèle Stable Diffusion de Stability.ai
    • 3
      Acquérir des connaissances sur la gestion des erreurs d'API et le dépannage
exemples
tutoriels
exemples de code
visuels
fondamentaux
contenu avancé
conseils pratiques
meilleures pratiques

Introduction à Amazon Bedrock et Stable Diffusion XL

Amazon Bedrock est un service entièrement géré qui offre un choix de modèles fondamentaux (FM) performants provenant des principales entreprises d'IA. Stable Diffusion XL, proposé par Stability.ai, est un puissant modèle texte-vers-image capable de générer des images de haute qualité à partir d'invites textuelles. Cet article vous guidera dans le processus d'utilisation d'Amazon Bedrock pour invoquer Stable Diffusion XL afin de générer des images à l'aide du SDK Java.

Configuration du client Bedrock Runtime en Java

Avant de pouvoir commencer à générer des images, vous devez configurer le client Bedrock Runtime dans votre environnement Java. Cela implique la création d'une instance `BedrockRuntimeClient`, sa configuration avec vos identifiants AWS et la région AWS souhaitée. Voici comment vous pouvez procéder : ```java import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeClient; // Créez un client Bedrock Runtime dans la région AWS que vous souhaitez utiliser. // Remplacez DefaultCredentialsProvider par votre fournisseur d'identifiants préféré. var client = BedrockRuntimeClient.builder() .credentialsProvider(DefaultCredentialsProvider.create()) .region(Region.US_EAST_1) .build(); ``` Assurez-vous d'avoir ajouté le SDK AWS pour Java 2.x à vos dépendances de projet.

Élaboration de la requête de génération d'images

L'API `InvokeModel` nécessite un format de charge utile spécifique que le modèle Stable Diffusion XL comprend. Cette charge utile inclut des paramètres tels que l'invite textuelle, le préréglage de style et la graine (seed). Vous pouvez créer une chaîne JSON représentant cette charge utile en utilisant le modèle suivant : ```java var nativeRequestTemplate = """ { "text_prompts": [{ "text": "{{prompt}}" }], "style_preset": "{{style}}", "seed": {{seed}} }"""; // Définissez l'invite pour la génération d'images. var prompt = "Une image stylisée d'un mignon vieux robot steampunk"; // Obtenez une graine aléatoire de 32 bits pour la génération d'images (max. 4 294 967 295). var seed = new BigInteger(31, new SecureRandom()); // Choisissez un préréglage de style. var style = "cinematic"; // Intégrez l'invite, la graine et le style dans la charge utile de requête native du modèle. String nativeRequest = nativeRequestTemplate .replace("{{prompt}}", prompt) .replace("{{seed}}", seed.toString()) .replace("{{style}}", style); ``` Personnalisez les variables `prompt`, `style` et `seed` pour générer différentes images.

Invoquer le modèle Stable Diffusion XL

Avec le client Bedrock Runtime configuré et la charge utile de requête élaborée, vous pouvez maintenant invoquer le modèle Stable Diffusion XL en utilisant la méthode `invokeModel` : ```java import software.amazon.awssdk.core.SdkBytes; import software.amazon.awssdk.core.exception.SdkClientException; // Définissez l'ID du modèle, par exemple, Stable Diffusion XL v1. var modelId = "stability.stable-diffusion-xl-v1"; try { // Encodez et envoyez la requête à Bedrock Runtime. var response = client.invokeModel(request -> request .body(SdkBytes.fromUtf8String(nativeRequest)) .modelId(modelId) ); // Décodez le corps de la réponse. var responseBody = new JSONObject(response.body().asUtf8String()); // Récupérez les données de l'image générée à partir de la réponse du modèle. var base64ImageData = new JSONPointer("/artifacts/0/base64") .queryFrom(responseBody) .toString(); return base64ImageData; } catch (SdkClientException e) { System.err.printf("ERREUR : Impossible d'invoquer '%s'. Raison : %s", modelId, e.getMessage()); throw new RuntimeException(e); } ``` Ce code envoie la requête à Amazon Bedrock et récupère la réponse.

Décodage de la réponse de génération d'images

La réponse de la méthode `invokeModel` contient les données de l'image générée au format base64. Vous devez décoder ces données pour afficher l'image. L'extrait de code ci-dessous montre comment extraire les données de l'image base64 de la réponse : ```java import org.json.JSONObject; import org.json.JSONPointer; // Décodez le corps de la réponse. var responseBody = new JSONObject(response.body().asUtf8String()); // Récupérez les données de l'image générée à partir de la réponse du modèle. var base64ImageData = new JSONPointer("/artifacts/0/base64") .queryFrom(responseBody) .toString(); ```

Affichage de l'image générée

Une fois que vous avez les données de l'image base64, vous pouvez les afficher à l'aide d'une méthode d'affichage d'images appropriée. Le code original utilise une méthode `displayImage`. Vous devrez implémenter cette méthode en fonction de votre framework d'interface utilisateur ou de votre bibliothèque d'images choisie. Un exemple simple pourrait impliquer la conversion de la chaîne base64 en un tableau d'octets, puis l'utilisation d'une bibliothèque d'images pour l'afficher. ```java // En supposant que vous ayez une méthode displayImage displayImage(base64ImageData); ```

Exemple de code Java complet

Voici l'exemple de code Java complet pour invoquer Stable Diffusion XL sur Amazon Bedrock : ```java import org.json.JSONObject; import org.json.JSONPointer; import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.core.SdkBytes; import software.amazon.awssdk.core.exception.SdkClientException; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeClient; import java.math.BigInteger; import java.security.SecureRandom; import static com.example.bedrockruntime.libs.ImageTools.displayImage; public class InvokeModel { public static String invokeModel() { // Créez un client Bedrock Runtime dans la région AWS que vous souhaitez utiliser. // Remplacez DefaultCredentialsProvider par votre fournisseur d'identifiants préféré. var client = BedrockRuntimeClient.builder() .credentialsProvider(DefaultCredentialsProvider.create()) .region(Region.US_EAST_1) .build(); // Définissez l'ID du modèle, par exemple, Stable Diffusion XL v1. var modelId = "stability.stable-diffusion-xl-v1"; // L'API InvokeModel utilise la charge utile native du modèle. // Apprenez-en davantage sur les paramètres d'inférence disponibles et les champs de réponse à l'adresse : // https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-diffusion-1-0-text-image.html var nativeRequestTemplate = """ { "text_prompts": [{ "text": "{{prompt}}" }], "style_preset": "{{style}}", "seed": {{seed}} }"""; // Définissez l'invite pour la génération d'images. var prompt = "Une image stylisée d'un mignon vieux robot steampunk"; // Obtenez une graine aléatoire de 32 bits pour la génération d'images (max. 4 294 967 295). var seed = new BigInteger(31, new SecureRandom()); // Choisissez un préréglage de style. var style = "cinematic"; // Intégrez l'invite, la graine et le style dans la charge utile de requête native du modèle. String nativeRequest = nativeRequestTemplate .replace("{{prompt}}", prompt) .replace("{{seed}}", seed.toString()) .replace("{{style}}", style); try { // Encodez et envoyez la requête à Bedrock Runtime. var response = client.invokeModel(request -> request .body(SdkBytes.fromUtf8String(nativeRequest)) .modelId(modelId) ); // Décodez le corps de la réponse. var responseBody = new JSONObject(response.body().asUtf8String()); // Récupérez les données de l'image générée à partir de la réponse du modèle. var base64ImageData = new JSONPointer("/artifacts/0/base64") .queryFrom(responseBody) .toString(); return base64ImageData; } catch (SdkClientException e) { System.err.printf("ERREUR : Impossible d'invoquer '%s'. Raison : %s", modelId, e.getMessage()); throw new RuntimeException(e); } } public static void main(String[] args) { System.out.println("Génération de l'image. Cela peut prendre quelques secondes..."); String base64ImageData = invokeModel(); displayImage(base64ImageData); } } ```

Ressources supplémentaires pour Amazon Bedrock et le SDK AWS

Pour plus d'informations sur Amazon Bedrock, le SDK AWS pour Java et Stable Diffusion XL, consultez les ressources suivantes : * [Documentation Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/) * [Référence de l'API AWS SDK for Java 2.x](https://sdk.amazonaws.com/java/api/latest/) * [Dépôt d'exemples de code AWS sur GitHub](https://github.com/awsdocs/aws-doc-sdk-examples) * [Documentation Stable Diffusion XL](https://stability.ai/)

 Lien original : https://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/bedrock-runtime_example_bedrock-runtime_InvokeModel_StableDiffusion_section.html

Logo de Stable Diffusion

Stable Diffusion

Black Technology LTD

Commentaire(0)

user's avatar

    Outils connexes