1. Omówienie
Interfejs Google Cloud Video Intelligence API umożliwia programistom używanie w aplikacjach technologii analizy wideo Google.
Dzięki temu możesz:
- Wykrywanie etykiet: wykrywa obiekty w filmie, takie jak pies, kwiat czy człowiek.
- Wykrywanie treści dla dorosłych: wykrywanie treści dla dorosłych w filmie.
- Wykrywanie zmiany ujęcia: wykrywa zmiany scen w filmie.
Interfejs API typu REST umożliwia użytkownikom dodawanie adnotacji do filmów przechowywanych lokalnie lub w Google Cloud Storage za pomocą informacji kontekstowych na poziomie całego filmu, segmentu, pojedynczego ujęcia i klatki.
W tym ćwiczeniu w Codelabs dowiesz się, jak używać interfejsu Video Intelligence API w języku C#. Dowiesz się, jak analizować filmy pod kątem etykiet, zmian ujęć i wykrywania treści dla pełnoletnich.
Czego się nauczysz
- Jak używać Cloud Shell
- Jak włączyć interfejs Video Intelligence API
- Jak uwierzytelniać żądania do interfejsu API
- Jak zainstalować bibliotekę klienta Google Cloud dla języka C#
- Jak analizować filmy pod kątem etykiet
- Jak analizować filmy pod kątem zmian ujęć
- Jak analizować filmy pod kątem wykrywania treści dla dorosłych
Czego potrzebujesz
Ankieta
Jak wykorzystasz ten samouczek?
Jak oceniasz swoje doświadczenia z językiem C#?
Jak oceniasz swoje wrażenia z korzystania z usług Google Cloud Platform?
2. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.
- Nazwa projektu jest wyświetlaną nazwą uczestników tego projektu. To ciąg znaków, który nie jest używany przez interfejsy API Google. W każdej chwili możesz ją zaktualizować.
- Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić (po jego ustawieniu nie można go zmienić). Cloud Console automatycznie wygeneruje unikalny ciąg znaków. zwykle nieważne, co ona jest. W większości ćwiczeń w Codelabs musisz podać swój identyfikator projektu (zwykle identyfikowany jako
PROJECT_ID
). Jeśli nie podoba Ci się wygenerowany identyfikator, możesz wygenerować kolejny losowy. Możesz też spróbować własnych sił i sprawdzić, czy jest dostępna. Po wykonaniu tej czynności nie można jej już zmienić. Pozostanie ona przez cały czas trwania projektu. - Jest jeszcze trzecia wartość, numer projektu, z którego korzystają niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w Cloud Console, aby korzystać z zasobów Cloud/interfejsów API. Ukończenie tego ćwiczenia z programowania nic nie kosztuje. Aby wyłączyć zasoby w celu uniknięcia naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub projekt. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.
Uruchamianie Cloud Shell
Google Cloud można obsługiwać zdalnie z laptopa, ale w ramach tego ćwiczenia z programowania wykorzystasz Google Cloud Shell – środowisko wiersza poleceń działające w chmurze.
Aktywowanie Cloud Shell
- W konsoli Cloud kliknij Aktywuj Cloud Shell
.
Jeśli uruchamiasz Cloud Shell po raz pierwszy, zobaczysz ekran pośredni z opisem tej usługi. Jeśli wyświetlił się ekran pośredni, kliknij Dalej.
Uzyskanie dostępu do Cloud Shell i połączenie się z nim powinno zająć tylko kilka chwil.
Ta maszyna wirtualna ma wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i uwierzytelnianie. Większość zadań w ramach tego ćwiczenia z programowania można wykonać w przeglądarce.
Po nawiązaniu połączenia z Cloud Shell powinno pojawić się potwierdzenie, że użytkownik jest uwierzytelniony, a projekt jest ustawiony na identyfikator Twojego projektu.
- Uruchom to polecenie w Cloud Shell, aby potwierdzić, że jesteś uwierzytelniony:
gcloud auth list
Dane wyjściowe polecenia
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Uruchom to polecenie w Cloud Shell, aby sprawdzić, czy polecenie gcloud zna Twój projekt:
gcloud config list project
Dane wyjściowe polecenia
[core] project = <PROJECT_ID>
Jeśli tak nie jest, możesz go ustawić za pomocą tego polecenia:
gcloud config set project <PROJECT_ID>
Dane wyjściowe polecenia
Updated property [core/project].
3. Włączanie interfejsu Video Intelligence API
Zanim zaczniesz korzystać z interfejsu Video Intelligence API, musisz go włączyć. Interfejs API możesz włączyć, używając w Cloud Shell tego polecenia:
gcloud services enable videointelligence.googleapis.com
4. Instalowanie biblioteki klienta interfejsu Google Cloud Video Intelligence API dla języka C#
Najpierw utwórz prostą aplikację konsoli w C#, której będziesz używać do uruchamiania przykładów interfejsu Video Intelligence API:
dotnet new console -n VideoIntApiDemo
Powinna pojawić się utworzona aplikacja i zamknięte zależności:
The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.
Następnie przejdź do folderu VideoIntApiDemo
:
cd VideoIntApiDemo/
I dodaj do projektu pakiet NuGet Google.Cloud.VideoIntelligence.V1
:
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'.
Teraz możesz korzystać z interfejsu Video Intelligence API.
5. wykrywanie etykiet
Analiza etykiet wykrywa etykiety w filmie przechowywane lokalnie lub w Google Cloud Storage. W tej sekcji przeanalizujesz film dotyczący etykiet przechowywanych w Google Cloud Storage.
Najpierw otwórz edytor kodu w prawym górnym rogu Cloud Shell:
Przejdź do pliku Program.cs
znajdującego się w folderze VideoIntApiDemo
i zastąp kod poniższym kodem:
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}");
}
}
}
}
}
Poświęć chwilę na zapoznanie się z kodem i sprawdź, jak oznakowany jest film*.*
Uruchom aplikację w Cloud Shell:
dotnet run
Wyodrębnienie etykiet przez interfejs Video Intelligence API może zająć kilka sekund, ale w końcu zobaczysz te dane wyjściowe:
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
...
Podsumowanie
W tym kroku udało Ci się wyświetlić listę wszystkich etykiet w filmie za pomocą interfejsu Video Intelligence API. Więcej informacji znajdziesz na stronie Wykrywanie etykiet.
6. Wykrywanie zmiany strzału
Interfejs Video Intelligence API pozwala wykrywać zmiany ujęć w filmach przechowywanych lokalnie lub w Google Cloud Storage. W tej sekcji przeprowadzisz analizę wideo pod kątem zmian w ujęciach w pliku znajdującym się w Google Cloud Storage.
Aby wykryć zmiany ujęć, przejdź do pliku Program.cs
w folderze VideoIntApiDemo
i zastąp kod tym kodem:
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);
}
}
}
}
}
Poświęć chwilę na zapoznanie się z kodem i zobacz, jak działa wykrywanie strzałów.
Uruchom aplikację z powrotem w Cloud Shell. Powinny się wyświetlić te dane wyjściowe:
dotnet run
Powinny się wyświetlić te dane wyjściowe:
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"
Podsumowanie
W tym kroku udało Ci się wykorzystać interfejs Video Intelligence API do wykrywania zmian w nagraniach w plikach przechowywanych w Google Cloud Storage. Dowiedz się więcej o zmianach w serii zdjęć.
7. Wykrywanie treści dla pełnoletnich
Wykrywanie treści dla dorosłych wykrywa w filmie treści dla dorosłych. Treści dla dorosłych to treści odpowiednie dla osób powyżej 18 roku życia. Treści te obejmują m.in. nagość, czynności o charakterze seksualnym i pornografię (w tym także kreskówki i anime). Odpowiedź zawiera zgrupowaną wartość prawdopodobieństwa od VERY_UNlikeLY do VERY_likeLY.
Gdy funkcja wykrywania treści dla pełnoletnich ocenia film, uwzględnia wyłącznie treści wizualne. Komponent audio w filmie nie służy do oceny poziomu treści dla dorosłych.
Aby wykryć treści dla dorosłych, przejdź do pliku Program.cs
w folderze VideoIntApiDemo
i zastąp go tym kodem:
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();
}
}
}
}
}
Poświęć chwilę na zapoznanie się z kodem i sprawdź, jak zostało wykryte treści dla dorosłych*.*
Uruchom aplikację w Cloud Shell:
dotnet run
Może to potrwać kilka sekund, ale w końcu zobaczysz takie dane wyjściowe:
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
Podsumowanie
W tym kroku udało Ci się wykryć treści dla dorosłych w filmach za pomocą interfejsu Video Intelligence API. Dowiedz się więcej o wykrywaniu treści dla pełnoletnich.
8. Gratulacje!
Wiesz już, jak korzystać z interfejsu Video Intelligence API w języku C#.
Czyszczenie danych
Oto kroki, które musisz wykonać, aby uniknąć obciążenia konta Google Cloud Platform opłatami za zasoby zużyte podczas krótkiego wprowadzenia:
- Otwórz konsolę Cloud Platform.
- Wybierz projekt, który chcesz wyłączyć, i kliknij „Usuń”. u góry: spowoduje to zaplanowanie usunięcia projektu.
Więcej informacji
- Interfejs Google Cloud Video Intelligence API: https://cloud.google.com/video-intelligence/docs/
- C#/.NET w Google Cloud Platform: https://cloud.google.com/dotnet/
- Klient Google Cloud .NET: https://googlecloudplatform.github.io/google-cloud-dotnet/
Licencja
To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Attribution 2.0.