paint-brush
Utilisation d'Amazon Rekognition pour créer une fonctionnalité de détection d'objets image pour une startup de médias sociauxpar@aidenwalton
297 lectures

Utilisation d'Amazon Rekognition pour créer une fonctionnalité de détection d'objets image pour une startup de médias sociaux

par Aiden Walton6m2024/04/14
Read on Terminal Reader

Trop long; Pour lire

Rekognition nous a permis de créer rapidement une fonctionnalité de détection d’objets image précise, rapide et évolutive.
featured image - Utilisation d'Amazon Rekognition pour créer une fonctionnalité de détection d'objets image pour une startup de médias sociaux
Aiden Walton HackerNoon profile picture


La capacité de recueillir des informations à partir d’images présente un potentiel commercial considérable. Et bien, cela peut aussi être simplement amusant. Dans cet article, je vais décrire comment nous avons utilisé Reconnaissance Amazon pour créer rapidement une fonctionnalité de détection d'objets image pour une startup de médias sociaux.

Qu’est-ce que la détection d’objets image ?

En termes simples, la détection d'objets image est le processus de détection et d'extraction d'informations sur les entités d'une image donnée. Il s’agit de détecter des objets, des activités, des lieux, des animaux, des produits, etc.


La détection d’objets images présente un large éventail de cas d’utilisation dans divers secteurs. Des secteurs majeurs tels que les banques, les assurances, les réseaux sociaux, les applications de rencontres, les agences de presse et les FinTech utilisent la détection d’objets sous une forme ou une autre.

Notre cas d'utilisation

Récemment, nous avons été chargés de créer une fonctionnalité de détection d'objets image pour une startup de médias sociaux. Le cas d'utilisation était simple : les utilisateurs devaient pouvoir sélectionner certaines de leurs photos préférées et les soumettre pour qu'elles soient présentées sur l'une des pages de réseaux sociaux de la startup.


L'équipe marketing des médias sociaux avait besoin d'un moyen de rechercher parmi les images soumises certains thèmes, tels que des photos de l'océan, des monuments populaires, des animaux, des concerts de musique, etc.

Analyse d'images à l'aide du Deep Learning

Analyser des images et les classer en fonction du paysage et des objets qu'elles contiennent n'est pas une tâche simple. La vue humaine est tout simplement remarquable, et créer une application capable de reproduire la capacité du cerveau à détecter des objets est extrêmement complexe. Il existe toute une industrie de la vision par ordinateur qui se consacre à cela.


La détection d'objets à partir de zéro est généralement un processus en plusieurs étapes qui implique :

  • Collecter des images et étiqueter les objets qu'ils contiennent
  • Entraîner les modèles ML
  • Utiliser les modèles formés pour effectuer l'analyse
  • L'optimisation des performances
  • Et répétez…


Notre objectif pour cette fonctionnalité, comme pour toutes les autres fonctionnalités du projet, était de la construire rapidement et de tester son efficacité dans un environnement de production dès que possible. De plus, nous ne voulions pas consacrer des ressources de développement à la création d'une solution à partir de zéro alors que nous pouvions tirer parti des services cloud existants.


Cue Serverless — l'ensemble du backend de la startup est entièrement sans serveur et piloté par les événements. Avec cette architecture, nous pouvons avoir des équipes de développeurs qui doivent uniquement se concentrer sur les fonctionnalités qui différencient l'application de médias sociaux des autres. Le sans serveur nous permet également de créer des services hautement évolutifs tout en ne payant que ce que nous utilisons exactement – une considération importante pour une startup en pleine évolution.


Pour obtenir cette fonctionnalité, nous avons donc utilisé Amazon Rekognition, un service d'analyse d'images et de vidéos entièrement sans serveur. Grâce à Rekognition, nous avons pu développer ce flux de travail complexe et critique en quelques heures . Plongeons-y.

Qu’est-ce qu’Amazon Rekognition ?

Amazon Rekognition est une offre AWS Serverless qui utilise l'apprentissage en profondeur pour effectuer des analyses d'images et de vidéos. Être entièrement sans serveur signifie qu'avec Rekognition, nous n'avons pas à nous soucier de la complexité de l'infrastructure sous-jacente ; nous payons uniquement pour ce que nous utilisons et il nous fournit un logiciel pré-écrit pour les tâches d'analyse d'images et de vidéos. Rekognition offre une gamme de fonctionnalités, notamment la détection d'étiquettes d'image, la détection de visages, la détection de célébrités, la modération de contenu et la détection de texte.


La meilleure partie? Rekognition élimine le gros du travail de création, de formation et d’analyse de modèles d’apprentissage profond. L'analyse d'images et de vidéos est rapide et simple, avec une configuration minimale nécessaire. Nous n'avons pas eu à nous soucier de créer et de former nos propres ensembles de données ni de provisionner la capacité du serveur afin que notre service puisse évoluer. Tout ce dont nous devions nous soucier, c'était de l'intégration.

Architecture

L'architecture est simple. Notre application mobile télécharge les images des téléphones des utilisateurs dans un compartiment S3. Le téléchargement vers S3 déclenche ensuite une fonction Lambda qui à son tour appelle l'API Rekognition et stocke les résultats dans DynamoDB pour les interrogations.


Schéma d'architecture de détection d'objets image sans serveur utilisant AWS

Le code

Écrire du code est amusant, non ? Eh bien, écrire moins de code est encore plus amusant.


Rekognition expose un ensemble d'API auxquelles vous envoyez des données d'image et auxquelles vous effectuez l'analyse et renvoyez les résultats. Pour notre cas d'utilisation, nous avons utilisé le détecter les étiquettes API.


Une version simplifiée de notre infrastructure sans serveur en tant que fichier de code ressemble à ceci :

 //serverless.yamlfunctions: imageLabelDetection: handler: image-label-detection.handler events: - s3: bucket: my-image-bucket event: s3:ObjectCreated:* existing: true iamRoleStatements: - Effect: Allow Action: rekognition:DetectLabels Resource: "*" - Effect: Allow Action: s3:GetObject Resource: arn:aws:s3:::my-image-bucket


Notre code Lambda appelle simplement l'API Rekognition et stocke les résultats dans DynamoDB, mais vous pouvez utiliser tout ce qui est logique pour votre cas d'utilisation. Nous obtenons le nom du compartiment S3 et le nom de l'objet de l'image à partir de l'événement S3 et les transmettons à la fonction detectLabels du SDK de reconnaissance .


Nous transmettons également deux paramètres facultatifs (MaxLabels et MinConfidence) pour spécifier le seuil de niveau de confiance et le nombre maximum d'étiquettes que nous souhaitons renvoyer. Dans l'exemple ci-dessous, nous n'obtiendrons que 20 étiquettes dans la réponse, et toutes les étiquettes auront un niveau de confiance supérieur à 80 %.


 //image-label-detecion.jsconst AWS = require("aws-sdk");const rekognition = new AWS.Rekognition();exports.handler = async (event) => { const imageDetails = event.Records[0].s3; const bucketName = imageDetails.bucket.name; const objectKey = imageDetails.object.key; const rekognitionResp = await rekognition .detectLabels({ Image: { S3Object: { Bucket: bucketName, Name: objectKey, }, }, MaxLabels: 20, MinConfidence: 80, }) .promise(); // Send to data store, eg DynamoDB // ... };

Qui n'aime pas une photo d'un chien ? Vous trouverez ci-dessous une réponse à une image que nous avons téléchargée dans notre compartiment S3. Comme vous pouvez le voir, Rekognition détermine correctement qu'il s'agit d'une image d'un chien sur un chemin extérieur en gravier (et nous indique où se trouve le chien sur l'image !).

Réponse de reconnaissance (à gauche), image téléchargée (à droite).

Dernières pensées

Alors, que pensez-vous après avoir utilisé Rekognition en production pendant quelques mois ? Voici une liste des principaux points à retenir :

  • Entièrement sans serveur — Évitez les lourdes tâches indifférenciées liées à la gestion de la complexité de l'infrastructure sous-jacente et utilisez des logiciels prédéfinis et des modèles pré-entraînés.


  • Performances — La reconnaissance est rapide, environ 600 ms dans la plupart des cas.


  • Facile à utiliser — L'API est simple et facile à intégrer.


  • Amélioration continue : AWS maintient et itère constamment Rekognition, ce qui signifie qu'il s'améliorera de plus en plus au fil du temps.


  • Précision — Rekognition tire parti du large éventail de clients d'Amazon ; ce qui permet une détection d'étiquette d'image très précise.


  • Dispose d’un niveau gratuit généreux, vous pouvez donc l’essayer avant de décider.


  • Coût — Nous payons uniquement pour ce que nous utilisons. Rekognition nous permet d'évoluer en fonction des besoins de l'entreprise.

Résumé

TLDR : Rekognition nous a permis de créer rapidement une fonctionnalité de détection d'objets image précise, rapide et évolutive.