Specificare un modello di riconoscimento del viso

Attenzione

L'accesso al servizio di riconoscimento facciale è limitato in base ai criteri di idoneità e utilizzo per supportare i principi di IA responsabile. Il servizio Face è disponibile solo per clienti e partner gestiti da Microsoft. Usare il modulo di registrazione per il riconoscimento facciale per richiedere l'accesso. Per altre informazioni, vedere la pagina Viso con accesso limitato .

Questa guida illustra come specificare un modello di riconoscimento dei visi per il rilevamento dei volti, l'identificazione e la ricerca di somiglianza usando il servizio Viso di Azure.

Il servizio Viso usa modelli di Machine Learning per eseguire operazioni sui visi umani visibili nelle immagini. Continuiamo a migliorare l'accuratezza dei modelli in base al feedback dei clienti e ai progressi nella ricerca e offriamo questi miglioramenti come aggiornamenti del modello. Gli sviluppatori possono specificare la versione del modello di riconoscimento del viso da usare, scegliendo il modello più adatto al proprio caso d'uso.

Prerequisiti

È necessario avere familiarità con i concetti relativi al rilevamento e all'identificazione dei volti di intelligenza artificiale. Se non lo sei, consulta prima queste guide:

Compatibilità dei modelli

Il servizio Viso di Azure dispone di quattro modelli di riconoscimento disponibili. I modelli recognition_01 (pubblicati 2017), recognition_02 (pubblicati nel 2019) e recognition_03 (pubblicati nel 2020) sono continuamente supportati per garantire la compatibilità con le versioni precedenti per i clienti che usano FaceListo PersonGroupcreati con questi modelli. Un FaceList o PersonGroup usa sempre il modello di riconoscimento con cui è stato creato e i nuovi visi vengono associati a questo modello quando vengono aggiunti. Questa operazione non può essere modificata dopo la creazione e i clienti devono usare il modello di riconoscimento corrispondente con FaceList o PersonGroup corrispondente.

È possibile passare a modelli di riconoscimento successivi per comodità; Tuttavia, sarà necessario creare nuovi FaceLists e PersonGroup con il modello di riconoscimento preferito.

Suggerimenti per i modelli

Il modello recognition_04 (pubblicato nel 2021) è il modello più accurato al momento disponibile. Se si è un nuovo cliente, usare questo modello. Recognition_04 offre una maggiore precisione per confronti di somiglianza e confronti di corrispondenza delle persone. Recognition_04 migliora il riconoscimento per gli utenti registrati che indossano copri viso (maschere chirurgiche, maschere N95, maschere di panno). È possibile creare esperienze utente sicure e semplici che usano il modello di detection_03 più recente per rilevare se un utente registrato indossa una copertina del viso e quindi usare il modello di recognition_04 più recente per riconoscere la propria identità. Ogni modello opera indipendentemente dagli altri e una soglia di confidenza impostata per un modello non deve essere confrontata tra gli altri modelli di riconoscimento.

Le sezioni seguenti spiegano come specificare un modello selezionato in diverse operazioni facciali evitando conflitti di modello. Se si è un utente avanzato e si vuole determinare se passare al modello più recente, passare alla sezione Valuta modelli diversi per valutare il nuovo modello e confrontare i risultati usando il set di dati corrente.

Rilevare i volti con il modello specificato

Il rilevamento dei volti identifica i punti di riferimento visivi dei volti umani e trova le posizioni della bounding box. Estrae anche le caratteristiche del viso e le archivia temporaneamente per un massimo di 24 ore per l'uso nell'identificazione. Tutte queste informazioni costituisce la rappresentazione di un viso.

Il modello di riconoscimento viene usato quando vengono estratte le caratteristiche del viso, quindi è possibile specificare una versione del modello durante l'esecuzione dell'operazione Rileva.

Quando si usa l'API Di rilevamento , assegnare la versione del modello con il recognitionModel parametro . I valori disponibili sono:

  • recognition_01
  • recognition_02
  • recognition_03
  • recognition_04

Facoltativamente, è possibile specificare il parametro returnRecognitionModel ( valore predefinito false) per indicare se recognitionModel deve essere restituito in risposta. Di conseguenza, un URL di richiesta per l'API REST Detect sarà simile al seguente:

https://westus.api.cognitive.microsoft.com/face/v1.0/detect?detectionModel={detectionModel}&recognitionModel={recognitionModel}&returnFaceId={returnFaceId}&returnFaceAttributes={returnFaceAttributes}&returnFaceLandmarks={returnFaceLandmarks}&returnRecognitionModel={returnRecognitionModel}&faceIdTimeToLive={faceIdTimeToLive}

Se si usa la libreria client, è possibile assegnare il valore per recognitionModel passando una stringa che rappresenta la versione. Se non viene assegnato, verrà usata una versione predefinita del modello di recognition_01 . Vedere l'esempio di codice seguente per la libreria client .NET.

string imageUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/Face/images/detection1.jpg";
var response = await faceClient.DetectAsync(new Uri(imageUrl), FaceDetectionModel.Detection03, FaceRecognitionModel.Recognition04, returnFaceId: true, returnFaceLandmarks: true, returnRecognitionModel: true);
var faces = response.Value;

Nota

Il parametro returnFaceId deve essere impostato su true per abilitare gli scenari di riconoscimento dei visi nei passaggi successivi.

Identificare i visi con il modello specificato

Il servizio Viso può estrarre i dati del viso da un'immagine e associarli a un oggetto Person (tramite la chiamata all'API Add Person Face , ad esempio) e più oggetti Person possono essere archiviati insieme in un PersonGroup. È quindi possibile confrontare un nuovo viso con un PersonGroup (con la chiamata Identifica da gruppo di persone ) e la persona corrispondente all'interno di tale gruppo può essere identificata.

Un PersonGroup deve avere un modello di riconoscimento univoco per tutti gli oggetti Personed è possibile specificare questo parametro usando il recognitionModel parametro quando si crea il gruppo (Create Person Group o Create Large Person Group). Se non si specifica questo parametro, viene usato il modello originale recognition_01 . Un gruppo userà sempre il modello di riconoscimento con cui è stato creato e i nuovi visi verranno associati a questo modello quando vengono aggiunti. Questa operazione non può essere modificata dopo la creazione di un gruppo. Per visualizzare il modello con cui è configurato un PersonGroup , usare l'API Get Person Group con il parametro returnRecognitionModel impostato su true.

Vedere l'esempio di codice .NET seguente.

// Create an empty PersonGroup with "recognition_04" model
string personGroupId = "mypersongroupid";
using (var content = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new Dictionary<string, object> { ["name"] = "My Person Group Name", ["recognitionModel"] = "recognition_04" }))))
{
    content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
    await httpClient.PutAsync($"{ENDPOINT}/face/v1.0/persongroups/{personGroupId}", content);
}

In questo codice viene creato un PersonGroup con ID mypersongroupid ed è configurato per usare il modello di recognition_04 per estrarre le funzionalità del viso.

In modo corrispondente, è necessario specificare il modello da usare per rilevare i visi da confrontare con questo PersonGroup (tramite l'API Rileva ). Il modello usato deve essere sempre coerente con la configurazione di PersonGroup; in caso contrario, l'operazione avrà esito negativo a causa di modelli incompatibili.

Non vi è alcuna modifica nell'API Identifica da gruppo di persone ; è sufficiente specificare la versione del modello nel rilevamento.

Trovare visi simili con il modello specificato

È anche possibile specificare un modello di riconoscimento per la ricerca di somiglianza. È possibile assegnare la versione del modello con recognitionModel durante la creazione di FaceList con l'API Create Face List o CreateLarge Face List. Se non si specifica questo parametro, il recognition_01 modello viene usato per impostazione predefinita. Un FaceList userà sempre il modello di riconoscimento con cui è stato creato e i nuovi visi verranno associati a questo modello quando vengono aggiunti all'elenco; non è possibile modificarlo dopo la creazione. Per vedere il modello con cui è configurato FaceList , usare l'API Get Face List con il parametro returnRecognitionModel impostato su true.

Vedere l'esempio di codice .NET seguente.

using (var content = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new Dictionary<string, object> { ["name"] = "My face collection", ["recognitionModel"] = "recognition_04" }))))
{
    content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
    await httpClient.PutAsync($"{ENDPOINT}/face/v1.0/facelists/{faceListId}", content);
}

Questo codice crea un oggetto FaceList denominato My face collection, usando il modello recognition_04 per l'estrazione delle funzionalità. Quando si esegue una ricerca in FaceList per visi simili a un nuovo viso rilevato, è necessario che il viso sia stato rilevato (Rileva) usando il modello di recognition_04 . Come nella sezione precedente, il modello deve essere coerente.

Non vi è alcuna modifica nell'API Find Similar ; specificare solo la versione del modello nel rilevamento.

Verifica i volti con il modello specificato

L'API Verify Face To Face controlla se due visi appartengono alla stessa persona. Non sono state apportate modifiche all'API Verify per quanto riguarda i modelli di riconoscimento, ma è possibile confrontare solo i visi rilevati con lo stesso modello.

Valutare modelli diversi

Per confrontare le prestazioni dei diversi modelli di riconoscimento sui propri dati, è necessario:

  1. Creare quattro persongroupusando rispettivamente recognition_01, recognition_02, recognition_03 e recognition_04 .
  2. Usare i dati dell'immagine per rilevare i volti e registrarli in Person all'interno di questi quattro PersonGroup.
  3. Esegui il training di PersonGroup usando l'API Train Person Group.
  4. Eseguire il test con Identificazione da gruppo di persone in tutti e quattro i persongroupe confrontare i risultati.

Se in genere si specifica una soglia di attendibilità (un valore compreso tra zero e uno che determina il livello di attendibilità del modello per identificare un viso), potrebbe essere necessario usare soglie diverse per modelli diversi. Una soglia per un modello non deve essere condivisa con un altro e non produrrà necessariamente gli stessi risultati.

Passaggio successivo

In questo articolo hai appreso come specificare il modello di riconoscimento da usare con le diverse API del servizio Face. Seguire quindi una guida introduttiva per iniziare a usare il rilevamento dei volti.