paint-brush
Mithilfe von Amazon Rekognition eine Funktion zur Bildobjekterkennung für ein Social-Media-Startup erstellenvon@aidenwalton
297 Lesungen

Mithilfe von Amazon Rekognition eine Funktion zur Bildobjekterkennung für ein Social-Media-Startup erstellen

von Aiden Walton6m2024/04/14
Read on Terminal Reader

Zu lang; Lesen

Dank Rekognition konnten wir rasch eine Funktion zur Bildobjekterkennung erstellen, die präzise, schnell und skalierbar ist.
featured image - Mithilfe von Amazon Rekognition eine Funktion zur Bildobjekterkennung für ein Social-Media-Startup erstellen
Aiden Walton HackerNoon profile picture


Die Fähigkeit, Informationen aus Bildern zu gewinnen, birgt großes Geschäftspotenzial. Und, nun ja, es kann auch einfach Spaß machen. In diesem Artikel werde ich beschreiben, wie wir Amazon Anerkennung um schnell eine Funktion zur Bildobjekterkennung für ein Social-Media-Startup zu erstellen.

Was ist Bildobjekterkennung?

Einfach ausgedrückt ist die Bildobjekterkennung der Prozess des Erkennens und Extrahierens von Informationen über Entitäten in einem bestimmten Bild. Dabei werden Objekte, Aktivitäten, Orte, Tiere, Produkte usw. erkannt.


Die Bildobjekterkennung findet in vielen verschiedenen Branchen Anwendung. Große Branchen wie Banken, Versicherungen, soziale Medien, Dating-Apps, Nachrichtenagenturen und FinTech nutzen die Objekterkennung in der einen oder anderen Form.

Unser Anwendungsfall

Kürzlich wurden wir mit der Entwicklung einer Funktion zur Objekterkennung in Bildern für ein Social-Media-Startup beauftragt. Der Anwendungsfall war einfach: Benutzer sollten einige ihrer Lieblingsfotos auswählen und einreichen können, damit sie auf einer der Social-Media-Seiten des Startups gezeigt werden.


Das Social-Media-Marketingteam benötigte eine Möglichkeit, die eingereichten Bilder nach bestimmten Themen zu durchsuchen – etwa nach Fotos vom Meer, beliebten Sehenswürdigkeiten, Tieren, Musikkonzerten usw.

Bildanalyse mit Deep Learning

Bilder zu analysieren und sie anhand von Landschaften und Objekten im Bild zu klassifizieren, ist keine einfache Aufgabe. Das menschliche Sehvermögen ist einfach bemerkenswert und die Entwicklung einer Anwendung, die die Fähigkeit des Gehirns zur Objekterkennung nachbilden kann, ist immens komplex. Es gibt eine ganze Computer-Vision-Industrie, die sich genau diesem Ziel widmet.


Die Objekterkennung von Grund auf durchzuführen, ist normalerweise ein mehrstufiger Prozess, der Folgendes umfasst:

  • Bilder sammeln und die darin enthaltenen Objekte beschriften
  • Trainieren der ML-Modelle
  • Verwenden der trainierten Modelle zur Durchführung der Analyse
  • Leistungsoptimierung
  • Und wiederholen…


Unser Ziel für diese Funktion war es, wie für alle anderen im Projekt, sie schnell zu entwickeln und ihre Wirksamkeit so schnell wie möglich in einer Produktionsumgebung zu testen. Darüber hinaus wollten wir keine Entwicklungsressourcen für die Entwicklung einer Lösung von Grund auf einsetzen, wenn wir vorhandene Cloud-Dienste nutzen konnten.


Stichwort Serverless – das gesamte Backend des Startups ist vollständig serverlos und ereignisgesteuert. Mit dieser Architektur können wir Entwicklerteams bilden, die sich nur auf Funktionen konzentrieren müssen, die die Social-Media-App von anderen unterscheiden . Serverless ermöglicht es uns außerdem, hochgradig skalierbare Dienste zu entwickeln und gleichzeitig nur für das zu zahlen, was wir tatsächlich nutzen – ein wichtiger Aspekt für ein skalierendes Startup.


Um diese Funktion zu erreichen, haben wir Amazon Rekognition verwendet – einen vollständig serverlosen Bild- und Videoanalysedienst. Mit Rekognition konnten wir diesen komplexen und kritischen Workflow in wenigen Stunden entwickeln. Lassen Sie uns tiefer in die Materie eintauchen.

Was ist Amazon Rekognition?

Amazon Rekognition ist ein AWS Serverless-Angebot, das Deep Learning zur Bild- und Videoanalyse nutzt. Vollständig Serverless bedeutet, dass wir uns mit Rekognition keine Gedanken über die Komplexität der zugrunde liegenden Infrastruktur machen müssen. Wir zahlen nur für das, was wir nutzen , und erhalten vorgefertigte Software für Bild- und Videoanalyseaufgaben. Rekognition bietet eine Reihe von Funktionen, darunter Bildbeschriftungserkennung, Gesichtserkennung, Prominentenerkennung, Inhaltsmoderation und Texterkennung.


Und das Beste daran? Rekognition abstrahiert die schwere Arbeit des Erstellens, Trainierens und Analysierens von Deep-Learning-Modellen. Die Bild- und Videoanalyse ist schnell und einfach und erfordert nur minimalen Einrichtungsaufwand. Wir mussten uns keine Gedanken über das Erstellen und Trainieren unserer eigenen Datensätze und die Bereitstellung von Serverkapazitäten machen, damit unser Service skalierbar ist. Wir mussten uns nur um die Integration kümmern.

Die Architektur

Die Architektur ist unkompliziert. Unsere mobile App lädt Bilder von den Telefonen der Benutzer in einen S3-Bucket hoch. Der Upload zu S3 löst dann eine Lambda-Funktion aus, die wiederum die Rekognition-API aufruft und die Ergebnisse zur Abfrage in DynamoDB speichert.


Architekturdiagramm für serverlose Bildobjekterkennung mit AWS

Der Code

Code schreiben macht Spaß, oder? Weniger Code zu schreiben macht sogar noch mehr Spaß.


Rekognition stellt eine Reihe von APIs bereit, an die Sie Bilddaten senden, die die Analyse durchführen und die Ergebnisse zurückgeben. Für unseren Anwendungsfall haben wir die Etiketten erkennen API.


Eine vereinfachte Version unserer Serverless-Framework-Infrastructure-as-Code-Datei sieht folgendermaßen aus:

 //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


Unser Lambda-Code ruft einfach die Rekognition-API auf und speichert die Ergebnisse in DynamoDB, aber Sie können alles verwenden, was für Ihren Anwendungsfall sinnvoll ist. Wir erhalten den S3-Bucket-Namen und den Objektnamen des Bildes aus dem S3-Ereignis und übergeben diese an die Funktion „detectLabels“ des Erkennungs-SDK .


Wir übergeben außerdem zwei optionale Parameter (MaxLabels und MinConfidence), um den Schwellenwert für das Konfidenzniveau und die maximale Anzahl von Labels anzugeben, die zurückgegeben werden sollen. Im folgenden Beispiel erhalten wir in der Antwort nur bis zu 20 Labels, und alle Labels haben ein Konfidenzniveau von über 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 // ... };

Wer liebt nicht ein Hundebild? Unten sehen Sie eine Antwort auf ein Bild, das wir in unseren S3-Bucket hochgeladen haben. Wie Sie sehen, erkennt Rekognition richtig, dass es sich um ein Bild eines Hundes auf einem Kiesweg im Freien handelt (und sagt uns, wo im Bild der Hund ist!).

Erkennungsreaktion (links), hochgeladenes Bild (rechts).

Abschließende Gedanken

Was sind also meine Gedanken, nachdem ich Rekognition einige Monate lang in der Produktion eingesetzt habe? Hier ist eine Liste der wichtigsten Erkenntnisse:

  • Vollständig serverlos – Vermeiden Sie die undifferenzierte Schwerstarbeit bei der Verwaltung der Komplexität der zugrunde liegenden Infrastruktur und verwenden Sie vorgefertigte Software und vorab trainierte Modelle.


  • Leistung – Die Erkennung erfolgt schnell, in den meisten Fällen etwa 600 ms.


  • Einfach zu verwenden – Die API ist einfach und leicht zu integrieren.


  • Kontinuierliche Verbesserung – AWS pflegt und verbessert Rekognition ständig, was bedeutet, dass es mit der Zeit immer besser wird.


  • Genauigkeit – Rekognition nutzt die große Kundenbasis von Amazon, was zu einer äußerst genauen Erkennung von Bildbeschriftungen führt.


  • Bietet ein großzügiges kostenloses Kontingent, sodass Sie es vor der Entscheidung testen können.


  • Kosten – Wir zahlen nur für das, was wir nutzen. Rekognition ermöglicht uns, je nach Geschäftsbedarf nach oben oder unten zu skalieren.

Zusammenfassung

TLDR: Dank Rekognition konnten wir rasch eine Funktion zur Bildobjekterkennung erstellen, die präzise, schnell und skalierbar ist.