Condividi tramite


Redigere i volti utilizzando l'API di Indicizzazione Video di Azure AI

È 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 essere oscurati manualmente, ma utilizzando i preset nell'API di Video Indexer, il processo di oscuramento 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 oscuramento dei visi usando l'API in dettaglio.

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 Face è limitato in base ai criteri di elegibilità e utilizzo per supportare i principi dell'intelligenza artificiale responsabile di Microsoft. Il servizio Face è disponibile solo per i clienti e i partner gestiti da Microsoft. Usare il modulo di acquisizione riconoscimento volto per richiedere l'accesso. Per altre informazioni, vedere la pagina di accesso limitato al volto.

Terminologia e gerarchia di anonimizzazione dei volti

La redazione del viso in Video Indexer si basa sull'output dei risultati esistenti del rilevamento viso di Video Indexer forniti nelle configurazioni Video Standard e Analisi Avanzata.

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'APIdi 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 oscurati. Sia l'analisi video che l'oscuramento dei volti 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 tipo sfocatura Esempio
0 MediumBlur Foto con sfocatura media dell'Azure AI Video Indexer.
1 HighBlur Foto dell'indicizzatore video di Azure AI con alta sfocatura.
2 LowBlur Foto della sfocatura bassa di Azure AI Video Indexer.
3 BoundingBox Foto dei box di delimitazione di Video Indexer di AI 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 come descritto nella tabella precedente:

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

Filtri

È possibile applicare filtri per impostare quali ID viso sfocare. È 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 redigere tutti i volti ad eccezione degli ID che indichi o redigere solo quegli ID. Vedere gli esempi nelle sezioni successive.

Escludere l'ambito

Nell'esempio seguente, per redigere tutti i volti ad eccezione degli ID dei volti 1001 e 1016, usare l'ambito Exclude:

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

Includi ambito

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

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

Redattare tutti i volti

Per offuscare tutti i volti, rimuovere il filtro di copertura.

{
    "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 oscurare.

Creare un lavoro di redazione

Per creare un'attività di redazione, è possibile richiamare la seguente chiamata API:

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 che ha un tipo di valore di chiave di bearertoken:{token}, oppure è possibile fornirlo come parametro di query utilizzando ?token={token}.

È anche necessario aggiungere un body della richiesta in formato JSON con le opzioni per l'attività di redazione da applicare. Ecco un esempio:

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

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

Monitorare lo stato del processo

Nella risposta alla richiesta di creazione del lavoro, si riceve un'intestazione HTTP Location che contiene un URL per il lavoro. È possibile usare lo stesso token per inviare una richiesta GET a questo URL per visualizzare lo stato del processo di redazione.

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 redazione, 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 che viene archiviato nell'account di archiviazione di Azure.

Domande frequenti

Domanda Risposta
È possibile caricare un video e modificarlo in un'unica operazione? No È necessario prima caricare e analizzare un video usando l'API Video Indexer. Quindi, fare riferimento al video indicizzato nel vostro lavoro di redazione.
È possibile usare il sito Web di Azure AI Video Indexer per creare un video? No Attualmente è possibile utilizzare solo l'API per creare un'attività di redazione.
È 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.
Come si cancella un video censurato? È possibile usare una richiesta di API Elimina video e specificare 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 limitato, continuiamo a offrire il rilevamento dei volti. Non offriamo l'identificazione del viso se il tuo accesso è limitato. Tuttavia, è possibile oscurare tutte le facce in un video usando solo il rilevamento dei volti.
La riscrittura del viso sovrascrive il video originale? No Il compito di oscuramento dei volti crea un nuovo file di output video.
Non tutti i visi sono correttamente elaborati. Cosa posso fare? La redazione si basa sul rilevamento iniziale dei volti e sull'output 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 in cui il viso è presente e la qualità del video di origine influiscono sulla qualità dell'oscuramento del viso. Per altre informazioni, vedere Face Insights.
È possibile oscurare oggetti diversi dai volti? 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 SAS per scaricare il video censurato? Per scaricare il video modificato dopo la scadenza dell'URL di firma di accesso condiviso, è necessario accedere all'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 Tipo Descrizione
x-ms-request-id falso corda 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 Tipo
ErrorType falso ErrorType
Message falso corda

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 Tipo Descrizione
x-ms-request-id falso corda Un GUID per la richiesta viene assegnato dal server a scopo di monitoraggio. 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 Tipo
ErrorType falso ErrorType
Message falso corda

JSON predefinito

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

Risposta: 409 Conflitto

Il video è già in fase di indicizzazione.

Intestazioni della risposta

Nome Obbligatorio Tipo Descrizione
x-ms-request-id falso corda Un GUID per la richiesta viene assegnato dal server a scopo di monitoraggio. 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 Tipo
ErrorType falso ErrorType
Message falso corda

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 Tipo Descrizione
x-ms-request-id falso corda Un GUID per la richiesta viene assegnato dal server a scopo di monitoraggio. 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 Tipo
ErrorType falso ErrorType
Message falso corda

JSON predefinito

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

Risposta: 500 Errore interno del server

Si è verificato un errore nel server.

Intestazioni della risposta

Nome Obbligatorio Tipo Descrizione
x-ms-request-id falso corda Un GUID per la richiesta viene assegnato dal server a scopo di monitoraggio. 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 Tipo
ErrorType falso ErrorType
Message falso corda

JSON predefinito

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

Risposta: 429 Troppe richieste

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

Intestazioni della risposta

Nome Obbligatorio Tipo Descrizione
Retry-After falso numero intero 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 Tipo Descrizione
x-ms-request-id falso corda Un GUID per la richiesta viene assegnato dal server a scopo di monitoraggio. 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"
}