Zmírnění latence a zvýšení výkonu
Tato příručka popisuje, jak zmírnit latenci sítě a zlepšit výkon služby při používání služby Azure Face. Rychlost a výkon vaší aplikace ovlivní prostředí koncových uživatelů, jako jsou lidé, kteří se zaregistrují a používají systém identifikace tváře.
Zmírnění latence
Při používání služby Rozpoznávání tváře může dojít k latenci. Latence označuje jakýkoli druh zpoždění, ke kterému dochází, když systémy komunikují přes síť. Mezi možné příčiny latence obecně patří:
- Fyzická vzdálenost každého paketu musí cestovat ze zdroje do cíle.
- Problémy s přenosovým médium.
- Chyby ve směrovačích nebo přepínačích podél přenosové cesty
- Doba potřebná antivirovými aplikacemi, bránami firewall a dalšími mechanismy zabezpečení ke kontrole paketů.
- Poruchy v klientských nebo serverových aplikacích
Tato část popisuje, jak můžete zmírnit různé příčiny latence specifické pro službu Azure AI Face.
Poznámka:
Služby Azure AI neposkytují žádnou smlouvu o úrovni služeb (SLA) týkající se latence.
Zvolte odpovídající oblast pro prostředek rozpoznávání tváře.
Latence sítě, doba potřebnou k přesunu informací ze zdroje (vaší aplikace) do cíle (prostředek Azure) je silně ovlivněna geografickou vzdáleností mezi aplikací provádějícími požadavky a serverem Azure, který na tyto požadavky reaguje. Pokud se například prostředek rozpoznávání tváře nachází, EastUS
má rychlejší dobu odezvy pro uživatele v New Yorku a uživatelé v Asii mají delší zpoždění.
Doporučujeme vybrat oblast, která je nejblíže vašim uživatelům, aby se minimalizovala latence. Pokud jsou vaši uživatelé distribuovaní po celém světě, zvažte vytvoření více prostředků v různých oblastech a žádosti o směrování do nejbližší oblasti vašim zákazníkům. Případně můžete zvolit oblast, která se nachází blízko geografického centra všech vašich zákazníků.
Použití úložiště objektů blob v Azure pro vzdálené adresy URL
Služba Rozpoznávání tváře nabízí dva způsoby, jak nahrát obrázky ke zpracování: nahrání nezpracovaných bajtů obrázku přímo v požadavku nebo poskytnutí adresy URL vzdálenému obrázku. Bez ohledu na metodu musí služba Rozpoznávání tváře stáhnout obrázek ze zdrojového umístění. Pokud je připojení ze služby Rozpoznávání tváře k klientovi nebo vzdálenému serveru pomalé nebo špatné, ovlivní dobu odezvy požadavků. Pokud máte problém s latencí, zvažte uložení image ve službě Azure Blob Storage a předání adresy URL obrázku v požadavku. Další podrobnosti o implementaci najdete v tématu uložení image ve službě Azure Premium Blob Storage. Příklad volání rozhraní API:
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;
Nezapomeňte použít účet úložiště ve stejné oblasti jako prostředek rozpoznávání tváře. Tím se sníží latence připojení mezi službou Rozpoznávání tváře a účtem úložiště.
Použití optimálních velikostí souborů
Pokud jsou soubory obrázků, které používáte, velké, ovlivní dobu odezvy služby Rozpoznávání tváře dvěma způsoby:
- Nahrání souboru trvá déle.
- Zpracování souboru trvá více času službou, a to v poměru k velikosti souboru.
Všimněte si následujících dalších tipů:
- Při rozpoznávání tváře při použití modelu
FaceDetectionModel.Detection01
detekce se snížením velikosti souboru obrázku zvýší rychlost zpracování. Při použití modeluFaceDetectionModel.Detection02
detekce se zmenšení velikosti souboru obrázku zvýší rychlost zpracování pouze v případě, že je soubor obrázku menší než 1920 × 1080 pixelů. - Při rozpoznávání tváře se zmenšení velikosti tváře zvětší rychlost jenom v případě, že je obrázek menší než 200 × 200 pixelů.
- Výkon metod rozpoznávání tváře také závisí na tom, kolik tváří je na obrázku. Služba Rozpoznávání tváře může pro obrázek vrátit až 100 tváří. Tváře jsou seřazené podle velikosti obdélníku tváře od velkých po malé.
Kompromis mezi přesností a rychlostí sítě
Kvalita vstupních obrázků ovlivňuje přesnost i latenci služby Rozpoznávání tváře. Obrázky s nižší kvalitou můžou vést k chybným výsledkům. Obrázky s vyšší kvalitou mohou umožňovat přesnější interpretace. Obrázky s vyšší kvalitou ale také zvyšují latenci sítě kvůli jejich větším velikostem souborů. Služba vyžaduje více času, než obdrží celý soubor od klienta a zpracuje ho v poměru k velikosti souboru. Vyšší než určitá úroveň, další vylepšení kvality výrazně nezlepší přesnost.
Pokud chcete dosáhnout optimální rovnováhy mezi přesností a rychlostí, postupujte podle těchto tipů a optimalizujte vstupní data.
- Informace o operacích detekce a rozpoznávání tváře najdete v vstupních datech pro detekci tváří a vstupní data pro rozpoznávání tváře.
- Informace o detekci živé aktivity najdete v tomto kurzu.
Paralelní volání rozhraní API, pokud je to možné
Pokud potřebujete volat více rozhraní API, zvažte jejich paralelní volání, pokud to návrh vaší aplikace umožňuje. Pokud například potřebujete rozpoznat tváře na dvou obrázcích, abyste provedli porovnání tváří, můžete je volat v asynchronní úloze:
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);
Plynulý provoz přes spiky
Na výkon služby Rozpoznávání tváře můžou mít vliv špičky provozu, což může způsobit omezování, nižší propustnost a vyšší latenci. Doporučujeme zvýšit frekvenci volání rozhraní API postupně a vyhnout se okamžitým opakovaným pokusům. Pokud máte například 3000 fotek k detekci obličeje, neodesílejte současně 3000 požadavků. Místo toho odešlete 3000 požadavků postupně více než 5 minut (tj. přibližně 10 požadavků za sekundu), aby byl síťový provoz konzistentnější. Pokud chcete zkrátit dobu dokončení, zvyšte počet volání za sekundu postupně, aby se provoz vyhladit. Pokud dojde k nějaké chybě, projděte si informace o efektivním zpracování chyb pro zpracování odpovědi.
Efektivní zpracování chyb
K chybám 429
a 503
může docházet k volání rozhraní API pro rozpoznávání tváře z různých důvodů. Vaše aplikace musí být vždy připravená ke zpracování těchto chyb. Tady je několik doporučení:
Kód chyby HTTP | Popis | Doporučení |
---|---|---|
429 |
Omezování | U souběžných volání můžete narazit na limit rychlosti. Měli byste snížit frekvenci volání a opakovat s exponenciálním zpožováním. Vyhněte se okamžitým opakovaným pokusům a vyhněte se opakovanému odesílání mnoha požadavků současně.
Pokud chcete limit zvýšit, přečtěte si část Žádost o navýšení průvodce kvótami. |
503 |
Nedostupná služba | Služba může být zaneprázdněná a nemůže okamžitě odpovědět na vaši žádost. Měli byste přijmout back-off strategii podobnou té pro chybu 429 . |
Zajištění spolehlivosti a podpory
Tady jsou další tipy, které vám pomůžou zajistit spolehlivost a vysokou podporu vaší aplikace:
- Vygenerujte jedinečný identifikátor GUID jako hlavičku
client-request-id
požadavku HTTP a odešlete ho s každým požadavkem. To pomáhá microsoftu snadněji prošetřit případné chyby, pokud potřebujete nahlásit problém s Microsoftem.- Vždy nahrajte
client-request-id
odpověď a odpověď, kterou jste dostali, když narazíte na neočekávanou odpověď. Pokud potřebujete pomoc, poskytněte tyto informace podpora Microsoftu spolu s ID prostředku Azure a časovým obdobím, kdy k problému došlo.
- Vždy nahrajte
- Před uvolněním aplikace do produkčního prostředí proveďte pilotní test. Ujistěte se, že vaše aplikace dokáže správně a efektivně zpracovávat chyby.
Další krok
V této příručce jste zjistili, jak zlepšit výkon při používání služby Rozpoznávání tváře. Dále postupujte podle tohoto kurzu a nastavte funkční softwarové řešení, které kombinuje logiku na straně serveru a na straně klienta, aby se uživatelé mohli setkat s detekcí živého života.