Video Intelligence API'yi C# ile Kullanma

1. Genel Bakış

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

Bu hizmeti kullanarak şunları yapabilirsiniz:

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

Bu codelab'de, Video Intelligence API'yi C# ile kullanmaya odaklanacaksınız. Videoları etiketler, çekim değişiklikleri ve uygunsuz içerik algılama açısından 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
  • Videoları etiketler açısından analiz etme
  • Videolarda çekim değişiklikleri nasıl analiz edilir?
  • Videolarda uygunsuz içerik algılama için analiz yapma

Gerekenler

  • Google Cloud Platform projesi
  • Chrome veya Firefox gibi bir tarayıcı
  • C# kullanma konusunda bilgi sahibi olma

Anket

Bu eğitimi nasıl kullanacaksınız?

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

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

Yeni başlayan Orta düzey Uzman

Google Cloud Platform hizmetlerini kullanma deneyiminizi nasıl değerlendirirsiniz?

Başlangıç Orta İleri

2. Kurulum ve Gereksinimler

Yönlendirmesiz ortam kurulumu

  1. Google Cloud Console'da oturum açın ve 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. Bu bilgiyi istediğiniz zaman güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğinize (genellikle PROJECT_ID olarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Dilerseniz kendi adınızı deneyerek kullanılabilir olup olmadığını kontrol edebilirsiniz. Bu adım tamamlandıktan sonra değiştirilemez ve proje süresince geçerli kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırılmayı önlemek için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.

Cloud Shell'i başlatma

Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak 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 'i d1264ca30785e435.png 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 ekran gösterildiyse Devam'ı tıklayın.

d95252b003979716.png

Cloud Shell'in temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır.

7833d5e1c5d18f54.png

Bu sanal makineye, ihtiyaç duyacağınız tüm geliştirme araçları yüklenmiştir. 5 GB boyutunda kalıcı bir ana dizin bulunur ve Google Cloud'da çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu codelab'deki çalışmalarınızın neredeyse tamamını tarayıcıyla yapabilirsiniz.

Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin, proje kimliğinize ayarlandığını görürsünüz.

  1. Kimliğinizin doğrulandığını onaylamak için Cloud Shell'de şu 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 projeniz hakkında bilgi sahibi olduğunu onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud config list project

Komut çıkışı

[core]
project = <PROJECT_ID>

Değilse şu 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. API'yi Cloud Shell'de aşağıdaki komutu kullanarak etkinleştirebilirsiniz:

gcloud services enable videointelligence.googleapis.com

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

Öncelikle Video Intelligence API örneklerini ç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örmelisiniz:

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

Ardından VideoIntApiDemo klasörüne gidin:

cd VideoIntApiDemo/

Ayrıca 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, yerel olarak veya Google Cloud Storage'da depolanan bir videodaki etiketleri algılar. Bu bölümde, Google Cloud Storage'da depolanan etiketler için bir videoyu analiz edeceksiniz.

Öncelikle Cloud Shell'in sağ üst tarafındaki kod düzenleyiciyi açın:

fd3fc1303e63572.png

VideoIntApiDemo klasöründeki Program.cs dosyasına gidin ve kodu aşağıdakilerle 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}");
                }
            }
        }
    }
}

Kodu inceleyip videonun nasıl etiketlendiğini görmek için birkaç dakika ayırın*.*

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

dotnet run

Video Intelligence API'nin etiketleri ayıklaması birkaç saniye sürer ancak sonunda 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 listeleyebildiniz. Daha fazla bilgiyi Etiket algılama sayfasında bulabilirsiniz.

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

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

Çekim değişikliklerini algılamak için VideoIntApiDemo klasöründeki Program.cs dosyasına gidin ve kodu aşağıdakilerle 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);
                }
            }
        }
    }
}

Kodu inceleyip çekim algılamanın nasıl yapıldığını görmek için bir veya iki dakikanızı ayırın.

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

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 dosyada çekim değişikliklerini algılamak için Video Intelligence API'yi kullandınız. Çekim değişiklikleri hakkında daha fazla bilgi edinin.

7. Uygunsuz İçerik Algılama

Uygunsuz İçerik Algılama, video içindeki yetişkinlere uygun içeriği algılar. Yetişkinlere yönelik içerikler, genellikle 18 yaş ve üzeri kişiler için uygun olan içeriklerdir. Çıplaklık, cinsel aktiviteler ve pornografi (çizgi filmler veya animeler dahil ancak bunlarla sınırlı olmamak üzere) bu kapsamdadır. Yanıt, ÇOK_OLASI_OLMAYAN'dan ÇOK_OLASI'ya kadar değişen, gruplandırılmış bir olasılık değeri içerir.

Uygunsuz içerik algılama özelliği bir videoyu değerlendirirken bunu kare kare yapar ve yalnızca görsel içeriği dikkate alır. Videodaki ses bileşeni, uygunsuz içerik düzeyini değerlendirmek için kullanılmaz.

Uygunsuz içeriği algılamak için VideoIntApiDemo klasöründeki Program.cs dosyasına gidin ve kodu aşağıdakilerle 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();
                }
            }
        }
    }
}

Kodu inceleyip uygunsuz içerik algılamanın nasıl yapıldığını görmek için birkaç dakikanızı ayırın*.*

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örmeniz gerekir:

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# kullanarak Video Intelligence API'yi nasıl kullanacağınızı öğ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 üst kısımdaki "Sil"i tıklayın. Bu işlem, projenin silinmesini planlar.

Daha Fazla Bilgi

Lisans

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