Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa guida descrive come attenuare la latenza di rete e migliorare le prestazioni del servizio Viso di Azure. La velocità e le prestazioni dell'applicazione influiscono sull'esperienza degli utenti finali, ossia le persone che si registrano e usano il sistema di identificazione del viso.
Attenuare la latenza
È possibile riscontrare la latenza quando si usa il servizio Face. Per latenza si intende qualsiasi tipo di ritardo che si verifica quando i sistemi comunicano tramite una rete. In generale, le possibili cause della latenza includono:
- La distanza fisica che ogni pacchetto deve percorrere dall'origine alla destinazione.
- Problemi con il mezzo di trasmissione.
- Errori nei router o negli switch lungo il percorso di trasmissione.
- Il tempo richiesto dalle applicazioni antivirus, dai firewall e da altri meccanismi di sicurezza per esaminare i pacchetti.
- Malfunzionamenti nelle applicazioni client o server.
Questa sezione descrive come attenuare varie cause di latenza specifiche del servizio Viso di Azure.
Annotazioni
Gli strumenti Foundry non forniscono alcun accordo sul livello di servizio (SLA) per quanto riguarda la latenza.
Scegliere l'area appropriata per la risorsa Viso
La latenza di rete, ovvero il tempo necessario per il trasferimento delle informazioni dall'origine (l'applicazione) alla destinazione (la risorsa di Azure), è fortemente influenzata dalla distanza geografica tra l'applicazione che effettua le richieste e il server di Azure che risponde a tali richieste. Ad esempio, se la risorsa Viso si trova in EastUS, ha un tempo di risposta più rapido per gli utenti di New York, mentre gli utenti in Asia riscontrano un ritardo maggiore.
È consigliabile selezionare un'area geografica vicina agli utenti per ridurre al minimo la latenza. Se gli utenti sono distribuiti in tutto il mondo, è consigliabile creare più risorse in aree diverse e instradare le richieste all'area più vicina ai clienti. In alternativa, è possibile scegliere un'area vicina al centro geografico di tutti i clienti.
Usare Archiviazione BLOB di Azure per gli URL remoti
Il servizio Viso offre due modi per caricare immagini per l'elaborazione: caricare i dati byte non elaborati dell'immagine direttamente nella richiesta o fornire un URL a un'immagine remota. Indipendentemente dal metodo, il servizio Viso deve scaricare l'immagine dal relativo percorso di origine. Se la connessione dal servizio Viso al client o al server remoto è lenta o scadente, ciò influisce sul tempo di risposta delle richieste. Se si verifica un problema di latenza, è consigliabile archiviare l'immagine in Archiviazione BLOB di Azure e passare l'URL dell'immagine nella richiesta. Per altre informazioni sull'implementazione, vedere Archiviazione dell'immagine in Archiviazione BLOB Premium di Azure. Chiamata API di esempio:
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;
Assicurarsi di usare un account di archiviazione nella stessa area della risorsa Viso. Ciò riduce la latenza della connessione tra il servizio Viso e l'account di archiviazione.
Usare dimensioni di file ottimali
L'uso di file di immagine di grandi dimensioni incide sul tempo di risposta del servizio Viso in due modi:
- Il caricamento del file richiede più tempo.
- Il servizio richiede più tempo per elaborare il file, in proporzione alle dimensioni del file.
Considerare i seguenti suggerimenti aggiuntivi:
- Per il rilevamento viso, quando si usa il modello di rilevamento
FaceDetectionModel.Detection01, la riduzione delle dimensioni del file di immagine aumenta la velocità di elaborazione. Quando si usa il modello di rilevamentoFaceDetectionModel.Detection02, la riduzione delle dimensioni del file di immagine aumenterà la velocità di elaborazione solo se il file di immagine è inferiore a 1920x1080 pixel. - Per il riconoscimento del viso, la riduzione delle dimensioni del viso aumenterà la velocità solo se l'immagine è inferiore a 200x200 pixel.
- Le prestazioni dei metodi d rilevamento viso dipendono anche dal numero di visi presenti in un'immagine. Il servizio Viso può restituire fino a 100 visi per un'immagine. I visi vengono classificati in base alle dimensioni del rettangolo del viso in ordine decrescente.
Compromesso tra accuratezza e velocità di rete
La qualità delle immagini di input influisce sia sull'accuratezza sia sulla latenza del servizio Viso. Le immagini con una qualità inferiore possono restituire risultati errati. Le immagini di qualità superiore possono garantire interpretazioni più precise. Tuttavia, le immagini di qualità superiore aumentano anche la latenza di rete perché le dimensioni dei file sono maggiori. Il servizio richiede più tempo per ricevere l'intero file dal client ed elaborarlo, in proporzione alle dimensioni del file. Superato un determinato livello, ulteriori miglioramenti qualitativi non miglioreranno significativamente l'accuratezza.
Per ottenere un equilibrio ottimale tra accuratezza e velocità, seguire questi suggerimenti per ottimizzare i dati di input.
- Per le operazioni di rilevamento e riconoscimento dei visi, vedere Dati di input per il rilevamento viso e Dati di input per il riconoscimento del viso.
Chiamare le API in parallelo, quando possibile
Se è necessario chiamare più API, è consigliabile chiamarle in parallelo se la progettazione dell'applicazione lo consente. Ad esempio, se è necessario rilevare i visi in due immagini per eseguire un confronto, è possibile chiamare le API in un'attività asincrona:
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);
Uniformare i picchi di traffico
Le prestazioni del servizio Viso possono essere influenzate da picchi di traffico, che possono causare limitazioni delle richieste, riduzione della velocità effettiva e una latenza più elevata. È consigliabile aumentare gradualmente la frequenza delle chiamate API ed evitare nuovi tentativi immediati. Ad esempio, in presenza di 3.000 foto su cui eseguire il rilevamento facciale, non inviare 3.000 richieste contemporaneamente. Inviare invece 3.000 richieste in sequenza nell'arco di più di 5 minuti (ovvero circa 10 richieste al secondo) per rendere il traffico di rete più costante. Se si vuole ridurre il tempo di completamento, aumentare gradualmente il numero di chiamate al secondo per uniformare il traffico. Se si verifica un errore, fare riferimento a Gestire gli errori in modo efficace per gestire la risposta.
Gestire gli errori in modo efficace
Gli errori 429 e 503 possono verificarsi nelle chiamate all'API Viso per vari motivi. L'applicazione deve essere sempre pronta a gestire questi errori. Di seguito sono elencati alcuni suggerimenti:
| Codice di errore HTTP | Descrizione | Raccomandazione |
|---|---|---|
429 |
Limitazione | È possibile raggiungere un limite di frequenza quando si eseguono chiamate simultanee. È consigliabile ridurre la frequenza delle chiamate e riprovare con backoff esponenziale. Evitare nuovi tentativi immediati ed evitare di ripetere l'invio di numerose richieste simultaneamente.
Se si desidera aumentare il limite, vedere la sezione Richiedere un aumento della guida sulle quote. |
503 |
Servizio non disponibile | È possibile che il servizio sia occupato e non sia in grado di rispondere immediatamente alla richiesta. È consigliabile adottare una strategia di backoff simile a quella per l'errore 429. |
Garantire affidabilità e supporto
Di seguito sono riportati altri suggerimenti per garantire elevati livelli di affidabilità e supporto dell'applicazione:
- Generare un GUID univoco come intestazione della richiesta HTTP
client-request-ide inviarlo con ogni richiesta. Ciò consente a Microsoft di analizzare più facilmente eventuali errori, se è necessario segnalare un problema a Microsoft.- Annotare sempre
client-request-ide la risposta ricevuta quando si verifica una risposta imprevista. Se è necessaria assistenza, fornire queste informazioni al supporto tecnico Microsoft, insieme all'ID risorsa di Azure e all'ora in cui si è verificato il problema.
- Annotare sempre
- Eseguire un test pilota prima di rilasciare l'applicazione nell'ambiente di produzione. Assicurarsi che l'applicazione sia in grado di gestire gli errori in modo corretto ed efficace.
Passo successivo
In questa guida si è appreso come migliorare le prestazioni del servizio Viso. Successivamente, seguire l'esercitazione per configurare una soluzione software che combina la logica lato server e lato client per eseguire il rilevamento liveness del viso sugli utenti.