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
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.
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.
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:
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.
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 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
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
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
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).
Was sind also meine Gedanken, nachdem ich Rekognition einige Monate lang in der Produktion eingesetzt habe? Hier ist eine Liste der wichtigsten Erkenntnisse:
TLDR: Dank Rekognition konnten wir rasch eine Funktion zur Bildobjekterkennung erstellen, die präzise, schnell und skalierbar ist.