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. Dovresti anche essere in grado di seguire con una conoscenza limitata della programmazione. Dopo aver completato questo tutorial, dovresti essere in grado di utilizzare la documentazione di riferimento per creare le tue applicazioni di base.
Questo tutorial illustra un'applicazione dell'API Video Intelligence utilizzando il codice Python. Lo scopo non è spiegare le librerie client Python, ma spiegare 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 di solo codice o un esempio in un'altra lingua, consulta la guida illustrativa complementare how-to guide.
Prerequisiti
Questo tutorial ha i seguenti prerequisiti:
- Hai configurato un progetto dell'API Video Intelligence nella Google Cloud console.
- Hai configurato l'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 le versioni più recenti di Python,pipevirtualenv. 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 di base dell'API Video, 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 passaggio a livello può produrre 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.
- Accetta un file video archiviato nell'URI Cloud Storage come argomento e lo passa alla funzione
main(). - Ottiene le credenziali per eseguire il servizio dell'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 un loop sull'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.
Importa le 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 loop 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 chiamate API.
Eseguire l'applicazione
Qui, l'argomento passato viene analizzato per l'URI Cloud Storage del nome del file video e viene passato alla funzione main().
Autenticazione nell'API
Prima di comunicare con il servizio dell'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 del tuo account di servizio. Dovresti aver configurato il tuo account di servizio
e l'ambiente per utilizzare ADC nella guida rapida.
Creare la richiesta
Ora che il servizio dell'API Video Intelligence è pronto, puoi creare una richiesta a questo servizio. Le richieste all'API Video Intelligence vengono fornite come oggetti JSON. Consulta la documentazione di 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
annotatedeve eseguireLABEL_DETECTION.
Controllare l'operazione
Utilizzando la richiesta di operazione esistente per l'operazione esistente, viene creato un loop while per controllare periodicamente lo stato dell'operazione. Una volta che l'operazione ha indicato che è done, la risposta viene analizzata.
Analizzare 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 in
the request. Poiché nella richiesta è stato inviato un solo video, viene presa la
prima segmentLabelAnnotations dei risultati e vengono eseguite 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 delle etichette 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 stampata la prima description del primo risultato.
Eseguire l'applicazione
Per eseguire l'applicazione, è sufficiente passargli 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 output possibile.
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.