1. Panoramica
L'API Google Cloud Video Intelligence consente agli sviluppatori di utilizzare la tecnologia di analisi video di Google nelle proprie applicazioni.
Può essere usato per:
- Rilevamento etichette: consente di rilevare oggetti quali cani, fiori o esseri umani nel video.
- Rilevamento di contenuti espliciti: consente di rilevare i contenuti per adulti all'interno di un video.
- Rilevamento del cambio di inquadratura: rileva i cambiamenti di scena all'interno del video.
L'API REST consente agli utenti di annotare i video archiviati localmente o in Google Cloud Storage con informazioni contestuali a livello dell'intero video, per segmento, per inquadratura e per fotogramma.
In questo codelab, ti concentrerai sull'utilizzo dell'API Video Intelligence con C#. Imparerai ad analizzare i video per individuare etichette, cambi di inquadratura e rilevamento di contenuti espliciti.
Cosa imparerai a fare
- Come utilizzare Cloud Shell
- Come abilitare l'API Video Intelligence
- Come autenticare le richieste API
- Come installare la libreria client di Google Cloud per C#
- Come analizzare i video per trovare le etichette
- Come analizzare i video per cambiare le inquadrature
- Come analizzare i video per il rilevamento di contenuti espliciti
Che cosa ti serve
Sondaggio
Come utilizzerai questo tutorial?
Come valuteresti la tua esperienza con C#?
Come giudichi la tua esperienza di utilizzo dei servizi della piattaforma Google Cloud?
2. Configurazione e requisiti
Configurazione dell'ambiente da seguire in modo autonomo
- Accedi alla console Google Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.
- Il Nome progetto è il nome visualizzato dei partecipanti del progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google. Puoi sempre aggiornarla.
- L'ID progetto è univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo essere stato impostato). La console Cloud genera automaticamente una stringa univoca. di solito non ti importa cosa sia. Nella maggior parte dei codelab, dovrai fare riferimento al tuo ID progetto (in genere identificato come
PROJECT_ID
). Se l'ID generato non ti soddisfa, potresti generarne un altro casuale. In alternativa, puoi provarne una personalizzata per verificare se è disponibile. Non può essere modificato dopo questo passaggio e rimane per tutta la durata del progetto. - Per informazione, c'è un terzo valore, un numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
- Successivamente, dovrai abilitare la fatturazione nella console Cloud per utilizzare risorse/API Cloud. L'esecuzione di questo codelab non ha alcun costo. Per arrestare le risorse ed evitare di incorrere in fatturazione dopo questo tutorial, puoi eliminare le risorse che hai creato o eliminare il progetto. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.
Avvia Cloud Shell
Anche se Google Cloud può essere utilizzato da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.
Attiva Cloud Shell
- Dalla console Cloud, fai clic su Attiva Cloud Shell .
Se è la prima volta che avvii Cloud Shell, ti verrà mostrata una schermata intermedia che descrive di cosa si tratta. Se ti è stata presentata una schermata intermedia, fai clic su Continua.
Il provisioning e la connessione a Cloud Shell dovrebbero richiedere solo qualche istante.
Questa macchina virtuale viene caricata con tutti gli strumenti di sviluppo necessari. Offre una home directory permanente da 5 GB e viene eseguita in Google Cloud, migliorando notevolmente le prestazioni di rete e l'autenticazione. Gran parte, se non tutto, del lavoro in questo codelab può essere svolto con un browser.
Una volta stabilita la connessione a Cloud Shell, dovresti vedere che hai eseguito l'autenticazione e che il progetto è impostato sul tuo ID progetto.
- Esegui questo comando in Cloud Shell per verificare che l'account sia autenticato:
gcloud auth list
Output comando
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Esegui questo comando in Cloud Shell per confermare che il comando gcloud è a conoscenza del tuo progetto:
gcloud config list project
Output comando
[core] project = <PROJECT_ID>
In caso contrario, puoi impostarlo con questo comando:
gcloud config set project <PROJECT_ID>
Output comando
Updated property [core/project].
3. abilita l'API Video Intelligence
Prima di poter iniziare a utilizzare l'API Video Intelligence, devi abilitare l'API. Puoi abilitare l'API utilizzando il comando seguente in Cloud Shell:
gcloud services enable videointelligence.googleapis.com
4. Installa la libreria client dell'API Google Cloud Video Intelligence per C#
Per prima cosa, crea una semplice applicazione console C# che utilizzerai per eseguire esempi dell'API Video Intelligence:
dotnet new console -n VideoIntApiDemo
Dovresti vedere l'applicazione creata e le dipendenze risolte:
The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.
Quindi, vai alla cartella VideoIntApiDemo
:
cd VideoIntApiDemo/
E aggiungi il pacchetto NuGet Google.Cloud.VideoIntelligence.V1
al progetto:
dotnet add package Google.Cloud.VideoIntelligence.V1
info : Adding PackageReference for package 'Google.Cloud.VideoIntelligence.V1' into project '/home/atameldev/VideoIntApiDemo/VideoIntApiDemo.csproj'.
log : Restoring packages for /home/atameldev/VideoIntApiDemo/VideoIntApiDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.VideoIntelligence.V1' version '1.0.0' added to file '/home/atameldev/VideoIntApiDemo/VideoIntApiDemo.csproj'.
Ora è tutto pronto per utilizzare l'API Video Intelligence.
5. Rilevamento etichette
L'analisi delle etichette rileva le etichette in un video archiviate localmente o in Google Cloud Storage. In questa sezione analizzerai un video per trovare le etichette archiviate in Google Cloud Storage.
Innanzitutto, apri l'editor di codice dall'angolo in alto a destra di Cloud Shell:
Vai al file Program.cs
all'interno della cartella VideoIntApiDemo
e sostituisci il codice con il seguente:
using System;
using System.Collections.Generic;
using Google.Cloud.VideoIntelligence.V1;
namespace VideoIntApiDemo
{
class Program
{
static void Main(string[] args)
{
var client = VideoIntelligenceServiceClient.Create();
var request = new AnnotateVideoRequest
{
InputUri = "gs://cloud-samples-data/video/gbikes_dinosaur.mp4",
Features = { Feature.LabelDetection }
};
var op = client.AnnotateVideo(request).PollUntilCompleted();
foreach (var result in op.Result.AnnotationResults)
{
PrintLabels("Video", result.SegmentLabelAnnotations);
PrintLabels("Shot", result.ShotLabelAnnotations);
PrintLabels("Frame", result.FrameLabelAnnotations);
}
}
static void PrintLabels(string labelName,
IEnumerable<LabelAnnotation> labelAnnotations)
{
foreach (var annotation in labelAnnotations)
{
Console.WriteLine($"{labelName} label: {annotation.Entity.Description}");
foreach (var entity in annotation.CategoryEntities)
{
Console.WriteLine($"{labelName} label category: {entity.Description}");
}
foreach (var segment in annotation.Segments)
{
Console.Write("Segment location: ");
Console.Write(segment.Segment.StartTimeOffset);
Console.Write(":");
Console.WriteLine(segment.Segment.EndTimeOffset);
Console.WriteLine($"Confidence: {segment.Confidence}");
}
}
}
}
}
Dedica qualche minuto a studiare il codice e vedere come il video viene etichettato*.*
Torna in Cloud Shell ed esegui l'app:
dotnet run
L'API Video Intelligence impiega diversi secondi per estrarre le etichette, ma alla fine dovresti vedere il seguente output:
Video label: bicycle
Video label category: vehicle
Segment location: "0s":"42.766666s"
Confidence: 0.475821
Video label: tyrannosaurus
Video label category: dinosaur
Segment location: "0s":"42.766666s"
Confidence: 0.4222222
Video label: tree
Video label category: plant
Segment location: "0s":"42.766666s"
Confidence: 0.4231415
...
Riepilogo
In questo passaggio hai potuto elencare tutte le etichette di un video utilizzando l'API Video Intelligence. Per saperne di più, consulta la pagina Rilevamento etichette.
6. Rilevamento cambio di inquadratura
Puoi utilizzare l'API Video Intelligence per rilevare i cambi di inquadratura di un video archiviato localmente o in Google Cloud Storage. In questa sezione eseguirai l'analisi dei video per le modifiche alle inquadrature di un file che si trova in Google Cloud Storage.
Per rilevare i cambi di inquadratura, vai al file Program.cs
all'interno della cartella VideoIntApiDemo
e sostituisci il codice con il codice seguente:
using System;
using Google.Cloud.VideoIntelligence.V1;
namespace VideoIntApiDemo
{
class Program
{
static void Main(string[] args)
{
var client = VideoIntelligenceServiceClient.Create();
var request = new AnnotateVideoRequest
{
InputUri = "gs://cloud-samples-data/video/gbikes_dinosaur.mp4",
Features = { Feature.ShotChangeDetection }
};
var op = client.AnnotateVideo(request).PollUntilCompleted();
foreach (var result in op.Result.AnnotationResults)
{
foreach (var annotation in result.ShotAnnotations)
{
Console.Out.WriteLine("Start Time Offset: {0}\tEnd Time Offset: {1}",
annotation.StartTimeOffset, annotation.EndTimeOffset);
}
}
}
}
}
Dedica un minuto o due a studiare il codice e vedere come viene eseguito il rilevamento dell'inquadratura.
Esegui nuovamente l'app in Cloud Shell. Dovresti vedere l'output seguente:
dotnet run
Dovresti vedere l'output seguente:
Start Time Offset: "0s" End Time Offset: "5.166666s"
Start Time Offset: "5.233333s" End Time Offset: "10.066666s"
Start Time Offset: "10.100s" End Time Offset: "28.133333s"
Start Time Offset: "28.166666s" End Time Offset: "42.766666s"
Riepilogo
In questo passaggio hai potuto utilizzare l'API Video Intelligence per rilevare i cambi di inquadratura in un file archiviato in Google Cloud Storage. Scopri di più sulle modifiche agli inquadratura.
7. Rilevamento di contenuti espliciti
Il rilevamento di contenuti espliciti rileva i contenuti per adulti all'interno di un video. I contenuti per adulti sono contenuti generalmente appropriati per gli utenti che hanno compiuto 18 anni, inclusi, a titolo esemplificativo, nudità, atti sessuali e pornografia (inclusi cartoni animati o anime). La risposta include un valore di probabilità suddiviso in bucket, compreso tra VERY_UNLIKELY e VERY_LIKELY.
Quando il rilevamento di contenuti espliciti valuta un video, lo fa in base al frame e prende in considerazione solo i contenuti visivi. Il componente audio del video non viene utilizzato per valutare il livello dei contenuti espliciti.
Per rilevare contenuti espliciti, vai al file Program.cs
all'interno della cartella VideoIntApiDemo
e sostituisci il codice con quanto segue:
using System;
using Google.Cloud.VideoIntelligence.V1;
namespace VideoIntApiDemo
{
class Program
{
static void Main(string[] args)
{
var client = VideoIntelligenceServiceClient.Create();
var request = new AnnotateVideoRequest
{
InputUri = "gs://cloud-samples-data/video/gbikes_dinosaur.mp4",
Features = { Feature.ExplicitContentDetection }
};
var op = client.AnnotateVideo(request).PollUntilCompleted();
foreach (var result in op.Result.AnnotationResults)
{
foreach (var frame in result.ExplicitAnnotation.Frames)
{
Console.WriteLine("Time Offset: {0}", frame.TimeOffset);
Console.WriteLine("Pornography Likelihood: {0}", frame.PornographyLikelihood);
Console.WriteLine();
}
}
}
}
}
Dedica qualche minuto a studiare il codice e vedere come è stato eseguito il rilevamento di contenuti espliciti*.*
Torna in Cloud Shell ed esegui l'app:
dotnet run
L'operazione potrebbe richiedere diversi secondi, ma alla fine dovresti vedere il seguente output:
dotnet run
Time Offset: "0.056149s"
Pornography Likelihood: VeryUnlikely
Time Offset: "1.166841s"
Pornography Likelihood: VeryUnlikely
...
Time Offset: "41.678209s"
Pornography Likelihood: VeryUnlikely
Time Offset: "42.596413s"
Pornography Likelihood: VeryUnlikely
Riepilogo
In questo passaggio, hai potuto eseguire il rilevamento di contenuti espliciti su un video utilizzando l'API Video Intelligence. Scopri di più sul rilevamento di contenuti espliciti.
8. Complimenti!
Hai imparato a utilizzare l'API Video Intelligence con C#.
Esegui la pulizia
Per evitare che al tuo account Google Cloud Platform vengano addebitate le risorse utilizzate in questa guida rapida, procedi come segue.
- Vai alla console di Cloud Platform.
- Seleziona il progetto che vuoi chiudere e fai clic su "Elimina". in alto: in questo modo viene pianificata l'eliminazione del progetto.
Scopri di più
- API Google Cloud Video Intelligence: https://cloud.google.com/video-intelligence/docs/
- C#/.NET su Google Cloud: https://cloud.google.com/dotnet/
- Client Google Cloud .NET: https://googlecloudplatform.github.io/google-cloud-dotnet/
Licenza
Questo lavoro è concesso in licenza ai sensi di una licenza Creative Commons Attribution 2.0 Generic.