Pubblico
Questo tutorial è pensato per aiutarti a iniziare a esplorare e lo sviluppo di applicazioni con l'API Video Intelligence. È progettato per chi ha già familiarità con Python. Dovresti anche essere in grado di da seguire insieme con conoscenze limitate di programmazione. Avere seguito questo tutorial, dovresti essere in grado di usare Documentazione di riferimento per creare la tua applicazioni di base.
Questo tutorial illustra i passaggi di un'applicazione API Video Intelligence che utilizza Python le API nel tuo codice. Lo scopo qui non è spiegare le librerie client Python, ma spiegare come effettuare chiamate all'API Video Intelligence utilizzando il rilevamento etichette video funzionalità. Le applicazioni in Java e Node.js sono essenzialmente simili.
Se cerchi un esempio solo di codice o in un'altra lingua, dai un'occhiata al companion guida illustrativa.
Prerequisiti
Questo tutorial prevede i seguenti prerequisiti:
- Hai configurato un progetto API Video Intelligence nella console Google Cloud.
- Hai configurato l'ambiente utilizzando un account di servizio Credenziali predefinite dell'applicazione.
- Hai una conoscenza di base della programmazione di Python.
- Hai configurato il tuo ambiente di sviluppo Python.
È consigliabile hai installato la versione più recente di Python,pip
evirtualenv
del tuo sistema. Per le istruzioni, consulta la Guida alla configurazione dell'ambiente di sviluppo Python. per Google Cloud. - Tu abbia installato la libreria client di Google Cloud.
Annota un video utilizzando il rilevamento etichette
Questo tutorial illustra un'applicazione API Video di base, utilizzando un
Richiesta di LABEL_DETECTION
. Una richiesta LABEL_DETECTION
annota un video con
le etichette (o "tag") selezionate in base ai contenuti dell'immagine. Ad esempio, un
di un treno che attraversa un incrocio può produrre etichette come "treno",
"trasporti", "passaggio a livello".
Di seguito è riportato l'intero codice necessario per questo tutorial. Con più commenti sono state rimosse dal codice per evidenziarne la brevità. Invece, vengono forniti in un secondo momento, mentre esamineremo il codice.
Questa semplice applicazione esegue le seguenti attività:
- Importa le librerie necessarie per eseguire l'applicazione.
- Prende come argomento un file video archiviato nell'URI Cloud Storage e
la 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 loop dell'operazione a lunga esecuzione finché il video non viene elaborato e restituisce i valori disponibili.
- Analizza la risposta per il servizio e mostra la risposta all'utente.
Importa librerie
Sono state importate alcune librerie standard: argparse
per consentire all'applicazione di
accetta i nomi file di input come argomenti e sys
per la formattazione dell'output mentre
in attesa di risposte dell'API. Il pacchetto time
è stato importato per l'esecuzione
ad alcuni semplici anelli di attesa.
Quando utilizzi l'API Video Intelligence, dovrai anche importare
google.cloud.videointelligence_v1
e la relativa classe di enumerazione, che contiene
la directory delle nostre chiamate API.
Eseguire l'applicazione
In questo caso, l'argomento passato viene analizzato per rilevare l'URI Cloud Storage di
il nome file del video e viene passato alla funzione main()
.
Autenticazione nell'API
Prima di comunicare con il servizio API Video Intelligence, è necessario
di autenticare il servizio utilizzando le credenziali acquisite in precedenza. All'interno di un oggetto
un'applicazione, il modo più semplice per ottenere le credenziali è usare
Credenziali predefinite dell'applicazione
(ADC). Per impostazione predefinita, ADC tenta di ottenere le credenziali
GOOGLE_APPLICATION_CREDENTIALS
file di ambiente, che deve essere impostato come punto
al file di chiave JSON dell'account di servizio. (Dovresti aver configurato il 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 a quel servizio. Le richieste all'API Video Intelligence forniti come oggetti JSON. Consulta le Riferimento API Video Intelligence per informazioni complete sulla struttura specifica di tale richiesta.
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 file del video passato in la richiesta.
- Indica che il metodo
annotate
deve eseguireLABEL_DETECTION
.
Controlla l'operazione
Utilizzo della richiesta di operazione esistente per l'operazione esistente, un loop while
per controllare periodicamente lo stato dell'operazione. Una volta
ha indicato che l'operazione è 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
la richiesta. Poiché nella richiesta è stato inviato un solo video,
vengono utilizzati i primi segmentLabelAnnotations
dei risultati, tutte le etichette in
segmentLabelAnnotations
sono in loop. Utilizzando solo
segmentLabelAnnotations
, questo tutorial mostra solo le annotazioni a livello di video.
Ogni segment_label
include una descrizione (segment_label.description
), un
di categorie di entità (segment_label.category_entities
) e un elenco di
segmenti che identificano l'ora di inizio e di fine delle occorrenze delle etichette nel video
(dovrebbe essere un segmento che copra l'intero segmento video o 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,
vengono stampati i primi 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 un 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.