Verringern der Wartezeit und Verbessern der Leistung
In diesem Leitfaden wird beschrieben, wie Sie die Netzwerklatenz verringern und die Leistung des Diensts verbessern, wenn Sie den Face-Dienst verwenden. Die Geschwindigkeit und Leistung Ihrer Anwendung wirken sich auf die Erfahrung Ihrer Endbenutzer aus, z. B. Personen, die sich anmelden und ein Gesichtsidentifikationssystem verwenden.
Verbessern der Wartezeit
Bei Verwendung des Diensts „Gesichtserkennung“ können Wartezeiten auftreten. Als Wartezeit wird jede Art von Verzögerung bezeichnet, die bei der Kommunikation über ein Netzwerk auftritt. Im Allgemeinen können Wartezeiten u. a. folgende Ursachen haben:
- Die räumliche Distanz, die die einzelnen Pakete von der Quelle bis zum Ziel überwinden müssen
- Probleme mit dem Übertragungsmedium
- Fehler in Routern oder Switches entlang des Übertragungswegs
- Die Zeit, die Antivirenanwendungen, Firewalls und andere Sicherheitsmechanismen benötigen, um Pakete zu überprüfen
- Funktionsstörungen in Client- oder Serveranwendungen
In diesem Abschnitt wird beschrieben, wie Sie verschiedene Ursachen für die Wartezeit spezifisch für den Azure KI Face-Dienst verringern können.
Hinweis
Azure KI Services bietet keine Vereinbarung zum Servicelevel (Service Level Agreement, SLA) in Bezug auf Wartezeiten.
Wählen Sie die entsprechende Region für Ihre Face-Ressource aus
Die Netzwerklatenz, also die Zeit, die Informationen benötigen, um von der Quelle (Ihrer Anwendung) zum Ziel (Ihrer Azure-Ressource) zu gelangen, wird stark von der geografischen Entfernung zwischen der Anwendung, die Anfragen stellt, und dem Azure-Server, der auf diese Anfragen antwortet, beeinflusst. Wenn sich ihre Face-Ressource beispielsweise in EastUS
befindet, hat sie eine schnellere Reaktionszeit für Benutzer in New York, und die Benutzer in Asien haben eine längere Verzögerung.
Es wird empfohlen, eine Region auszuwählen, die Ihren Benutzern am nächsten kommt, um die Wartezeit zu minimieren. Wenn Ihre Benutzer auf der ganzen Welt verteilt sind, sollten Sie mehrere Ressourcen in verschiedenen Regionen erstellen und Anforderungen an die Region weiterleiten, die Ihren Kunden am nächsten kommt. Alternativ können Sie eine Region auswählen, die sich in der Nähe der geografischen Mitte aller Kunden befindet.
Verwenden von Azure Blob Storage für Remote-URLs
Der Face-Dienst bietet zwei Möglichkeiten zum Hochladen von Bildern zur Verarbeitung: Hochladen der unformatierten Bytedaten des Bilds direkt in der Anforderung oder Bereitstellen einer URL zu einem Remotebild. Unabhängig von der Methode muss der Face-Dienst das Bild vom Quellenanbieter herunterladen. Wenn die Verbindung zwischen dem Dienst „Gesichtserkennung“ und dem Kunden oder Remoteserver langsam oder von schlechter Qualität ist, wirkt sich dies auf die Antwortzeit der Anforderung aus. Wenn Sie ein Problem mit der Wartezeit haben, sollten Sie das Bild in Azure Blob Storage speichern und die Bild-URL in der Anforderung übergeben. Weitere Implementierungsdetails finden Sie unter Speichern des Bilds in Azure Premium Blob Storage. Ein Beispiel-API-Aufruf:
var url = "https://<storage_account_name>.blob.core.windows.net/<container_name>/<file_name>";
var response = await faceClient.DetectAsync(new Uri(url), FaceDetectionModel.Detection03, FaceRecognitionModel.Recognition04, returnFaceId: false);
var faces = response.Value;
Achten Sie darauf, ein Speicherkonto in derselben Region wie die Gesichtserkennungsressource zu verwenden. Dadurch wird die Wartezeit der Verbindung zwischen dem Gesichtserkennungsdienst und dem Speicherkonto reduziert.
Optimale Dateigrößen verwenden
Wenn die verwendeten Bilddateien groß sind, wirkt sich dies auf zwei Arten auf die Reaktionszeit des Face-Diensts aus:
- Das Hochladen der Datei dauert länger.
- Der Dienst benötigt proportional zur Dateigröße mehr Zeit für die Verarbeitung der Datei.
Der Kompromiss zwischen Genauigkeit und Netzwerkgeschwindigkeit
Die Qualität der Eingabebilder wirkt sich sowohl auf die Genauigkeit als auch die Wartezeit des Face-Diensts aus. Bilder mit niedrigerer Qualität können zu fehlerhaften Ergebnissen führen. Bilder von höherer Qualität können präzisere Interpretationen ermöglichen. Bilder mit höherer Qualität erhöhen jedoch auch die Netzwerklatenz aufgrund ihrer größeren Dateigrößen. Der Dienst benötigt mehr Zeit, um die gesamte Datei vom Client zu empfangen und im Verhältnis zur Dateigröße zu verarbeiten. Ab einem bestimmten Niveau werden weitere Qualitätsverbesserungen die Genauigkeit nicht wesentlich verbessern.
Um das optimale Gleichgewicht zwischen Genauigkeit und Geschwindigkeit zu erzielen, befolgen Sie diese Tipps, um Ihre Eingabedaten zu optimieren.
- Informationen zu Gesichtserkennungs- und erfassungsvorgängen finden Sie unter Eingabedaten für die Gesichtserkennung und Eingabedaten für die Gesichtserfassung.
- Informationen zur Erkennung der Liveness finden Sie im Tutorial.
Weitere Tipps zur Dateigröße
Beachten Sie die folgenden zusätzlichen Tipps:
- Wird bei der Gesichtserkennung das Erkennungsmodell
FaceDetectionModel.Detection01
verwendet, erhöht sich die Verarbeitungsgeschwindigkeit bei einer Verkleinerung der Bildgröße. Wenn Sie das ErkennungsmodellFaceDetectionModel.Detection02
verwenden, führt eine Verringerung der Bildgröße nur zu einer Erhöhung der Verarbeitungsgeschwindigkeit, wenn die Bilddatei kleiner als 1920 × 1080 Pixel ist. - Bei der Gesichtserkennung erhöht die Verringerung der Gesichtsgröße nur die Geschwindigkeit, wenn das Bild kleiner als 200 x 200 Pixel ist.
- Die Leistung der Gesichtserkennungsmethoden hängt auch davon ab, wie viele Gesichter in einem Bild vorhanden sind. Der Dienst „Gesichtserkennung“ kann bis zu 100 Gesichter in einem Bild erkennen. Gesichter werden dabei nach der Rechteckgröße der Gesichter von groß nach klein bewertet.
Paralleler Aufruf von APIs, wenn möglich
Wenn Sie mehrere APIs aufrufen müssen, empfiehlt es sich, diese parallel aufzurufen, sofern Ihr Anwendungsentwurf dies zulässt. Wenn Sie z. B. Gesichter in zwei Bildern erkennen müssen, um einen Gesichtsvergleich durchzuführen, können Sie sie in einer asynchronen Aufgabe aufrufen:
string url1 = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/Face/images/detection1.jpg";
string url2 = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/Face/images/detection2.jpg";
var response1 = client.DetectAsync(new Uri(url1), FaceDetectionModel.Detection03, FaceRecognitionModel.Recognition04, returnFaceId: false);
var response2 = client.DetectAsync(new Uri(url2), FaceDetectionModel.Detection03, FaceRecognitionModel.Recognition04, returnFaceId: false);
Task.WaitAll(new Task<Response<IReadOnlyList<FaceDetectionResult>>>[] { response1, response2 });
IEnumerable<FaceDetectionResult> results = response1.Result.Value.Concat(response2.Result.Value);
Umgang mit Datenverkehrsspitzen
Die Leistung des Face-Diensts kann durch Datenverkehrsspitzen beeinträchtigt werden, was zu Drosselung, geringerem Durchsatz und höherer Wartezeit führen kann. Es wird empfohlen, die Häufigkeit der API-Aufrufe schrittweise zu erhöhen und sofortige Wiederholungen zu vermeiden. Wenn Sie zum Beispiel 3000 Fotos für die Gesichtserkennung haben, sollten Sie nicht 3000 Anfragen gleichzeitig senden. Senden Sie stattdessen 3000 Anforderungen sequenziell über 5 Minuten (d. h. ca. 10 Anforderungen pro Sekunde), um den Netzwerkdatenverkehr konsistenter zu gestalten. Wenn Sie die Fertigstellungszeit verringern möchten, erhöhen Sie die Anzahl der Anrufe pro Sekunde schrittweise, um den Datenverkehr zu glätten. Wenn ein Fehler auftritt, lesen Sie Effektives Behandeln von Fehlern, um die Antwort zu verarbeiten.
Effektives Behandeln von Fehlern
Die Fehler 429
und 503
können aus verschiedenen Gründen in Ihren Face-API-Aufrufen auftreten. Ihre Anwendung muss immer bereit sein, diese Fehler zu verarbeiten. Hier sind einige Empfehlungen dafür:
HTTP-Fehlercode | Beschreibung | Empfehlung |
---|---|---|
429 |
Drosselung | Bei gleichzeitigen Aufrufen kann eine Ratenbegrenzung auftreten. Sie sollten die Häufigkeit der Anrufe verringern und den Versuch mit exponentiellem Backoff wiederholen. Vermeiden Sie sofortige Wiederholungen, und vermeiden Sie gleichzeitig das erneute Senden zahlreicher Anforderungen. Wenn Sie den Grenzwert erhöhen möchten, lesen Sie den Abschnitt Anfordern einer Erhöhung des Leitfadens für Kontingente. |
503 |
Dienst nicht verfügbar (Service Unavailable) | Möglicherweise ist der Dienst ausgelastet und kann nicht sofort auf Ihre Anfrage antworten. Sie sollten eine Back-Off-Strategie einführen, die der für Fehler 429 ähnlich ist. |
Sicherstellen von Zuverlässigkeit und Support
Im Folgenden finden Sie weitere Tipps zur Gewährleistung der Zuverlässigkeit und des hohen Supports Ihrer Anwendung:
- Generieren Sie eine eindeutige GUID als HTTP-Anforderungsheader
client-request-id
, und senden Sie sie mit jeder Anforderung. Dies hilft Microsoft, Fehler einfacher zu untersuchen, wenn Sie ein Problem mit Microsoft melden müssen.- Notieren Sie immer
client-request-id
und die Antwort, die Sie erhalten haben, wenn eine unerwartete Antwort auftritt. Wenn Sie Unterstützung benötigen, geben Sie diese Informationen zusammen mit der Azure-Ressourcen-ID und dem Zeitraum, in dem das Problem aufgetreten ist, an den Microsoft-Support weiter.
- Notieren Sie immer
- Führen Sie einen Pilottest durch, bevor Sie Ihre Anwendung in die Produktion freigeben. Stellen Sie sicher, dass Ihre Anwendung Fehler ordnungsgemäß und effektiv verarbeiten kann.
Nächste Schritte
In diesem Leitfaden haben Sie erfahren, wie Sie die Leistung bei Verwendung des Face-Diensts verbessern. Folgen Sie anschließend dem Tutorial, um eine funktionierende Softwarelösung einzurichten, die serverseitige und clientseitige Logik kombiniert, um die Gesichtserkennung bei Benutzer*innen durchzuführen.