Video Intelligence API'yi C# ile Kullanma

1. Genel Bakış

Google Cloud Video Intelligence API, geliştiricilerin, uygulamalarının bir parçası olarak Google video analiz teknolojisini kullanmalarına olanak tanır.

Aşağıdaki amaçlar için kullanılabilir:

REST API, kullanıcıların yerel olarak veya Google Cloud Storage'da depolanan videolara, videonun tamamı düzeyinde, segment, çekim ve kare başına bağlamsal bilgilerle ek açıklama eklemesini sağlar.

Bu codelab'de, Video Intelligence API'yi C# ile kullanmaya odaklanacaksınız. Etiketler, çekim değişiklikleri ve uygunsuz içerik tespiti gibi konularda videoları nasıl analiz edeceğinizi öğreneceksiniz.

Neler öğreneceksiniz?

  • Cloud Shell'i kullanma
  • Video Intelligence API'yi etkinleştirme
  • API isteklerinin kimliğini doğrulama
  • C# için Google Cloud istemci kitaplığını yükleme
  • Videolarda etiketler nasıl analiz edilir?
  • Çekim değişiklikleri için videolar nasıl analiz edilir?
  • Uygunsuz içerik tespiti için videoları analiz etme

Gerekenler

  • Bir Google Cloud Platform Projesi
  • Chrome veya Firefox gibi bir tarayıcı
  • C# kullanımı hakkında bilgi

Anket

Bu eğiticiden nasıl yararlanacaksınız?

Yalnızca okuma Okuyun ve alıştırmaları tamamlayın

C# ile ilgili deneyiminizi nasıl değerlendirirsiniz?

Acemi Orta Yeterli

Google Cloud Platform hizmetlerinin kullanımıyla ilgili deneyiminizi nasıl değerlendirirsiniz?

Acemi Orta Yeterli

2. Kurulum ve Gereksinimler

Kendi hızınızda ortam kurulumu

  1. Google Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. İstediğiniz zaman güncelleyebilirsiniz.
  • Proje Kimliği, tüm Google Cloud projelerinde benzersizdir ve değiştirilemez (belirlendikten sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de proje kimliğinizi (genellikle PROJECT_ID olarak tanımlanır) belirtmeniz gerekir. Oluşturulan kimliği beğenmezseniz rastgele bir kimlik daha oluşturabilirsiniz. Alternatif olarak, kendi ölçümünüzü deneyip mevcut olup olmadığına bakabilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince kalır.
  • Bilginiz olması açısından, bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Sonraki adımda, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırmanın tekrarlanmasını önlemek amacıyla kaynakları kapatmak için oluşturduğunuz kaynakları silebilir veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.

Cloud Shell'i başlatma

Google Cloud dizüstü bilgisayarınızdan uzaktan çalıştırılabilse de bu codelab'de, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.

Cloud Shell'i etkinleştirme

  1. Cloud Console'da, Cloud Shell'i etkinleştir d1264ca30785e435.png simgesini tıklayın.

cb81e7c8e34bc8d.png

Cloud Shell'i ilk kez başlatıyorsanız ne olduğunu açıklayan bir ara ekran gösterilir. Ara bir ekran görüntülendiyse Devam'ı tıklayın.

d95252b003979716.png

Temel hazırlık ve Cloud Shell'e bağlanmak yalnızca birkaç dakika sürer.

7833d5e1c5d18f54.png

Gereken tüm geliştirme araçları bu sanal makinede yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud'da çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Bu codelab'deki çalışmalarınızın tamamı olmasa bile büyük bir kısmı tarayıcıyla yapılabilir.

Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin proje kimliğinize ayarlandığını göreceksiniz.

  1. Kimlik doğrulamanızın tamamlandığını onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud auth list

Komut çıkışı

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. gcloud komutunun projenizi bildiğini onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud config list project

Komut çıkışı

[core]
project = <PROJECT_ID>

Doğru değilse aşağıdaki komutla ayarlayabilirsiniz:

gcloud config set project <PROJECT_ID>

Komut çıkışı

Updated property [core/project].

3. Video Intelligence API'yi Etkinleştirme

Video Intelligence API'yi kullanmaya başlamadan önce API'yi etkinleştirmeniz gerekir. Cloud Shell'de aşağıdaki komutu kullanarak API'yi etkinleştirebilirsiniz:

gcloud services enable videointelligence.googleapis.com

4. C# için Google Cloud Video Intelligence API istemci kitaplığını yükleme

İlk olarak, Video Intelligence API örnekleri çalıştırmak için kullanacağınız basit bir C# konsol uygulaması oluşturun:

dotnet new console -n VideoIntApiDemo

Uygulamanın oluşturulduğunu ve bağımlılıkların çözüldüğünü göreceksiniz:

The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.

Sonra, VideoIntApiDemo klasörüne gidin:

cd VideoIntApiDemo/

Ardından projeye Google.Cloud.VideoIntelligence.V1 NuGet paketini ekleyin:

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'.

Artık Video Intelligence API'yi kullanmaya hazırsınız.

5. Etiket Algılama

Etiket analizi, videolardaki etiketleri yerel olarak veya Google Cloud Storage'da depolanan etiketleri algılar. Bu bölümde, bir videoda Google Cloud Storage'da depolanan etiketleri analiz edeceksiniz.

İlk olarak Cloud Shell'in sağ üst tarafından kod düzenleyiciyi açın:

fd3fc1303e63572.png

VideoIntApiDemo klasörünün içindeki Program.cs dosyasına gidin ve kodu aşağıdakiyle değiştirin:

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}");
                }
            }
        }
    }
}

Bir iki dakikanızı ayırarak kodu inceleyin ve videonun nasıl etiketlendiğini öğrenin*.*

Cloud Shell'e dönüp uygulamayı çalıştırın:

dotnet run

Video Intelligence API'nin etiketleri çıkarması birkaç saniye sürer ancak aşağıdaki çıkışı görürsünüz:

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
...

Özet

Bu adımda, Video Intelligence API'yi kullanarak bir videodaki tüm etiketleri listeleydiniz. Daha fazla bilgi için Etiket algılama sayfasını inceleyebilirsiniz.

6. Çekim Değişikliği Algılama

Yerel olarak veya Google Cloud Storage'da depolanan bir videodaki çekim değişikliklerini tespit etmek için Video Intelligence API'yi kullanabilirsiniz. Bu bölümde, Google Cloud Storage'da bulunan bir dosyadaki çekim değişiklikleri için video analizi yapacaksınız.

Çekim değişikliklerini tespit etmek için VideoIntApiDemo klasöründeki Program.cs dosyasına gidin ve kodu aşağıdaki kodla değiştirin:

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);
                }
            }
        }
    }
}

Bir iki dakikanızı ayırarak kodu inceleyin ve çekim algılamanın nasıl yapıldığını öğrenin.

Cloud Shell'e dönüp uygulamayı çalıştırın. Aşağıdaki çıkışı göreceksiniz:

dotnet run

Aşağıdaki çıkışı göreceksiniz:

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"

Özet

Bu adımda, Google Cloud Storage'da depolanan bir dosyadaki çekim değişikliklerini tespit etmek için Video Intelligence API'yi kullanabildiniz. Çekim değişiklikleri hakkında daha fazla bilgi edinin.

7. Uygunsuz İçerik Algılama

Uygunsuz İçerik Algılama, bir videodaki yetişkinlere uygun içeriği algılar. Yetişkinlere uygun içerik; çıplaklık, cinsel aktiviteler ve pornografi (çizgi filmler veya animeler dahil) dahil ancak bunlarla sınırlı olmamak üzere genellikle 18 yaş ve üzerindekiler için uygun olan içeriklerdir. Yanıt, VERY_UNLIKELY ile VERY_LIKELY arasında gruplanmış olasılık değerini içerir.

Uygunsuz İçerik Algılama bir videoyu her kare için değerlendirir ve yalnızca görsel içeriği dikkate alır. Videonun ses bileşeni, uygunsuz içerik düzeyini değerlendirmek için kullanılmaz.

Uygunsuz içerik algılamak için VideoIntApiDemo klasöründeki Program.cs dosyasına gidin ve kodu aşağıdaki kodla değiştirin:

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();
                }
            }
        }
    }
}

Bir iki dakikanızı ayırarak kodu inceleyin ve uygunsuz içerik algılamanın nasıl yapıldığını öğrenin*.*

Cloud Shell'e dönüp uygulamayı çalıştırın:

dotnet run

Bu işlem birkaç saniye sürebilir ancak sonunda aşağıdaki çıkışı görürsünüz:

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

Özet

Bu adımda, Video Intelligence API'yi kullanarak bir videoda uygunsuz içerik algılama işlemi gerçekleştirdiniz. Uygunsuz içerik algılama hakkında daha fazla bilgi edinin.

8. Tebrikler!

C# dilinin kullanıldığı Video Intelligence API'yi kullanmayı öğrendiniz.

Temizleme

Bu hızlı başlangıçta kullanılan kaynaklar için Google Cloud Platform hesabınızın ücretlendirmesini önlemek amacıyla:

  • Cloud Platform Console'a gidin.
  • Kapatmak istediğiniz projeyi seçin, ardından "Sil"i tıklayın üstte üstte yer alır: Bu işlem, projeyi silinmek üzere programlar.

Daha Fazla Bilgi

Lisans

Bu çalışma, Creative Commons Attribution 2.0 Genel Amaçlı Lisans ile lisans altına alınmıştır.