C# के साथ Video Intelligence API का इस्तेमाल करना

1. खास जानकारी

Google Cloud Video Intelligence API की मदद से डेवलपर, अपने ऐप्लिकेशन के हिस्से के तौर पर Google वीडियो विश्लेषण टेक्नोलॉजी का इस्तेमाल कर सकते हैं.

इसका इस्तेमाल इन कामों के लिए किया जा सकता है:

REST API की मदद से लोग, लोकल या Google Cloud Storage में सेव किए गए वीडियो में एनोटेट कर सकते हैं. इसमें पूरे वीडियो के लेवल, हर सेगमेंट, हर शॉट, और हर फ़्रेम के हिसाब से कॉन्टेक्स्ट के हिसाब से जानकारी दी जाती है.

इस कोडलैब में, C# के साथ Video Intelligence API के इस्तेमाल पर ध्यान दिया जाएगा. आपको पता चलेगा कि लेबल वाले वीडियो का विश्लेषण कैसे करें, शॉट में बदलाव कैसे करें, और अश्लील कॉन्टेंट की पहचान कैसे करें.

आपको इनके बारे में जानकारी मिलेगी

  • Cloud Shell का इस्तेमाल कैसे करें
  • Video Intelligence API को चालू करने का तरीका
  • एपीआई अनुरोधों की पुष्टि करने का तरीका
  • C# के लिए Google Cloud क्लाइंट लाइब्रेरी इंस्टॉल करने का तरीका
  • लेबल के लिए वीडियो का विश्लेषण कैसे करें
  • शॉट में बदलावों के लिए वीडियो का विश्लेषण कैसे करें
  • अश्लील कॉन्टेंट की पहचान करने के लिए वीडियो का विश्लेषण करने का तरीका

आपको इन चीज़ों की ज़रूरत होगी

  • Google Cloud Platform प्रोजेक्ट
  • ब्राउज़र, जैसे कि Chrome या Firefox
  • C# का इस्तेमाल करना कितना आसान है

सर्वे

इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?

इसे सिर्फ़ पढ़ें इसे पढ़ें और कसरतों को पूरा करें

C# का इस्तेमाल करने का आपका अनुभव कैसा रहा?

शुरुआती इंटरमीडिएट कुशल

Google Cloud Platform की सेवाएं इस्तेमाल करने का आपका अनुभव कैसा रहा?

शुरुआती इंटरमीडिएट कुशल

2. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेटअप करना

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से Gmail या Google Workspace खाता नहीं है, तो आपको नया खाता बनाना होगा.

295004821बाबा6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों का डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करता. इसे कभी भी अपडेट किया जा सकता है.
  • प्रोजेक्ट आईडी, Google Cloud के सभी प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे बदला नहीं जा सकता. इसे सेट करने के बाद बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है; आम तौर पर, आपको उसके होने की कोई परवाह नहीं होती. ज़्यादातर कोडलैब में, आपको अपना प्रोजेक्ट आईडी बताना होगा. आम तौर पर, इसकी पहचान PROJECT_ID के रूप में की जाती है. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो किसी भी क्रम में एक और आईडी जनरेट किया जा सकता है. दूसरा तरीका यह है कि आप खुद भी आज़माकर देखें कि वह उपलब्ध है या नहीं. इस चरण के बाद, इसे बदला नहीं जा सकता. साथ ही, यह प्रोजेक्ट के खत्म होने तक बना रहता है.
  • आपकी जानकारी के लिए, प्रोजेक्ट नंबर नाम की एक तीसरी वैल्यू दी गई है. इसका इस्तेमाल कुछ एपीआई करते हैं. दस्तावेज़ में इन तीनों वैल्यू के बारे में ज़्यादा जानें.
  1. इसके बाद, आपको क्लाउड संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग चालू करनी होगी. इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. इस ट्यूटोरियल के अलावा, बिलिंग से बचने के लिए संसाधनों को बंद करें. इसके लिए, अपने बनाए गए संसाधनों को मिटाएं या प्रोजेक्ट को मिटाएं. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.

Cloud Shell शुरू करना

Google Cloud को आपके लैपटॉप से, कहीं से भी ऑपरेट किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जा रहा है. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

Cloud Shell चालू करें

  1. Cloud Console में, Cloud Shell चालू करें d1264ca30785e435.png पर क्लिक करें.

cb81e7c8e34bc8d.png

अगर आपने Cloud Shell का इस्तेमाल पहली बार किया है, तो आपको बीच में आने वाली स्क्रीन दिखेगी. इसमें यह बताया जाएगा कि यह क्या है. अगर आपको बीच के लेवल पर मिलने वाली स्क्रीन दिखती है, तो जारी रखें पर क्लिक करें.

d95252b003979716.png

प्रावधान करने और Cloud Shell से कनेक्ट होने में कुछ ही समय लगेगा.

7833d5e1c5d18f54.png

इस वर्चुअल मशीन में डेवलपमेंट के सभी ज़रूरी टूल मौजूद हैं. इसमें लगातार पांच जीबी की होम डायरेक्ट्री मिलती है और यह Google Cloud में काम करती है. यह नेटवर्क की परफ़ॉर्मेंस और ऑथेंटिकेशन को बेहतर बनाने में मदद करती है. अगर सभी नहीं, तो इस कोडलैब में आपका बहुत सारा काम ब्राउज़र से किया जा सकता है.

Cloud Shell से कनेक्ट करने के बाद, आपको दिखेगा कि आपकी पुष्टि हो चुकी है और प्रोजेक्ट आपके प्रोजेक्ट आईडी पर सेट है.

  1. यह पुष्टि करने के लिए Cloud Shell में नीचे दिया गया कमांड चलाएं कि आपकी पुष्टि हो गई है:
gcloud auth list

कमांड आउटपुट

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Cloud Shell में यह कमांड चलाएं, ताकि यह पुष्टि की जा सके कि gcloud के लिए कमांड को आपके प्रोजेक्ट के बारे में जानकारी है:
gcloud config list project

कमांड आउटपुट

[core]
project = <PROJECT_ID>

अगर ऐसा नहीं है, तो आप इसे इस निर्देश की मदद से सेट कर सकते हैं:

gcloud config set project <PROJECT_ID>

कमांड आउटपुट

Updated property [core/project].

3. Video Intelligence API को चालू करें

Video Intelligence API का इस्तेमाल शुरू करने से पहले, आपको इस एपीआई को चालू करना होगा. Cloud Shell में इस कमांड का इस्तेमाल करके, एपीआई को चालू किया जा सकता है:

gcloud services enable videointelligence.googleapis.com

4. C# के लिए Google Cloud Video Intelligence API की क्लाइंट लाइब्रेरी इंस्टॉल करें

सबसे पहले, एक आसान C# कंसोल ऐप्लिकेशन बनाएं, जिसका इस्तेमाल आप Video Intelligence API के सैंपल चलाने के लिए करेंगे:

dotnet new console -n VideoIntApiDemo

आपको बनाया गया ऐप्लिकेशन और डिपेंडेंसी हल की गई देखनी चाहिए:

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

इसके बाद, VideoIntApiDemo फ़ोल्डर पर जाएं:

cd VideoIntApiDemo/

और प्रोजेक्ट में Google.Cloud.VideoIntelligence.V1 NuGet पैकेज जोड़ें:

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

अब आप Video Intelligence API का इस्तेमाल करने के लिए तैयार हैं!

5. लेबल की पहचान करना

लेबल विश्लेषण से यह पता चलता है कि किसी वीडियो में मौजूद लेबल को डिवाइस पर या Google Cloud Storage में सेव किया गया है या नहीं. इस सेक्शन में, Google Cloud Storage में सेव किए गए लेबल के वीडियो का विश्लेषण किया जाएगा.

सबसे पहले, क्लाउड शेल के सबसे ऊपर दाईं ओर से कोड एडिटर खोलें:

fd3fc1303e63572.png

VideoIntApiDemo फ़ोल्डर में मौजूद Program.cs फ़ाइल पर जाएं और कोड को इनसे बदलें:

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

कोड को समझने में एक या दो मिनट लगेंगे और देखें कि वीडियो को कैसे लेबल किया जा रहा है*.*

Cloud Shell पर वापस जाकर, इस ऐप्लिकेशन को चलाएं:

dotnet run

Video Intelligence API को लेबल एक्सट्रैक्ट करने में कुछ सेकंड लगते हैं. हालांकि, आखिर में आपको यह आउटपुट दिखेगा:

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

खास जानकारी

इस चरण में, Video Intelligence API का इस्तेमाल करके किसी वीडियो में मौजूद सभी लेबल की सूची बनाई जा सकती है. लेबल की पहचान पेज पर जाकर, इस बारे में ज़्यादा जानकारी पाई जा सकती है.

6. शॉट बदलने का पता लगाने वाली सुविधा

अपने डिवाइस पर सेव किए गए वीडियो या Google Cloud Storage में सेव किए गए किसी वीडियो के शॉट में हुए बदलावों का पता लगाने के लिए, Video Intelligence API का इस्तेमाल किया जा सकता है. इस सेक्शन में, Google Cloud Storage में मौजूद किसी फ़ाइल के शॉट में बदलाव करने के लिए, वीडियो का विश्लेषण किया जाएगा.

शॉट में हुए बदलावों का पता लगाने के लिए, VideoIntApiDemo फ़ोल्डर में मौजूद Program.cs फ़ाइल पर जाएं और कोड को इनसे बदलें:

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

कुछ समय निकालकर कोड को अच्छी तरह से समझ लें और देखें कि शॉट डिटेक्शन कैसे किया जाता है.

Cloud Shell पर वापस जाकर, ऐप्लिकेशन को चलाएं. आपको यह आउटपुट दिखेगा:

dotnet run

आपको यह आउटपुट दिखेगा:

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"

खास जानकारी

इस चरण में, Google Cloud Storage में सेव की गई किसी फ़ाइल में हुए शॉट में हुए बदलावों का पता लगाने के लिए, Video Intelligence API का इस्तेमाल किया जा सकता है. शॉट में बदलावों के बारे में और पढ़ें.

7. अश्लील कॉन्टेंट की पहचान करना

अश्लील कॉन्टेंट की पहचान करने की सुविधा, किसी वीडियो में वयस्क कॉन्टेंट का पता लगाती है. वयस्कों के लिए बना कॉन्टेंट, आम तौर पर 18 साल और उससे ज़्यादा उम्र के लोगों के लिए सही होता है. इसमें नग्नता, सेक्शुअल ऐक्ट, और पॉर्नोग्राफ़ी (कार्टून या ऐनमे) के अलावा, और भी चीज़ें शामिल हो सकती हैं. इस रिस्पॉन्स में बकेटाइज़्ड संभावित वैल्यू शामिल होती है, जो VERY_UNLIKELY से VERY_LIKELY तक.

जब अश्लील कॉन्टेंट की पहचान करने वाली सुविधा किसी वीडियो की जांच करती है, तो यह हर फ़्रेम के हिसाब से वीडियो की जांच करती है. साथ ही, इसमें सिर्फ़ विज़ुअल कॉन्टेंट की जांच की जाती है. अश्लील कॉन्टेंट लेवल का आकलन करने के लिए, वीडियो के ऑडियो कॉम्पोनेंट का इस्तेमाल नहीं किया जाता.

अश्लील कॉन्टेंट का पता लगाने के लिए, VideoIntApiDemo फ़ोल्डर में मौजूद Program.cs फ़ाइल पर जाएं और कोड को इनसे बदलें:

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

कुछ समय निकालकर कोड को अच्छी तरह से समझें और देखें कि अश्लील कॉन्टेंट की पहचान कैसे की गई*.*

Cloud Shell पर वापस जाकर, इस ऐप्लिकेशन को चलाएं:

dotnet run

इसमें कुछ सेकंड लग सकते हैं, लेकिन आखिर में आपको यह आउटपुट दिखेगा:

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

खास जानकारी

इस चरण में, Video Intelligence API का इस्तेमाल करके, किसी वीडियो में अश्लील कॉन्टेंट की पहचान की जा सकी. अश्लील कॉन्टेंट की पहचान करने के बारे में और पढ़ें.

8. बधाई हो!

आपने C# का इस्तेमाल करके, Video Intelligence API को इस्तेमाल करने का तरीका सीखा!

व्यवस्थित करें

इस क्विकस्टार्ट में इस्तेमाल किए गए संसाधनों के लिए, आपके Google Cloud Platform खाते पर लगने वाले शुल्क से बचने के लिए:

  • Cloud Platform कंसोल पर जाएं.
  • वह प्रोजेक्ट चुनें जिसे शट डाउन करना है. इसके बाद, ‘मिटाएं' पर क्लिक करें सबसे ऊपर: यह प्रोजेक्ट को मिटाने के लिए शेड्यूल करता है.

ज़्यादा जानें

लाइसेंस

इस काम को क्रिएटिव कॉमंस एट्रिब्यूशन 2.0 जेनरिक लाइसेंस के तहत लाइसेंस मिला है.