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.
In questa esercitazione imparerai come rilevare la vitalità dei volti, utilizzando una combinazione di codice lato server e un'applicazione mobile lato client.
Suggerimento
Per informazioni generali sul rilevamento liveness del viso, vedere la guida concettuale.
Questa esercitazione illustra come gestire un'applicazione per l'interfaccia utente e un server dell'applicazione per eseguire il rilevamento di vivacità, incluso l'opzionale verifica del viso, su varie piattaforme e in diversi linguaggi.
Importante
Gli SDK del client Viso per il rilevamento liveness sono una funzionalità gestita. È necessario richiedere l'accesso alla funzionalità di attività compilando il modulo di acquisizione del riconoscimento del volto. Quando alla sottoscrizione di Azure viene concesso l'accesso, è possibile scaricare Face liveness SDK.
Suggerimento
Dopo aver completato i prerequisiti, è possibile provare l'esperienza di liveness iOS da TestFlight e l'esperienza di liveness Web di Vision Studio. Inoltre, è anche possibile compilare ed eseguire un esempio front-end completo (in iOS, Android o Web) dalla sezione Esempi .
Prerequisiti
- Sottoscrizione di Azure: creare un account gratuito
- L'account Azure deve avere un ruolo di Collaboratore Servizi cognitivi assegnato per poter accettare le condizioni di intelligenza artificiale responsabili e creare una risorsa. Per assegnare questo ruolo all'account, seguire la procedura descritta nella documentazione Assegnare ruoli oppure contattare l'amministratore.
- Dopo aver creato la sottoscrizione di Azure, Creare una risorsa Viso nel portale di Azure per ottenere la chiave e l'endpoint. Al termine della distribuzione, fare clic su Vai alla risorsa.
- La chiave e l'endpoint della risorsa creata saranno necessari per connettere l'applicazione al servizio Viso.
- È possibile usare il piano tariffario Gratuito (
F0
) per provare il servizio ed eseguire in un secondo momento l'aggiornamento a un livello a pagamento per la produzione.
- Accesso ad Azure AI Vision Face Client SDK per dispositivi mobili (IOS e Android) e Web. Per iniziare, è necessario richiedere le funzionalità di Riconoscimento volto ad accesso limitato per ottenere l'accesso all'SDK. Per altre informazioni, vedere la pagina Accesso limitato a Viso.
- Familiarità con la funzionalità di rilevamento della vitalità del volto. Vedere la guida concettuale.
Preparare gli SDK
Gli SDK vengono forniti in linguaggi diversi per semplificare lo sviluppo in applicazioni front-end e server app:
Scaricare l'SDK per l'applicazione front-end
Seguire le istruzioni nel repository GitHub azure-ai-vision-sdk per integrare l'interfaccia utente e il codice nell'applicazione per dispositivi mobili nativa. L'SDK liveness supporta Java/Kotlin per le applicazioni per dispositivi mobili Android, Swift per applicazioni per dispositivi mobili iOS e JavaScript per applicazioni Web:
- Per Swift iOS, seguire le istruzioni nell'esempio iOS
- Per Android Kotlin/Java, seguire le istruzioni nell'esempio Android
- Per Web JavaScript, seguire le istruzioni nell'esempio Web
Dopo aver aggiunto il codice nell'applicazione, l'SDK gestisce l'avvio della fotocamera, guidando l'utente finale nel regolare la posizione, componendo il payload dell’attività e chiamando il servizio cloud Viso di Azure AI per elaborare il payload dell’attività.
È possibile monitorare la sezione Versioni del repository SDK per i nuovi aggiornamenti della versione dell'SDK.
Scaricare la libreria client Viso di Azure per intelligenza artificiale per il server app
Il server dell'app/l'agente di orchestrazione è responsabile del controllo del ciclo di vita di una sessione di attività. Il server app deve creare una sessione prima di eseguire il rilevamento dell'attività e quindi può eseguire query sul risultato ed eliminare la sessione al termine del controllo dell'attività. Offriamo una libreria in varie lingue per implementare facilmente il server app. Per installare il pacchetto, seguire questa procedura:
- Per C#, seguire le istruzioni nel file leggimi dotnet
- Per Java, seguire le istruzioni nel file leggimi Java
- Per Python, seguire le istruzioni nel file leggimi Python
- Per JavaScript, seguire le istruzioni nel file leggimi JavaScript
Importante
Per creare variabili di ambiente per la chiave e l'endpoint del servizio Face di Azure, consultare la guida introduttiva
Eseguire il rilevamento dell'autenticità
Di seguito sono illustrati i passaggi generali coinvolti nell'orchestrazione dell’attività:
L'applicazione front-end avvia il controllo dell'attività e invia una notifica al server app.
Il server app crea una nuova sessione di attività con il servizio Viso di Azure per intelligenza artificiale. Il servizio crea una sessione relativa all’attività e risponde con un token di autorizzazione sessione. Per altre informazioni su ogni parametro di richiesta coinvolto nella creazione di una sessione relativa al rilevamento liveness, vedere Operazione della sessione di creazione liveness.
var endpoint = new Uri(System.Environment.GetEnvironmentVariable("FACE_ENDPOINT")); var credential = new AzureKeyCredential(System.Environment.GetEnvironmentVariable("FACE_APIKEY")); var sessionClient = new FaceSessionClient(endpoint, credential); var createContent = new CreateLivenessSessionContent(LivenessOperationMode.Passive) { DeviceCorrelationId = "723d6d03-ef33-40a8-9682-23a1feb7bccd", EnableSessionImage = true, }; var createResponse = await sessionClient.CreateLivenessSessionAsync(createContent); var sessionId = createResponse.Value.SessionId; Console.WriteLine($"Session created."); Console.WriteLine($"Session id: {sessionId}"); Console.WriteLine($"Auth token: {createResponse.Value.AuthToken}");
Un esempio del corpo della risposta:
{ "sessionId": "a6e7193e-b638-42e9-903f-eaf60d2b40a5", "authToken": "<session-authorization-token>", "status": "NotStarted", "modelVersion": "2024-11-15", "results": { "attempts": [] } }
Il server app fornisce di nuovo il token di autorizzazione sessione all'applicazione front-end.
L'applicazione front-end usa il token di autorizzazione sessione per avviare il rilevatore liveness del viso che avvierà il flusso di liveness.
L'SDK avvia quindi la videocamera, guida l'utente a posizionarsi correttamente e quindi prepara il payload per chiamare l'endpoint servizio di rilevamento autenticità.
L'SDK chiama il servizio Viso di Visione di Azure AI per eseguire il rilevamento dell'attività. Una volta che il servizio risponde, l'SDK invia una notifica all'applicazione front-end indicante che il controllo dell’attività è stato completato.
L'applicazione front-end inoltra il completamento del controllo dell'attività al server app.
Il server app può ora eseguire una query per il risultato del rilevamento liveness dal servizio Viso di Visione di Azure AI.
var getResultResponse = await sessionClient.GetLivenessSessionResultAsync(sessionId); var sessionResult = getResultResponse.Value; Console.WriteLine($"Session id: {sessionResult.Id}"); Console.WriteLine($"Session status: {sessionResult.Status}"); Console.WriteLine($"Liveness detection decision: {sessionResult.Result?.Response.Body.LivenessDecision}");
Un esempio del corpo della risposta:
{ "sessionId": "0acf6dbf-ce43-42a7-937e-705938881d62", "authToken": "", "status": "Succeeded", "modelVersion": "2024-11-15", "results": { "attempts": [ { "attemptId": 1, "attemptStatus": "Succeeded", "result": { "livenessDecision": "realface", "targets": { "color": { "faceRectangle": { "top": 763, "left": 320, "width": 739, "height": 938 } } }, "digest": "517A0E700859E42107FA47E957DD12F54211C1A021A969CD391AC38BB88295A2", "sessionImageId": "Ab9tzwpDzqdCk35wWTiIHWJzzPr9fBCNSqBcXnJmDjbI" } } ] } }
Il server app può eliminare la sessione dopo che sono stati sottoposti a query tutti i risultati della sessione.
await sessionClient.DeleteLivenessSessionAsync(sessionId); Console.WriteLine($"The session {sessionId} is deleted.");
Eseguire il rilevamento liveness mediante la verifica del viso
La combinazione della verifica del viso con il rilevamento liveness consente la verifica biometrica di una particolare persona di interesse, con la garanzia aggiuntiva della presenza fisica della persona nel sistema.
Esistono due parti per l'integrazione dell'attività con la verifica:
Passaggio 1- Selezionare un'immagine di riferimento
Segui i suggerimenti elencati nei requisiti di composizione per gli scenari di verifica ID per garantire che le immagini di input forniscano risultati di riconoscimento più accurati.
Passaggio 2: Configurare l'orchestrazione dell’autenticità con verifica.
Di seguito sono illustrati i passaggi generali coinvolti nell'orchestrazione di liveness con verifica:
Fornire l'immagine di riferimento di verifica con uno dei due metodi seguenti:
Il server app fornisce l'immagine di riferimento durante la creazione della sessione relativa al rilevamento dell’attività. Per altre informazioni su ogni parametro di richiesta coinvolto nella creazione di una sessione di rilevamento liveness con verifica, vedere Operazione della sessione di creazione di liveness con verifica.
var endpoint = new Uri(System.Environment.GetEnvironmentVariable("FACE_ENDPOINT")); var credential = new AzureKeyCredential(System.Environment.GetEnvironmentVariable("FACE_APIKEY")); var sessionClient = new FaceSessionClient(endpoint, credential); var createContent = new CreateLivenessWithVerifySessionContent(LivenessOperationMode.Passive) { DeviceCorrelationId = "723d6d03-ef33-40a8-9682-23a1feb7bccd", EnableSessionImage = true, }; using var fileStream = new FileStream("test.png", FileMode.Open, FileAccess.Read); var createResponse = await sessionClient.CreateLivenessWithVerifySessionAsync(createContent, fileStream); var sessionId = createResponse.Value.SessionId; Console.WriteLine("Session created."); Console.WriteLine($"Session id: {sessionId}"); Console.WriteLine($"Auth token: {createResponse.Value.AuthToken}"); Console.WriteLine("The reference image:"); Console.WriteLine($" Face rectangle: {createResponse.Value.VerifyImage.FaceRectangle.Top}, {createResponse.Value.VerifyImage.FaceRectangle.Left}, {createResponse.Value.VerifyImage.FaceRectangle.Width}, {createResponse.Value.VerifyImage.FaceRectangle.Height}"); Console.WriteLine($" The quality for recognition: {createResponse.Value.VerifyImage.QualityForRecognition}");
Un esempio del corpo della risposta:
{ "sessionId": "3847ffd3-4657-4e6c-870c-8e20de52f567", "authToken": "<session-authorization-token>", "status": "NotStarted", "modelVersion": "2024-11-15", "results": { "attempts": [], "verifyReferences": [ { "referenceType": "image", "faceRectangle": { "top": 98, "left": 131, "width": 233, "height": 300 }, "qualityForRecognition": "high" } ] } }
L'applicazione front-end fornisce l'immagine di riferimento durante l'inizializzazione dell'SDK. Questo scenario non è supportato nella soluzione Web.
Il server app ora può eseguire una query per il risultato della verifica oltre al risultato del rilevamento liveness.
var getResultResponse = await sessionClient.GetLivenessWithVerifySessionResultAsync(sessionId); var sessionResult = getResultResponse.Value; Console.WriteLine($"Session id: {sessionResult.Id}"); Console.WriteLine($"Session status: {sessionResult.Status}"); Console.WriteLine($"Liveness detection decision: {sessionResult.Result?.Response.Body.LivenessDecision}"); Console.WriteLine($"Verification result: {sessionResult.Result?.Response.Body.VerifyResult.IsIdentical}"); Console.WriteLine($"Verification confidence: {sessionResult.Result?.Response.Body.VerifyResult.MatchConfidence}");
Un esempio del corpo della risposta:
{ "sessionId": "93fd6f13-4161-41df-8a22-80a38ef53836", "authToken": "", "status": "Succeeded", "modelVersion": "2024-11-15", "results": { "attempts": [ { "attemptId": 1, "attemptStatus": "Succeeded", "result": { "livenessDecision": "realface", "targets": { "color": { "faceRectangle": { "top": 669, "left": 203, "width": 646, "height": 724 } } }, "digest": "EE664438FDF0535C6344A468181E4DDD4A34AC89582D4FD6E9E8954B843C7AA7", "verifyResult": { "matchConfidence": 0.08172279, "isIdentical": false } } } ], "verifyReferences": [ { "faceRectangle": { "top": 98, "left": 131, "width": 233, "height": 300 }, "qualityForRecognition": "high" } ] } }
Il server app può eliminare la sessione se non si eseguono più query sul risultato.
await sessionClient.DeleteLivenessWithVerifySessionAsync(sessionId); Console.WriteLine($"The session {sessionId} is deleted.");
Eseguire altre operazioni sul viso dopo il rilevamento liveness
Facoltativamente, è possibile eseguire ulteriori operazioni sul viso dopo il controllo di vivacità, come l'analisi facciale (per ottenere, ad esempio, gli attributi del viso) e/o le operazioni di identificazione facciale.
- Per abilitare questa operazione, è necessario impostare il parametro "enableSessionImage" su "true" durante il passaggioSession-Creation.
- Al termine della sessione, è possibile estrarre "sessionImageId" dal passaggio Session-Get-Result.
- È ora possibile scaricare l'immagine della sessione (a cui si fa riferimento nell'API Operazione Get Session Image di Liveness) oppure specificare "sessionImageId" nell'operazione Detect from Session Image ID API per continuare a eseguire altre operazioni di analisi facciale o operazioni di identificazione facciale. Per altre informazioni su queste operazioni, vedere Concetti relativi al rilevamento dei visi e Concetti relativi al riconoscimento dei volti.
Opzioni di supporto
Oltre a usare le principali opzioni di supporto per i servizi di intelligenza artificiale di Azure, è anche possibile pubblicare le domande nella sezione relativa ai problemi del repository SDK.
Contenuti correlati
Per scoprire come integrare la soluzione di liveness in un'applicazione esistente, vedere la documentazione di riferimento dell'SDK di Visione di Azure AI.
Per altre informazioni sulle funzionalità disponibili per orchestrare la soluzione di liveness, vedere le informazioni di riferimento sull'API REST della sessione.