Dela via


Minska svarstiden och förbättra prestanda

Den här guiden beskriver hur du minskar nätverksfördröjningen och förbättrar tjänstens prestanda när du använder ansiktstjänsten. Programmets hastighet och prestanda påverkar upplevelsen för slutanvändarna, till exempel personer som registrerar sig och använder ett ansiktsidentifieringssystem.

Minska svarstiden

Du kan få svarstider när du använder ansiktstjänsten. Svarstid avser alla typer av fördröjningar som uppstår när system kommunicerar via ett nätverk. I allmänhet är möjliga orsaker till svarstid:

  • Det fysiska avståndet som varje paket måste färdas från källa till mål.
  • Problem med överföringsmediet.
  • Fel i routrar eller växlar längs överföringssökvägen.
  • Den tid som krävs av antivirusprogram, brandväggar och andra säkerhetsmekanismer för att inspektera paket.
  • Fel i klient- eller serverprogram.

I det här avsnittet beskrivs hur du kan minimera olika orsaker till svarstid som är specifika för Azure AI Face-tjänsten.

Kommentar

Azure AI-tjänster tillhandahåller inget serviceavtal (SLA) om svarstid.

Välj lämplig region för ansiktsresursen

Nätverksfördröjningen, den tid det tar för information att resa från källa (ditt program) till mål (din Azure-resurs), påverkas starkt av det geografiska avståndet mellan programmet som gör begäranden och Azure-servern som svarar på dessa begäranden. Om din Ansiktsresurs till exempel finns i EastUShar den snabbare svarstid för användare i New York och användare i Asien får en längre fördröjning.

Vi rekommenderar att du väljer en region som är närmast dina användare för att minimera svarstiden. Om användarna är distribuerade över hela världen bör du överväga att skapa flera resurser i olika regioner och dirigera begäranden till den region som är närmast dina kunder. Du kan också välja en region som ligger nära alla dina kunders geografiska centrum.

Använda Azure Blob Storage för fjärr-URL:er

Ansiktstjänsten tillhandahåller två sätt att ladda upp bilder för bearbetning: ladda upp rådata för bilden direkt i begäran eller tillhandahålla en URL till en fjärrbild. Oavsett vilken metod som används måste ansiktstjänsten ladda ned avbildningen från källplatsen. Om anslutningen från ansiktstjänsten till klienten eller fjärrservern är långsam eller dålig påverkar den svarstiden för begäranden. Om du har problem med svarstiden kan du överväga att lagra avbildningen i Azure Blob Storage och skicka bild-URL:en i begäran. Mer implementeringsinformation finns i lagra avbildningen i Azure Premium Blob Storage. Ett exempel på ETT API-anrop:

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;

Se till att använda ett lagringskonto i samma region som ansiktsresursen. Detta minskar svarstiden för anslutningen mellan ansiktstjänsten och lagringskontot.

Använd optimala filstorlekar

Om de bildfiler du använder är stora påverkar det svarstiden för ansiktstjänsten på två sätt:

  • Det tar längre tid att ladda upp filen.
  • Det tar längre tid för tjänsten att bearbeta filen i förhållande till filstorleken.

Kompromissen mellan noggrannhet och nätverkshastighet

Kvaliteten på indatabilderna påverkar både noggrannheten och svarstiden för ansiktstjänsten. Bilder med lägre kvalitet kan resultera i felaktiga resultat. Bilder av högre kvalitet kan möjliggöra mer exakta tolkningar. Men bilder av högre kvalitet ökar också nätverksfördröjningen på grund av deras större filstorlekar. Tjänsten kräver mer tid för att ta emot hela filen från klienten och bearbeta den i förhållande till filstorleken. Över en viss nivå kommer ytterligare kvalitetsförbättringar inte att avsevärt förbättra noggrannheten.

För att uppnå optimal balans mellan noggrannhet och hastighet följer du dessa tips för att optimera dina indata.

Andra tips för filstorlek

Observera följande ytterligare tips:

  • När du använder identifieringsmodellen FaceDetectionModel.Detection01för ansiktsigenkänning ökar bearbetningshastigheten om du minskar bildfilens storlek. Om du använder identifieringsmodellen FaceDetectionModel.Detection02ökar en minskning av bildfilens storlek bara bearbetningshastigheten om bildfilen är mindre än 1920 x 1 080 bildpunkter.
  • För ansiktsigenkänning ökar en minskning av ansiktsstorleken bara hastigheten om bilden är mindre än 200 x 200 bildpunkter.
  • Prestandan för ansiktsidentifieringsmetoderna beror också på hur många ansikten som finns i en bild. Ansiktstjänsten kan returnera upp till 100 ansikten för en bild. Ansikten rangordnas efter ansiktsrektangelstorlek från stor till liten.

Anropa API:er parallellt när det är möjligt

Om du behöver anropa flera API:er kan du anropa dem parallellt om programdesignen tillåter det. Om du till exempel behöver identifiera ansikten i två bilder för att utföra en ansiktsjämförelse kan du anropa dem i en asynkron uppgift:

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);

Släta över spetsig trafik

Ansiktstjänstens prestanda kan påverkas av trafiktoppar, vilket kan orsaka begränsning, lägre dataflöde och högre svarstid. Vi rekommenderar att du ökar frekvensen för API-anrop gradvis och undviker omedelbara återförsök. Om du till exempel har 3 000 foton att utföra ansiktsidentifiering på ska du inte skicka 3 000 begäranden samtidigt. Skicka i stället 3 000 begäranden sekventiellt under 5 minuter (dvs. cirka 10 begäranden per sekund) för att göra nätverkstrafiken mer konsekvent. Om du vill minska tiden till slutförande ökar du antalet anrop per sekund gradvis för att jämna ut trafiken. Om du stöter på ett fel kan du läsa Hantera fel effektivt för att hantera svaret.

Hantera fel effektivt

Felen 429 och 503 kan inträffa i ditt Ansikts-API-anrop av olika skäl. Programmet måste alltid vara redo att hantera dessa fel. Här följer några rekommendationer:

HTTP-felkod beskrivning Rekommendation
429 Begränsning Du kan stöta på en hastighetsgräns med samtidiga anrop. Du bör minska frekvensen för anrop och försöka igen med exponentiell backoff. Undvik omedelbara återförsök och undvik att skicka flera begäranden samtidigt.

Om du vill öka gränsen kan du läsa avsnittet Begär en ökning i kvotguiden.
503 Tjänsten är inte tillgänglig Tjänsten kan vara upptagen och kan inte svara på din begäran omedelbart. Du bör anta en back-off-strategi som liknar den för felet 429.

Säkerställa tillförlitlighet och support

Följande är andra tips för att säkerställa tillförlitligheten och det höga stödet för ditt program:

  • Generera ett unikt GUID som client-request-id HTTP-begärandehuvud och skicka det med varje begäran. Detta hjälper Microsoft att undersöka eventuella fel enklare om du behöver rapportera ett problem med Microsoft.
    • Registrera client-request-id alltid och det svar som du fick när du får ett oväntat svar. Om du behöver hjälp kan du ge den här informationen till Microsoft Support, tillsammans med Azure-resurs-ID:t och tidsperioden då problemet uppstod.
  • Utför ett pilottest innan du släpper programmet i produktion. Se till att programmet kan hantera fel korrekt och effektivt.

Nästa steg

I den här guiden har du lärt dig att förbättra prestandan när du använder ansiktstjänsten. Följ sedan självstudien för att konfigurera en fungerande programvarulösning som kombinerar logik på serversidan och klientsidan för att göra identifiering av ansiktsupplivning på användare.