Redact faces by using Azure AI Video Indexer API

Importante

A causa dell'annuncio di ritiro Servizi multimediali di Azure, Azure AI Video Indexer annuncia le modifiche alle funzionalità di Azure AI Video Indexer. Vedere Modifiche correlate al ritiro di Servizi multimediali di Azure (AMS) per comprendere cosa significa per l'account Video Indexer di Azure per intelligenza artificiale. Vedere la guida alla preparazione per il ritiro di AMS: aggiornamento VI e migrazione.

È possibile usare Video Indexer di Intelligenza artificiale di Azure per rilevare e identificare i visi nel video. Per modificare il video in modo da offuscare i visi di individui specifici, è possibile usare l'API.

Alcuni minuti di filmato che contengono più visi possono richiedere ore per eseguire manualmente la registrazione, ma usando i set di impostazioni nell'API Video Indexer, il processo di rollforward del viso richiede solo pochi semplici passaggi.

Questo articolo illustra come redigire i visi usando un'API. L'API Video Indexer include un set di impostazioni di redazione viso che offre funzionalità di rilevamento e offuscamento del viso scalabili (sfocatura) nel cloud. L'articolo illustra ogni passaggio della procedura di redact dei visi usando l'API in modo dettagliato.

Il video seguente illustra come creare un video usando l'API Video Indexer di Intelligenza artificiale di Azure.

Conformità, privacy e sicurezza

Come promemoria importante, è necessario rispettare tutte le leggi applicabili nell'uso di analisi o informazioni dettagliate derivate tramite Video Indexer.

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

Terminologia e gerarchia di ripetizione dei volti

La redazione del viso in Video Indexer si basa sull'output dei risultati esistenti del rilevamento viso di Video Indexer forniti nei set di impostazioni Video Standard e Advanced Analysis.

Per ricompilare un video, è prima necessario caricare un video in Video Indexer e completare un'analisi usando i set di impostazioni video Standard o Avanzati . A tale scopo, è possibile usare il sito Web o l'API di Video Indexer per intelligenza artificiale di Azure. È quindi possibile usare l'API di redaction del viso per fare riferimento a questo video usando il videoId valore . Creiamo un nuovo video in cui i visi indicati vengono elaborati. Sia l'analisi video che la ridistribuzione del viso sono processi fatturabili separati. Per altre informazioni, vedere la pagina dei prezzi.

Tipi di sfocatura

È possibile scegliere tra diversi tipi di sfocatura del viso. Per selezionare un tipo, usare un nome o un numero rappresentativo per il blurringKind parametro nel corpo della richiesta:

numero sfocatoKind nome sfocaturaKind Esempio
0 MediumBlur Foto della sfocatura media di Azure AI Video Indexer.
1 HighBlur Foto della sfocatura alta di Azure AI Video Indexer.
2 LowBlur Foto della sfocatura bassa di Azure AI Video Indexer.
3 Boundingbox Foto dei rettangoli di delimitazione di Video Indexer di Intelligenza artificiale di Azure.
4 Nero Foto del tipo di caselle nere di Azure AI Video Indexer.

È possibile specificare il tipo di sfocatura nel corpo della richiesta usando il blurringKind parametro .

Ecco un esempio:

{
    "faces": {
        "blurringKind": "HighBlur"
    }
}

In alternativa, usare un numero che rappresenta il tipo di sfocatura descritta nella tabella precedente:

{
    "faces": {
        "blurringKind": 1
    }
}

Filtri

È possibile applicare filtri per impostare gli ID viso da sfocatura. È possibile specificare gli ID dei visi in una matrice delimitata da virgole nel corpo del file JSON. Usare il scope parametro per escludere o includere questi visi per la redaction. Specificando gli ID, è possibile redigire tutti i visi , ad eccezione degli ID che indicano o redigino solo gli ID. Vedere gli esempi nelle sezioni successive.

Escludere l'ambito

Nell'esempio seguente, per redigire tutti i visi ad eccezione degli ID viso 1001 e 1016, usare l'ambito Exclude :

{
    "faces": {
        "blurringKind": "HighBlur",
        "filter": {
            "ids": [1001, 1016],
            "scope": "Exclude"
        }
    }
}

Includi ambito

Nell'esempio seguente usare l'ambito Include solo per gli ID viso 1001 e 1016:

{
    "faces": {
        "blurringKind": "HighBlur",
        "filter": {
            "ids": [1001, 1016],
            "scope": "Include"
        }
    }
}

Redact all faces (Redact all faces)

Per redigire tutti i visi, rimuovere il filtro dell'ambito:

{
    "faces": {
        "blurringKind": "HighBlur",
    }
}

Per recuperare un ID viso, è possibile passare al video indicizzato e recuperare il file dell'artefatto. L'artefatto contiene un file faces.json e un file di anteprima .zip che contiene tutti i visi rilevati nel video. È possibile associare il viso all'ID e decidere quali ID viso modificare.

Creare un processo di rollforward

Per creare un processo di rollforward, è possibile richiamare la chiamata API seguente:

POST https://api.videoindexer.ai/{location}/Accounts/{accountId}/Videos/{videoId}/redact[?name][&priority][&privacy][&externalId][&streamingPreset][&callbackUrl][&accessToken]

Sono necessari i valori seguenti:

Nome valore Descrizione
Accountid {accountId} ID dell'account Video Indexer.
Location {location} Area di Azure in cui si trova l'account Video Indexer. Ad esempio westus.
AccessToken {token} Token con diritti di collaboratore account generati tramite l'API REST di Azure Resource Manager .
Videoid {videoId} ID video del video di origine da ripetere. È possibile recuperare l'ID video usando l'API Elenco video .
Name {name} Nome del nuovo video redatto.

Ecco un esempio di richiesta:

https://api.videoindexer.ai/westeurope/Accounts/{id}/Videos/{id}/redact?priority=Low&name=testredaction&privacy=Private&streamingPreset=Default 

È possibile specificare il token come intestazione di autorizzazione con un tipo di valore di chiave oppure bearertoken:{token}è possibile specificarlo come parametro di query usando ?token={token}.

È anche necessario aggiungere un corpo della richiesta in formato JSON con le opzioni di rollforward del processo da applicare. Ecco un esempio:

{
    "faces": {
        "blurringKind": "HighBlur"
    }
}

Quando la richiesta ha esito positivo, si riceve la risposta HTTP 202 ACCEPTED.

Motitorare lo stato del processo

Nella risposta della richiesta di creazione del processo si riceve un'intestazione Location HTTP con un URL per il processo. È possibile usare lo stesso token per inviare una richiesta GET a questo URL per visualizzare lo stato del processo di rollforward.

Ecco un URL di esempio:

https://api.videoindexer.ai/westeurope/Accounts/<id>/Jobs/<id>

Di seguito è riportata una risposta di esempio:

{
    "creationTime": "2023-05-11T11:22:57.6114155Z",
    "lastUpdateTime": "2023-05-11T11:23:01.7993563Z",
    "progress": 20,
    "jobType": "Redaction",
    "state": "Processing"
}

Se si chiama lo stesso URL al termine del processo di rollforward, nell'intestazione Location si ottiene un URL di firma di accesso condiviso (SAS) di archiviazione al video redatto. Ad esempio:

https://api.videoindexer.ai/westeurope/Accounts/<id>/Videos/<id>/SourceFile/DownloadUrl 

Questo URL reindirizza al file di .mp4 archiviato nell'account Archiviazione di Azure.

Domande frequenti

Domanda Risposta
È possibile caricare un video e redact in un'unica operazione? No. È necessario prima caricare e analizzare un video usando l'API Video Indexer. Quindi, fare riferimento al video indicizzato nel processo di rollforward.
È possibile usare il sito Web di Azure AI Video Indexer per creare un video? No. Attualmente è possibile usare solo l'API per creare un processo di rollforward.
È possibile riprodurre il video redatto usando il sito Web di Video Indexer? Sì. Il video redatto è visibile nel sito Web di Video Indexer come qualsiasi altro video indicizzato, ma non contiene informazioni dettagliate.
Ricerca per categorie eliminare un video redatto? È possibile usare l'API Elimina video e fornire il Videoid valore per il video redatto.
È necessario passare il controllo dell'identificazione facciale per usare la redazione del viso? A meno che tu non rappresenti un dipartimento di polizia nel Stati Uniti, no. Anche se sei stato gestito, continuiamo a offrire il rilevamento dei volti. Non offriamo l'identificazione del viso se sei controllata. Tuttavia, è possibile redigire tutti i visi in un video usando solo il rilevamento dei volti.
La riscrittura del viso sovrascriverà il video originale? No. Il processo di rollforward del viso crea un nuovo file di output video.
Non tutti i visi sono correttamente elaborati. Cosa posso fare? La ridistribuzione si basa sul rilevamento iniziale del viso e sull'output di rilevamento della pipeline di analisi. Anche se vengono rilevati tutti i visi nella maggior parte dei casi, esistono circostanze in cui non è possibile rilevare un viso. Fattori come l'angolo del viso, il numero di fotogrammi presenti sul viso e la qualità del video di origine influiscono sulla qualità della redazione del viso. Per altre informazioni, vedere Face Insights.
È possibile redigire oggetti diversi dai visi? No. Attualmente, offriamo solo la redazione del viso. Se è necessario redigire altri oggetti, è possibile fornire commenti e suggerimenti sul prodotto nel canale Voce utente di Azure.
Quanto tempo è valido un URL di firma di accesso condiviso per scaricare il video redatto? Per scaricare il video redatto dopo la scadenza dell'URL di firma di accesso condiviso, è necessario chiamare l'URL di stato del processo iniziale. È consigliabile mantenere questi Jobstatus URL in un database nel back-end per riferimento futuro.

Codici di errore

Le sezioni seguenti descrivono gli errori che possono verificarsi quando si usa la redazione del viso.

Risposta: 404 Non trovato

L'account non è stato trovato o il video non è stato trovato.

Intestazioni della risposta

Nome Obbligatorio Type Descrizione
x-ms-request-id false string Un identificatore univoco globale (GUID) per la richiesta viene assegnato dal server a scopo di strumentazione. Il server assicura che tutti i log associati alla gestione della richiesta possano essere collegati all'ID richiesta del server. Un client può fornire questo ID richiesta in un ticket di supporto in modo che i tecnici del supporto possano trovare i log collegati a questa richiesta specifica. Il server verifica che l'ID richiesta sia univoco per ogni processo.

Corpo della risposta

Nome Obbligatorio Type
ErrorType false ErrorType
Message false string

JSON predefinito

{
    "ErrorType": "GENERAL",
    "Message": "string"
}

Risposta: 400 Richiesta non valida

L'input non è valido o non può redigirlo perché il caricamento originale non è riuscito. Caricare di nuovo il video.

Input non valido o non è possibile redigire il video perché il caricamento originale non è riuscito. Caricare di nuovo il video.

Intestazioni della risposta

Nome Obbligatorio Type Descrizione
x-ms-request-id false string Un GUID per la richiesta viene assegnato dal server a scopo di strumentazione. Il server assicura che tutti i log associati alla gestione della richiesta possano essere collegati all'ID richiesta del server. Un client può fornire questo ID richiesta in un ticket di supporto in modo che i tecnici del supporto possano trovare i log collegati a questa richiesta specifica. Il server verifica che l'ID richiesta sia univoco per ogni processo.

Corpo della risposta

Nome Obbligatorio Type
ErrorType false ErrorType
Message false string

JSON predefinito

{
    "ErrorType": "GENERAL",
    "Message": "string"
}

Risposta: 409 Conflitto

Il video è già in fase di indicizzazione.

Intestazioni della risposta

Nome Obbligatorio Type Descrizione
x-ms-request-id false string Un GUID per la richiesta viene assegnato dal server a scopo di strumentazione. Il server assicura che tutti i log associati alla gestione della richiesta possano essere collegati all'ID richiesta del server. Un client può fornire questo ID richiesta in un ticket di supporto in modo che i tecnici del supporto possano trovare i log collegati a questa richiesta specifica. Il server verifica che l'ID richiesta sia univoco per ogni processo.

Corpo della risposta

Nome Obbligatorio Type
ErrorType false ErrorType
Message false string

JSON predefinito

{
    "ErrorType": "GENERAL",
    "Message": "string"
}

Risposta: 401 Non autorizzato

Il token di accesso non è autorizzato ad accedere all'account.

Intestazioni della risposta

Nome Obbligatorio Type Descrizione
x-ms-request-id false string Un GUID per la richiesta viene assegnato dal server a scopo di strumentazione. Il server assicura che tutti i log associati alla gestione della richiesta possano essere collegati all'ID richiesta del server. Un client può fornire questo ID richiesta in un ticket di supporto in modo che i tecnici del supporto possano trovare i log collegati a questa richiesta specifica. Il server verifica che l'ID richiesta sia univoco per ogni processo.

Corpo della risposta

Nome Obbligatorio Type
ErrorType false ErrorType
Message false string

JSON predefinito

{
    "ErrorType": "USER_NOT_ALLOWED",
    "Message": "Access token is not authorized to access account 'SampleAccountId'."
}

Risposta: 500 Errore interno del server

Errore nel server.

Intestazioni della risposta

Nome Obbligatorio Type Descrizione
x-ms-request-id false string Un GUID per la richiesta viene assegnato dal server a scopo di strumentazione. Il server assicura che tutti i log associati alla gestione della richiesta possano essere collegati all'ID richiesta del server. Un client può fornire questo ID richiesta in un ticket di supporto in modo che i tecnici del supporto possano trovare i log collegati a questa richiesta specifica. Il server verifica che l'ID richiesta sia univoco per ogni processo.

Corpo della risposta

Nome Obbligatorio Type
ErrorType false ErrorType
Message false string

JSON predefinito

{
    "ErrorType": "GENERAL",
    "Message": "There was an error."
}

Risposta: 429 Troppe richieste

Sono state inviate troppe richieste. Usare l'intestazione della Retry-After risposta per decidere quando inviare la richiesta successiva.

Intestazioni della risposta

Nome Obbligatorio Type Descrizione
Retry-After false integer Intero decimale non negativo che indica il numero di secondi di ritardo dopo la ricezione della risposta.

Risposta: Timeout del gateway 504

Il server non ha risposto al gateway entro il tempo previsto.

Intestazioni della risposta

Nome Obbligatorio Type Descrizione
x-ms-request-id false string Un GUID per la richiesta viene assegnato dal server a scopo di strumentazione. Il server assicura che tutti i log associati alla gestione della richiesta possano essere collegati all'ID richiesta del server. Un client può fornire questo ID richiesta in un ticket di supporto in modo che i tecnici del supporto possano trovare i log collegati a questa richiesta specifica. Il server verifica che l'ID richiesta sia univoco per ogni processo.

JSON predefinito

{
    "ErrorType": "SERVER_TIMEOUT",
    "Message": "Server did not respond to gateway within expected time"
}