Pubblico
Questo tutorial è progettato per aiutarti a iniziare a esplorare e sviluppare applicazioni con l'API Video Intelligence. È pensato per persone con una conoscenza di base di Python. Inoltre, dovresti essere in grado di seguire le istruzioni anche con una conoscenza limitata della programmazione. Dopo aver seguito questo tutorial, dovresti essere in grado di utilizzare la documentazione di riferimento per creare le tue applicazioni di base.
Questo tutorial illustra un'applicazione API Video Intelligence utilizzando il codice Python. Lo scopo non è spiegare le librerie client Python, ma come effettuare chiamate all'API Video Intelligence utilizzando la funzionalità di rilevamento delle etichette video. Le applicazioni in Java e Node.js sono essenzialmente simili.
Se stai cercando un esempio solo di codice o un esempio in un'altra lingua, consulta la guida pratica complementare.
Prerequisiti
Questo tutorial ha i seguenti prerequisiti:
- Hai configurato un progetto API Video Intelligence nella console Google Cloud .
- Hai configurato il tuo ambiente utilizzando un account di servizio e le credenziali predefinite dell'applicazione.
- Hai una conoscenza di base della programmazione in Python.
- Hai configurato l'ambiente di sviluppo Python.
Ti consigliamo di installare sul sistema l'ultima versione di Python,pip
evirtualenv
. Per le istruzioni, consulta la guida alla configurazione dell'ambiente di sviluppo Python per Google Cloud. - Hai installato la libreria client Google Cloud.
Annotare un video utilizzando il rilevamento delle etichette
Questo tutorial illustra un'applicazione API Video di base, utilizzando una
richiesta LABEL_DETECTION
. Una richiesta LABEL_DETECTION
annota un video con
etichette (o "tag") selezionate in base al contenuto dell'immagine. Ad esempio, un
video di un treno a un incrocio potrebbe generare etichette come "treno",
"trasporto", "passaggio a livello".
Di seguito è riportato l'intero codice necessario per questo tutorial. La maggior parte dei commenti è stata rimossa da questo codice per evidenziare la sua brevità. I commenti vengono forniti in un secondo momento mentre esaminiamo il codice.
Questa semplice applicazione esegue le seguenti attività:
- Importa le librerie necessarie per eseguire l'applicazione.
- Prende un file video archiviato nell'URI Cloud Storage come argomento e
lo passa alla funzione
main()
. - Recupera le credenziali per eseguire il servizio API Video Intelligence.
- Crea una richiesta di annotazione video da inviare al servizio video.
- Invia la richiesta e restituisce un'operazione a lunga esecuzione.
- Esegue il ciclo dell'operazione a lunga esecuzione finché il video non viene elaborato e restituisce i valori disponibili.
- Analizza la risposta per il servizio e la mostra all'utente.
Importare librerie
Vengono importate alcune librerie standard: argparse
per consentire all'applicazione di
accettare i nomi dei file di input come argomenti e sys
per formattare l'output durante
l'attesa delle risposte dell'API. Il pacchetto time
viene importato per eseguire
alcuni semplici cicli di attesa.
Quando utilizzi l'API Video Intelligence, devi anche importare
google.cloud.videointelligence_v1
e la relativa classe di enumerazione, che contiene
la directory delle nostre chiamate API.
Eseguire l'applicazione
Qui, l'argomento passato viene analizzato per l'URI Cloud Storage del
nome file video e viene passato alla funzione main()
.
Autenticazione nell'API
Prima di comunicare con il servizio API Video Intelligence, devi autenticare il tuo servizio utilizzando le credenziali acquisite in precedenza. All'interno di un'applicazione, il modo più semplice per ottenere le credenziali è utilizzare le Credenziali predefinite dell'applicazione (ADC). Per impostazione predefinita, ADC tenta di ottenere le credenziali dal file di ambiente GOOGLE_APPLICATION_CREDENTIALS
, che deve essere impostato in modo da puntare al file della chiave JSON dell'account di servizio. Dovresti aver configurato l'account di servizio e l'ambiente per utilizzare ADC nella guida rapida.
Crea la richiesta
Ora che il servizio API Video Intelligence è pronto, puoi creare una richiesta per questo servizio. Le richieste all'API Video Intelligence vengono fornite come oggetti JSON. Consulta il riferimento dell'API Video Intelligence per informazioni complete sulla struttura specifica di una richiesta di questo tipo.
Questo snippet di codice esegue le seguenti attività:
- Crea il JSON per una richiesta POST al metodo
annotate_video()
. - Inserisce il percorso Cloud Storage del nome del file video passato nella richiesta.
- Indica che il metodo
annotate
deve eseguireLABEL_DETECTION
.
Controlla l'operazione
Utilizzando la richiesta di operazione esistente per l'operazione esistente, viene creato un ciclo while
per controllare periodicamente lo stato dell'operazione. Una volta che l'operazione ha indicato che è done
, la risposta viene analizzata.
Analizza la risposta
Una volta completata l'operazione, la risposta conterrà il risultato
all'interno di un
AnnotateVideoResponse,
che consiste in un elenco di annotationResults
, uno per ogni video inviato nella
richiesta. Poiché nella richiesta è stato inviato un solo video, viene preso il primo segmentLabelAnnotations
dei risultati e vengono esaminate tutte le etichette in segmentLabelAnnotations
. Utilizzando solo
segmentLabelAnnotations
, questo tutorial mostra solo le annotazioni a livello di video.
Ogni segment_label
include una descrizione (segment_label.description
), un elenco di categorie di entità (segment_label.category_entities
) e un elenco di segmenti che identificano l'ora di inizio/fine delle occorrenze dell'etichetta nel video (deve essere un segmento che copre l'intero video o segmento video nel caso di segment_label_annotations
).
{ "name":"us-west1.12089999971048628582", "metadata":{ "@type":"type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoProgress", "annotationProgress":[ { "inputUri":"gs://YOUR_BUCKET/YOUR_OBJECT", "updateTime":"2020-01-31T01:49:52.498015Z", "startTime":"2020-01-31T01:49:43.056481Z" } ] }, "done": true, "response":{ "@type":"type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoResponse", "annotationResults":[ { "inputUri":"gs://YOUR_BUCKET/YOUR_OBJECT", "segmentLabelAnnotations": [ { "entity": { "entityId": "/m/01yrx", "languageCode": "en-US" }, "segments": [ { "segment": { "startTimeOffset": "0s", "endTimeOffset": "14.833664s" }, "confidence": 0.98509187 } ] }, ... ] } ] } }
Poiché nella richiesta è stato inviato un solo video, viene stampato il
primo description
del primo risultato.
Esegui l'applicazione
Per eseguire l'applicazione, trasmetti l'URI Cloud Storage di un video:
$ python labels.py gs://YOUR_BUCKET/YOUR_OBJECT Operation us-west1.4757250774497581229 started: 2020-01-30T01:46:30.158989Z Operation processing ... The video has been successfully processed. Video label description: urban area Label category description: city Segment 0: 0.0s to 38.752016s Confidence: 0.946980476379 Video label description: traffic Segment 0: 0.0s to 38.752016s Confidence: 0.94105899334 Video label description: vehicle Segment 0: 0.0s to 38.752016s Confidence: 0.919958174229 ...
Output
Di seguito è riportato un esempio di possibile output.
Processing video for label annotations:Finished processing. Video label description: crowd Label category description: people Segment 0: 0.0s to 60.24s Confidence: 0.527720749378
Video label description: official Label category description: person Segment 0: 0.0s to 60.24s Confidence: 0.372822880745
Video label description: audience Label category description: people Segment 0: 0.0s to 60.24s Confidence: 0.501719772816
Video label description: news Segment 0: 0.0s to 60.24s Confidence: 0.867252230644
Video label description: people Label category description: person Segment 0: 0.0s to 60.24s Confidence: 0.46747264266
Video label description: politics Segment 0: 0.0s to 60.24s Confidence: 0.319397002459
Complimenti! Hai eseguito un'attività di annotazione utilizzando l'API Video Intelligence.