Latentie beperken en prestaties verbeteren
In deze handleiding wordt beschreven hoe u de netwerklatentie kunt beperken en de serviceprestaties kunt verbeteren bij het gebruik van de Azure Face-service. De snelheid en prestaties van uw toepassing zijn van invloed op de ervaring van uw eindgebruikers, zoals personen die zich inschrijven en het gezichtsidentificatiesysteem gebruiken.
Latentie beperken
Er kan latentie optreden bij het gebruik van de Face-service. Latentie verwijst naar elke vertraging die optreedt wanneer systemen communiceren via een netwerk. Over het algemeen zijn mogelijke oorzaken van latentie:
- De fysieke afstand die elk pakket moet afleggen van de bron naar de bestemming.
- Problemen met het transmissiemedium.
- Fouten in routers of switches langs het transmissiepad.
- De tijd die nodig is voor antivirustoepassingen, firewalls en andere beveiligingsmechanismen om pakketten te inspecteren.
- Storingen in client- of servertoepassingen.
In deze sectie wordt beschreven hoe u verschillende oorzaken van latentie kunt beperken die specifiek zijn voor de Azure AI Face-service.
Notitie
Azure AI-services bieden geen SLA (Service Level Agreement) met betrekking tot latentie.
Kies de juiste regio voor uw Face-resource
De netwerklatentie, de tijd die nodig is om informatie te verplaatsen van de bron (uw toepassing) naar de bestemming (uw Azure-resource), wordt sterk beïnvloed door de geografische afstand tussen de toepassing die aanvragen doet en de Azure-server die op deze aanvragen reageert. Als uw Face-resource zich bijvoorbeeld bevindt EastUS
, heeft deze een snellere reactietijd voor gebruikers in New York en ervaren gebruikers in Azië een langere vertraging.
U wordt aangeraden een regio te selecteren die zich het dichtst bij uw gebruikers bevindt om de latentie te minimaliseren. Als uw gebruikers over de hele wereld worden gedistribueerd, kunt u overwegen om meerdere resources in verschillende regio's te maken en aanvragen door te sturen naar de regio die zich het dichtst bij uw klanten bevindt. U kunt ook een regio kiezen die zich in de buurt van het geografische centrum van al uw klanten bevindt.
Azure Blob Storage gebruiken voor externe URL's
De Face-service biedt twee manieren om afbeeldingen te uploaden voor verwerking: het uploaden van de onbewerkte bytegegevens van de afbeelding rechtstreeks in de aanvraag of het verstrekken van een URL naar een externe afbeelding. Ongeacht de methode moet de Face-service de afbeelding downloaden van de bronlocatie. Als de verbinding van de Face-service met de client of de externe server traag of slecht is, is dit van invloed op de reactietijd van aanvragen. Als u een probleem hebt met latentie, kunt u overwegen de installatiekopieën op te slaan in Azure Blob Storage en de afbeeldings-URL door te geven in de aanvraag. Zie het opslaan van de installatiekopieën in Azure Premium Blob Storage voor meer implementatiedetails. Een voorbeeld van een API-aanroep:
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;
Zorg ervoor dat u een opslagaccount gebruikt in dezelfde regio als de Face-resource. Dit vermindert de latentie van de verbinding tussen de Face-service en het opslagaccount.
Optimale bestandsgrootten gebruiken
Als de afbeeldingsbestanden die u gebruikt groot zijn, is dit van invloed op de reactietijd van de Face-service op twee manieren:
- Het uploaden van het bestand duurt langer.
- Het duurt langer voordat de service het bestand verwerkt, in verhouding tot de bestandsgrootte.
Let op de volgende aanvullende tips:
- Voor gezichtsdetectie verhoogt het verkleinen van de bestandsgrootte van de afbeelding bij het gebruik van het detectiemodel
FaceDetectionModel.Detection01
de verwerkingssnelheid. Wanneer u het detectiemodelFaceDetectionModel.Detection02
gebruikt, wordt de verwerkingssnelheid alleen verhoogd als het afbeeldingsbestand kleiner is dan 1920x1080 pixels. - Voor gezichtsherkenning verhoogt het verkleinen van het gezicht alleen de snelheid als de afbeelding kleiner is dan 200x200 pixels.
- De prestaties van de gezichtsdetectiemethoden zijn ook afhankelijk van het aantal gezichten in een afbeelding. De Face-service kan maximaal 100 gezichten retourneren voor een afbeelding. Gezichten worden gerangschikt op gezichtsrechthoekgrootte van groot naar klein.
De balans tussen nauwkeurigheid en netwerksnelheid
De kwaliteit van de invoerafbeeldingen is van invloed op zowel de nauwkeurigheid als de latentie van de Face-service. Afbeeldingen met een lagere kwaliteit kunnen leiden tot onjuiste resultaten. Afbeeldingen van een hogere kwaliteit kunnen nauwkeurigere interpretaties mogelijk maken. Afbeeldingen met een hogere kwaliteit verhogen echter ook de netwerklatentie vanwege hun grotere bestandsgrootten. De service vereist meer tijd om het hele bestand van de client te ontvangen en te verwerken, in verhouding tot de bestandsgrootte. Boven een bepaald niveau zullen verdere kwaliteitsverbeteringen de nauwkeurigheid niet aanzienlijk verbeteren.
Volg deze tips om de juiste balans tussen nauwkeurigheid en snelheid te bereiken om uw invoergegevens te optimaliseren.
- Zie voor gezichtsdetectie- en herkenningsbewerkingen invoergegevens voor gezichtsdetectie en invoergegevens voor gezichtsherkenning.
- Zie de zelfstudie voor livenessdetectie.
API's parallel aanroepen, indien mogelijk
Als u meerdere API's wilt aanroepen, kunt u deze parallel aanroepen als uw toepassingsontwerp dit toestaat. Als u bijvoorbeeld gezichten in twee afbeeldingen moet detecteren om een gezichtsvergelijking uit te voeren, kunt u deze aanroepen in een asynchrone taak:
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);
Vloeiend over stekelig verkeer
De prestaties van de Face-service kunnen worden beïnvloed door verkeerspieken, wat kan leiden tot beperking, lagere doorvoer en hogere latentie. We raden u aan de frequentie van API-aanroepen geleidelijk te verhogen en onmiddellijke nieuwe pogingen te voorkomen. Als u bijvoorbeeld 3000 foto's hebt om gezichtsdetectie uit te voeren, verzendt u niet tegelijkertijd 3000 aanvragen. Verzend in plaats daarvan 3000 aanvragen sequentieel over 5 minuten (dat wil gezegd ongeveer 10 aanvragen per seconde) om het netwerkverkeer consistenter te maken. Als u de voltooiingstijd wilt verkorten, verhoogt u het aantal oproepen per seconde geleidelijk om het verkeer te vereffenen. Als er een fout optreedt, raadpleegt u Omgaan met fouten om het antwoord effectief af te handelen.
Fouten effectief verwerken
De fouten 429
en 503
kunnen om verschillende redenen optreden bij uw Face-API-aanroepen. Uw toepassing moet altijd gereed zijn om deze fouten af te handelen. Hier volgen enkele aanbevelingen:
HTTP-foutcode | Beschrijving | Aanbeveling |
---|---|---|
429 |
Beperking | U kunt een frequentielimiet tegenkomen met gelijktijdige aanroepen. U moet de frequentie van oproepen verlagen en opnieuw proberen met exponentieel uitstel. Vermijd onmiddellijke nieuwe pogingen en vermijd het opnieuw verzenden van talloze aanvragen tegelijk.
Als u de limiet wilt verhogen, raadpleegt u de sectie Aanvraag voor een verhoging van de quotahandleiding. |
503 |
Service niet beschikbaar | De service is mogelijk bezet en kan niet onmiddellijk reageren op uw aanvraag. U moet een back-off-strategie aannemen die vergelijkbaar is met die voor fout 429 . |
Betrouwbaarheid en ondersteuning garanderen
Hier volgen andere tips om de betrouwbaarheid en hoge ondersteuning van uw toepassing te garanderen:
- Genereer een unieke GUID als de
client-request-id
HTTP-aanvraagheader en verzend deze met elke aanvraag. Dit helpt Microsoft om eventuele fouten gemakkelijker te onderzoeken als u een probleem met Microsoft moet melden.- Noteer altijd de
client-request-id
en het antwoord dat u hebt ontvangen wanneer u een onverwacht antwoord tegenkomt. Als u hulp nodig hebt, geeft u deze informatie op voor Microsoft Ondersteuning, samen met de Azure-resource-id en de periode waarin het probleem is opgetreden.
- Noteer altijd de
- Voer een testfase uit voordat u uw toepassing in productie brengt. Zorg ervoor dat uw toepassing fouten correct en effectief kan verwerken.
Volgende stap
In deze handleiding hebt u geleerd hoe u de prestaties kunt verbeteren bij het gebruik van de Face-service. Volg vervolgens de zelfstudie om een werkende softwareoplossing in te stellen waarin logica aan de serverzijde en clientzijde wordt gecombineerd om gezichtsdetectie voor gebruikers uit te voeren.