DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»AI Zone»Reconnaissance d’images AWS AI à l’aide de Serverless sur NodeJS
    AI Zone

    Reconnaissance d’images AWS AI à l’aide de Serverless sur NodeJS

    novembre 20, 2021
    Reconnaissance d'images AWS AI à l'aide de Serverless sur NodeJS
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    introduction

    Dans cet article, nous allons voir comment identifier des images à l’aide du service de reconnaissance d’images AWS appelé AWS Rekognition sur NodeJS, à la fin du guide, vous aurez un système dans lequel vous téléchargerez un fichier sur S3, et les détails d’identification de cette image sera envoyée à votre adresse e-mail.

    Configuration du projet

    Nous devrons mettre en place un projet sans serveur de base avec un sans serveur.yml et notre fonction lambda, nous devons également installer aws-sdk pour interagir avec les services AWS,

    Fichier sans serveur.yml

    service: aws-img-rekognition
    
    provider:
      name: aws
      runtime: nodejs12.x
      iamRoleStatements:
        - Effect: Allow
          Action:
            - rekognition:DetectLabels
            - s3:Get*
            - s3:List*
            - sns:Publish*
          Resource: "*"
    
    functions:
      identifyImg:
        handler: src/index.identifyImg
        events:
          - s3:
              bucket: "dev-img-folder"
              event: s3:ObjectCreated:*
              existing: true

    Explication

    Décomposons ce qui se passe dans ce sans serveur.yml déposer

    Autorisations – Nous définissons des autorisations pour permettre à notre fonction lambda d’utiliser AWS rekognition pour détecter l’image, des autorisations de lecture s3 pour lire l’image téléchargée à des fins d’identification, et enfin l’autorisation de publier un événement SNS (nous en parlerons plus tard).

    Fonctions lambda – Nous n’avons besoin que d’une seule fonction lambda pour ce projet, nous la définissons dans le functions bloquer.

    Événements – La dernière chose est d’attacher un événement S3 à notre fonction lambda afin qu’elle soit appelée dès qu’une nouvelle image est téléchargée dans le compartiment S3, ce bucket est le nom du bucket où nous allons télécharger les images, nous pouvons créer ce bucket manuellement depuis la console AWS puis mettre le même nom ici, le existing la propriété est définie sur true parce que ce bucket est déjà créé, si nous ne passons pas ce drapeau, ce modèle essaiera de créer le bucket.

    Sujet SNS et abonnement

    Nous publions des données d’identification d’image AWS dans une rubrique SNS, pour ce faire, nous aurons besoin d’ARN pour la rubrique SNS, un e-mail sera abonné à cette rubrique, nous recevrons donc tous les détails liés à l’image sur l’e-mail lui-même, c’est très simple de créer un sujet SNS et un abonnement, il existe une documentation AWS officielle pour cela

    Fonction Lambda

    const AWS = require("aws-sdk");
    const rekognition = new AWS.Rekognition();
    const sns = new AWS.SNS();
    
    exports.identifyImg = async (event) => {
      const bucket = event.Records[0].s3.bucket.name;
      const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/+/g, " "));
    
      const params = {
        Image: {
          S3Object: {
            Bucket: bucket,
            Name: key,
          },
        },
        MaxLabels: 123,
        MinConfidence: 80,
      };
    
      try {
        const rekognitionData = await rekognition.detectLabels(params).promise();
        const snsParams = {
          Message: `This image identifies with these - ${rekognitionData.Labels.map((el) => el.Name).toString()}`,
          Subject: "Image details",
          TopicArn: "arn:aws:sns:us-east-2:175749735948:img-Topic",
        };
        await sns.publish(snsParams).promise();
      } catch (e) {
        console.log(e);
      }
    };

    Explication

    Décomposons cette fonction lambda.

    La première étape consiste à obtenir le nom du compartiment et la clé de l’objet qui sont téléchargés sur le S3, puis nous les transmettons au params object qui est la configuration acceptée par AWS rekognition.

    MaxÉtiquettes – Il s’agit simplement de définir le nombre maximum d’identifications que nous voulons que la reconnaissance AWS renvoie.

    MinConfiance – Il s’agit du niveau de confiance minimum pour que les étiquettes soient renvoyées, la confiance signifie ici à quel point la correspondance doit être proche de l’étiquette qui est renvoyée.

    Maintenant nous appelons detectLabels API de reconnaissance AWS qui nous fournira les données d’identification, après avoir obtenu ces données, nous allons publier ces données dans notre rubrique SNS.

    Un message – C’est juste la clé de configuration où nous passons le message à envoyer à notre sujet, ici nous ne faisons que mapper le Labels tableau par nom d’étiquette et conversion de ce tableau en chaîne.

    SujetArn – Il s’agit de l’ARN du sujet que nous avons créé ci-dessus.

    Conclusion

    Si vous atteignez cette étape, alors félicitations, nous avons maintenant un système où nous pouvons télécharger une image dans le compartiment S3, puis nous recevrons les données d’identification de l’image à une adresse e-mail spécifiée dans l’abonnement créé à l’aide de la console AWS et c’est comment nous utilisons la reconnaissance d’images AWS à l’aide d’un framework sans serveur.

    Vous pouvez trouver le code source sur Github

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.