Automatisez le processus de modification des arrière-plans des images à l'aide d'Amazon Bedrock et d'AWS Step Functions | Services Web Amazon

Automatisez le processus de modification des arrière-plans des images à l'aide d'Amazon Bedrock et d'AWS Step Functions | Services Web Amazon

De nombreux clients, notamment dans les domaines de la publicité créative, des médias et du divertissement, du commerce électronique et de la mode, ont souvent besoin de modifier l'arrière-plan d'un grand nombre d'images. En règle générale, cela implique de modifier manuellement chaque image avec un logiciel photo. Cela peut demander beaucoup d’efforts, en particulier pour les gros lots d’images. Cependant, Socle amazonien ainsi que Fonctions d'étape AWS simplifier l’automatisation de ce processus à grande échelle.

Amazon Bedrock propose le modèle de base de l'IA générative Générateur d'images Amazon Titan G1, qui peut changer automatiquement l'arrière-plan d'une image à l'aide d'une technique appelée surpeinture. Step Functions vous permet de créer un flux de travail automatisé qui se connecte de manière transparente à Amazon Bedrock et à d'autres services AWS. Ensemble, Amazon Bedrock et Step Functions rationalisent l'ensemble du processus de modification automatique des arrière-plans sur plusieurs images.

Cet article présente une solution qui simplifie le processus de modification des arrière-plans de plusieurs images. En exploitant les capacités de IA générative avec Amazon Bedrock et le modèle Titan Image Generator G1, combinés à Step Functions, cette solution génère efficacement des images avec le fond souhaité. Cet article donne un aperçu du fonctionnement interne de la solution et vous aide à comprendre les choix de conception effectués pour créer cette propre solution personnalisée.

Voir le GitHub référentiel pour des instructions détaillées sur le déploiement de cette solution.

Vue d'ensemble de la solution

Examinons comment la solution fonctionne à un niveau élevé avant d'approfondir les éléments spécifiques et les services AWS utilisés. Le diagramme suivant fournit une vue simplifiée de l’architecture de la solution et met en évidence les éléments clés.

Architecture de solution

Le flux de travail comprend les étapes suivantes :

  1. Un utilisateur télécharge plusieurs images dans un Service de stockage simple Amazon (Amazon S3) via une application Web Streamlit.
  2. L'application Web Streamlit appelle un Passerelle d'API Amazon Point de terminaison de l'API REST intégré au Amazon Reconnaissance API DetectLabels, qui détecte les étiquettes pour chaque image.
  3. Lors de la soumission, l'application Web Streamlit met à jour un Amazon DynamoDB tableau avec détails de l'image.
  4. La mise à jour de DynamoDB déclenche un AWS Lambda fonction, qui démarre un flux de travail Step Functions.
  5. Le flux de travail Step Functions exécute les étapes suivantes pour chaque image :
    5.1 Construit une charge utile de requête pour Amazon Bedrock InvokeModel API.
    5.2 Invoque le substrat rocheux amazonien InvokeModel Action API.
    5.3 Analyse une image de la réponse et l'enregistre dans un emplacement S3.
    5.4 Met à jour l'état de l'image dans une table DynamoDB.
  6. Le workflow Step Functions appelle une fonction Lambda pour générer un rapport d'état.
  7. Le workflow envoie un e-mail en utilisant Service de notification simple d'Amazon (Amazon SNS).

Comme le montre la capture d'écran suivante, l'application Web Streamlit vous permet de télécharger des images et de saisir des invites textuelles pour spécifier les arrière-plans souhaités, les invites négatives et le mode de peinture pour la génération d'images. Vous pouvez également afficher et supprimer les étiquettes indésirables associées à chaque image téléchargée que vous ne souhaitez pas conserver dans les images finales générées.

Application Web rationalisée

Dans cet exemple, l'invite pour l'arrière-plan est « Arrière-plan de la ville de Londres ». Le processus d'automatisation génère de nouvelles images basées sur les images originales téléchargées avec Londres comme arrière-plan.

Images générées

Application Web rationalisée et téléchargements d'images

Une application Web Streamlit sert d’interface à cette solution. Pour protéger l'application contre tout accès non autorisé, elle s'intègre à un Amazon Cognito pool d'utilisateurs. API Gateway utilise un Autorisateur Amazon Cognito pour authentifier les demandes. L'application Web effectue les étapes suivantes :

  1. Pour chaque image sélectionnée, il récupère les étiquettes via Amazon Rekognition à l'aide d'un point de terminaison d'API REST API Gateway.
  2. Lors de la soumission, l'application télécharge les images dans un compartiment S3.
  3. L'application met à jour une table DynamoDB avec les paramètres pertinents, les noms d'image et les étiquettes associées pour chaque image à l'aide d'un autre point de terminaison d'API REST API Gateway.

Flux de travail de traitement d'images

Lorsque la table DynamoDB est mise à jour, Flux DynamoDB déclenche une fonction Lambda pour démarrer un nouveau flux de travail Step Functions. Voici un exemple de demande pour le workflow :

{
  "Id": "621fa85a-38bb-4d98-a656-93bbbcf5477f",
  "S3Bucket": "<Image Bucket>",
  "InputS3Prefix": "image-files/<year>/<month>/<day>/<timestamp>",
  "OutputS3Prefix": "generated-image-files/<year>/<month>/<day>/<timestamp>",
  "StatusS3Prefix": "status-report-files/<year>/<month>/<day>/<timestamp>",
  "Prompt": "london city background",
  "NegativePrompt": "low quality, low resolution",
  "Mode": "PRECISE",
  "Images": [
    {
      "ImageName": "bus.png",
      "Labels": "Bus, Person"
    },
    {
      "ImageName": "cop.png",
      "Labels": "Person, Adult, Male, Man, Helmet, Jacket"
    },
    {
      "ImageName": "iguana-2.png",
      "Labels": "Lizard”
    },
    {
      "ImageName": "dog.png",
      "Labels": "Dog"
    }
  ]
}

Le workflow Step Functions exécute ensuite les trois étapes suivantes :

  1. Remplacez l'arrière-plan de toutes les images.
  2. Générez un rapport d'état.
  3. Envoyez un e-mail via Amazon SNS.

La capture d'écran suivante illustre le flux de travail Step Functions.

Flux de travail AWS Step Functions

Examinons chaque étape plus en détail.

Remplacer l'arrière-plan de toutes les images

Step Functions utilise un Carte distribuée pour traiter chaque image dans des flux de travail enfants parallèles. La carte distribuée permet un traitement à haute concurrence. Chaque workflow enfant possède son propre historique d'exécution distinct de celui du workflow parent.

Step Functions utilise un Action d'API optimisée InvokeModel pour Amazon Bedrock. L'API accepte les requêtes et les réponses allant jusqu'à 25 Mo. Cependant, Step Functions a une limite de 256 Ko pour les entrées et sorties de charge utile d’état. Pour prendre en charge des images plus grandes, la solution utilise un compartiment S3 dans lequel le InvokeModel L'API lit les données et y écrit le résultat. Voici la configuration du InvokeModel API pour l'intégration d'Amazon Bedrock :

{
    "ModelId": "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-image-generator-v1",
    "ContentType": "application/json",
    "Input": {  
        "S3Uri": “s3://<Image Bucket>/image-files/<year>/<month>/<day>/<timestamp>/<Image name>.json",
    },  
    "Output": {  
        "S3Uri": “s3://<Image Bucket>/generated-image-files/<year>/<month>/<day>/<timestamp>/<Image name>.json”
    } 
}

La Input S3Uri Le paramètre spécifie l’emplacement source pour récupérer les données d’entrée. Le Output S3Uri Le paramètre spécifie la destination pour écrire la réponse API.

Une fonction Lambda enregistre la charge utile de la requête sous forme de fichier JSON dans le format spécifié. Input S3Uri emplacement. Les InvokeModel L'API utilise cette charge utile d'entrée pour générer des images avec l'arrière-plan spécifié :

{
    "taskType": "OUTPAINTING",
    "outPaintingParams": {
        "text": "london city background",
        "negativeText": "low quality, low resolution",        
        "image": "<base64-encoded string>",                         
        "maskPrompt": "Bus",                      
        "maskImage": "base64-encoded string",                             
        "outPaintingMode": "DEFAULT | PRECISE"                 
    },                                                 
    "imageGenerationConfig": {
        "numberOfImages": 1,
        "quality": "premium",
        "height": 1024,
        "width": 1024,
        "cfgScale": 8.0
    }
}

Le modèle Titan Image Generator G1 prend en charge les paramètres suivants pour la génération d'images :

  • Type de tâche – Spécifie la méthode de peinture pour remplacer l’arrière-plan de l’image.
  • texte – Une invite texte pour définir l’arrière-plan.
  • Textenégatif – Une invite textuelle pour définir ce qu’il ne faut pas inclure dans l’image.
  • invite de masque – Une invite texte qui définit le masque. Il correspond aux étiquettes que vous souhaitez conserver dans les images finales générées.
  • masqueImage – L’image JPEG ou PNG encodée en base64.
  • modeOutPainting – Spécifie s’il faut autoriser ou non la modification des pixels à l’intérieur du masque. DEFAULT permet de modifier l'image à l'intérieur du masque afin de la garder cohérente avec le fond reconstruit. PRECISE empêche la modification de l'image à l'intérieur du masque.
  • nombre d'images – Le nombre d’images à générer.
  • qualité – La qualité des images générées : standard or premium.
  • cfgÉchelle – Spécifie dans quelle mesure l’image générée doit adhérer à l’invite.
  • la taille – La hauteur de l'image en pixels.
  • largeur – La largeur de l'image en pixels.

Le substrat rocheux amazonien InvokeModel L'API génère une réponse avec une image codée dans le Output S3Uri emplacement. Une autre fonction Lambda analyse l'image de la réponse, la décode en base64 et enregistre le fichier image à l'emplacement suivant : s3://<Image Bucket>/generated-image-file/<year>/<month>/<day>/<timestamp>/.

Enfin, un workflow enfant met à jour une table DynamoDB avec l'état de génération d'image, en la marquant comme suit : Réussi or Échoué, et incluant des détails tels que ImageName, Cause, Erroret une Status.

Générer un rapport d'état

Après le processus de génération d'image, une fonction Lambda récupère les détails d'état de DynamoDB. Il compile dynamiquement ces détails dans un rapport d'état complet au format JSON. Il enregistre ensuite le rapport d'état généré dans un fichier JSON à l'emplacement suivant : s3://<Image Bucket>/status-report-files/<year>/<month>/<day>/<timestamp>/. L'équipe ITOps peut intégrer ce rapport à son système de notification existant pour savoir si le traitement des images s'est terminé avec succès. Pour les utilisateurs professionnels, vous pouvez étendre davantage cette fonctionnalité pour générer un rapport au format CSV.

Envoyer un e-mail via Amazon SNS

Step Functions appelle une action d'API Amazon SNS pour envoyer un e-mail. L'e-mail contient des détails, notamment l'emplacement S3 du rapport d'état et des fichiers d'images finaux. Voici un exemple d'e-mail de notification.

Email de notification

Conclusion

Dans cet article, nous avons fourni un aperçu d'un exemple de solution démontrant l'automatisation de la modification des arrière-plans d'images à grande échelle à l'aide d'Amazon Bedrock et Step Functions. Nous avons également expliqué chaque élément de la solution en détail. En utilisant l'intégration optimisée de Step Functions avec Amazon Bedrock, Distributed Map et le modèle Titan Image Generator G1, la solution remplace efficacement les arrière-plans des images en parallèle, améliorant ainsi la productivité et l'évolutivité.

Pour déployer la solution, reportez-vous aux instructions du GitHub référentiel.

Resources

Pour en savoir plus sur Amazon Bedrock, consultez les ressources suivantes :

Pour en savoir plus sur le modèle Titan Image Generator G1, consultez les ressources suivantes :

Pour en savoir plus sur l'utilisation d'Amazon Bedrock avec Step Functions, consultez les ressources suivantes :


À propos de l’auteur

Automatisez le processus de modification des arrière-plans des images à l'aide d'Amazon Bedrock et d'AWS Step Functions | Amazon Web Services PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Chetan Makvana est un architecte de solutions senior chez Amazon Web Services. Il travaille avec les partenaires et les clients AWS pour leur fournir des conseils architecturaux pour créer une architecture évolutive et mettre en œuvre des stratégies visant à favoriser l'adoption des services AWS. Il est un passionné de technologie et un bâtisseur dont les principaux domaines d'intérêt sont l'IA générative, le sans serveur et le DevOps. En dehors du travail, il aime regarder des spectacles, voyager et écouter de la musique. 

Horodatage:

Plus de Apprentissage automatique AWS