Bildklassifizierung in Azure

Blob Storage
Maschinelles Sehen
Cosmos DB
Event Grid
Functions

Dieses Szenario richtet sich an Unternehmen, die eine Bildverarbeitung benötigen.

Mögliche Anwendungsbereiche wären etwa die Klassifizierung von Bildern für eine Modewebsite, die Analyse von Text und Bildern für Versicherungsansprüche oder die Interpretation von Telemetriedaten aus Screenshots von Spielen. In der Vergangenheit mussten sich Unternehmen in der Regel ausführlich mit Machine Learning-Modellen vertraut machen, die Modelle trainieren und die Bilder schließlich durch ihren benutzerdefinierten Prozess schleusen, um die Daten aus den Bildern zu extrahieren.

Durch die Verwendung von Azure-Diensten wie Maschinelles Sehen-API und Azure Functions müssen Unternehmen keine einzelnen Server mehr verwalten und können gleichzeitig ihre Kosten senken und von der Erfahrung profitieren, über die Microsoft im Bereich der Bildverarbeitung mit Cognitive Services verfügt. In diesem Beispielszenario geht es speziell um einen Anwendungsfall mit Bildverarbeitung. Sollten Sie andere KI-Anforderungen haben, ziehen Sie ggf. die Verwendung der vollständigen Suite von Cognitive Services in Betracht.

Relevante Anwendungsfälle

Zu den weiteren relevanten Anwendungsfällen zählen:

  • Klassifizieren von Bildern auf einer Modewebsite
  • Klassifizieren von Telemetriedaten aus Screenshots von Spielen
  • Klassifizieren von Bildern für Versicherungsansprüche.

Aufbau

Architektur für Bildklassifizierung

Dieses Szenario umfasst die Back-End-Komponenten einer webbasierten oder mobilen Anwendung. Die Daten durchlaufen das Szenario wie folgt:

  1. Die API-Schicht wird mithilfe von Azure Functions erstellt. Diese APIs ermöglichen es der Anwendung, Bilder hochzuladen und Daten aus Cosmos DB abzurufen.
  2. Wenn ein Bild über einen API-Aufruf hochgeladen wird, wird es in Blob Storage gespeichert.
  3. Das Hinzufügen von neuen Dateien zu Blob Storage löst eine Event Grid-Benachrichtigung aus, die an eine Azure-Funktion gesendet wird.
  4. Azure Functions sendet einen Link für die neu hochgeladene Datei zur Analyse an die Maschinelles Sehen-API.
  5. Nachdem die Daten von der Maschinelles Sehen-API zurückgegeben wurden, erstellt Azure Functions einen Eintrag in Cosmos DB, um die Ergebnisse der Analyse zusammen mit den Bildmetadaten zu speichern.

Komponenten

  • Maschinelles Sehen-API ist Teil der Cognitive Services-Suite und dient zum Abrufen von Informationen zu den einzelnen Bildern.
  • Azure Functions stellt die Back-End-API für die Webanwendung sowie die Ereignisverarbeitung für hochgeladene Bilder bereit.
  • Event Grid löst ein Ereignis aus, wenn ein neues Bild in Blob Storage hochgeladen wird. Das Bild wird dann mit Azure Functions verarbeitet.
  • Blob Storage speichert alle in die Webanwendung hochgeladenen Bilddateien sowie alle statischen Dateien, die von der Webanwendung genutzt werden.
  • Cosmos DB speichert Metadaten zu den einzelnen hochgeladenen Bildern sowie die Verarbeitungsergebnisse der Maschinelles Sehen-API.

Alternativen

  • Custom Vision Service. Die Maschinelles Sehen-API gibt eine Reihe taxonomiebasierter Kategorien zurück. Falls Sie Informationen verarbeiten müssen, die nicht von der Maschinelles Sehen-API zurückgegeben werden, ziehen Sie ggf. die Verwendung von Custom Vision Service in Betracht. Dieser Dienst ermöglicht die Erstellung benutzerdefinierter Bildklassifizierungen.
  • Cognitive Search (früher Azure Search). Wenn in Ihrem Anwendungsfall die Metadaten abgefragt werden müssen, um Bilder zu finden, die bestimmten Kriterien entsprechen, empfiehlt sich ggf. die Verwendung von Cognitive Search. Cognitive Search (momentan in der Vorschauphase) ermöglicht die nahtlose Integration dieses Workflows.
  • Logic Apps. Wenn Sie nicht in Echtzeit auf zu einem Blob hinzugefügte Dateien reagieren müssen, können Sie die Verwendung von Logic Apps in Betracht ziehen. Eine Logik-App zur Prüfung, ob eine Datei hinzugefügt wurde, kann durch den Serientrigger oder den Trigger „Gleitendes Fenster“ gestartet werden.

Überlegungen

Skalierbarkeit

Bei den Komponenten dieses Szenarios handelt es sich größtenteils um verwaltete Dienste mit automatischer Skalierung. Es gibt jedoch ein paar Ausnahmen: Die maximale Anzahl von Azure Functions-Instanzen ist auf 200 beschränkt. Sollten Ihre Skalierungsanforderungen über diesen Grenzwert hinausgehen, erwägen Sie die Verwendung mehrerer Regionen oder App-Pläne.

Sie können Cosmos DB nur zur Autoskalierung für die SQL-API bereitstellen. Einen Leitfaden für die Schätzung Ihrer Anforderungen bei der Nutzung anderer APIs finden Sie in unserer Dokumentation unter Anforderungseinheiten. Machen Sie sich zur optimalen Nutzung der Skalierung in Cosmos DB mit der Funktionsweise von Partitionsschlüsseln in Cosmos DB vertraut.

Bei NoSQL-Datenbanken gehen Verfügbarkeit, Skalierbarkeit und Partitionierung häufig zulasten der Konsistenz (im Sinne des CAP-Theorems). In diesem Beispielszenario wird ein Schlüssel-Wert-Datenmodell verwendet, sodass die Transaktionskonsistenz meist vernachlässigt werden kann, da die meisten Vorgänge per Definition atomisch sind. Weitere Informationen zur Wahl des richtigen Datenspeichers finden Sie im Azure Architecture Center. Wenn für Ihre Implementierung eine hohe Konsistenz erforderlich ist, können Sie Ihre Konsistenzebene in Cosmos DB wählen.

Allgemeine Informationen zur Entwicklung skalierbarer Lösungen finden Sie im Azure Architecture Center in der Prüfliste zur Leistungseffizienz.

Sicherheit

Verwaltete Identitäten für Azure-Ressourcen ermöglichen den Zugriff auf andere interne Ressourcen Ihres Kontos und werden Ihrer Azure Functions-Instanz zugewiesen. Lassen Sie nur den Zugriff auf die erforderlichen Ressourcen in diesen Identitäten zu, um sicherzustellen, dass für Ihre Funktionen (und möglicherweise für Ihre Kunden) keine zusätzlichen Elemente verfügbar gemacht werden.

Allgemeine Informationen zum Entwerfen sicherer Lösungen finden Sie in der Dokumentation zur Azure-Sicherheit.

Resilienz

Da es sich bei allen Komponenten in diesem Szenario um verwaltete Komponenten handelt, ist deren Resilienz auf regionaler Ebene automatisch gewährleistet.

Allgemeine Informationen zur Entwicklung robuster Lösungen finden Sie unter Entwerfen robuster Anwendungen für Azure.

Preise

Zur Ermittlung der Betriebskosten für dieses Szenario sind alle Dienste im Kostenrechner vorkonfiguriert. Wenn Sie wissen möchten, welche Kosten für Ihren spezifischen Anwendungsfall entstehen, passen Sie die entsprechenden Variablen an Ihren voraussichtlichen Datenverkehr an.

Auf der Grundlage des Datenverkehrs (und unter der Annahme, dass alle Bilder 100 KB groß sind) haben wir drei exemplarische Kostenprofile erstellt:

  • Klein: Dieses Preisbeispiel entspricht der Verarbeitung von < 5000 Bildern pro Monat.
  • Mittel: Dieses Preisbeispiel entspricht der Verarbeitung von 500.000 Bildern pro Monat.
  • Groß: Dieses Preisbeispiel entspricht der Verarbeitung von 50 Millionen Bildern pro Monat.

Einen geführten Lernpfad finden Sie unter:

Informieren Sie sich vor dem Bereitstellen dieses Beispielszenarios in einer Produktionsumgebung über die empfohlenen Methoden zum Optimieren der Leistung und Zuverlässigkeit von Azure Functions.