C# এর সাথে ভিডিও ইন্টেলিজেন্স API ব্যবহার করা

১. সংক্ষিপ্ত বিবরণ

গুগল ক্লাউড ভিডিও ইন্টেলিজেন্স এপিআই ডেভেলপারদের তাদের অ্যাপ্লিকেশনের অংশ হিসেবে গুগলের ভিডিও বিশ্লেষণ প্রযুক্তি ব্যবহার করার সুযোগ দেয়।

এটি দিয়ে করা যায়:

REST API ব্যবহারকারীদের স্থানীয়ভাবে বা গুগল ক্লাউড স্টোরেজে সংরক্ষিত ভিডিওতে সম্পূর্ণ ভিডিও, সেগমেন্ট, শট এবং ফ্রেম পর্যায়ে প্রাসঙ্গিক তথ্য দিয়ে টীকা যোগ করার সুযোগ দেয়।

এই কোডল্যাবে, আপনি C# ব্যবহার করে ভিডিও ইন্টেলিজেন্স এপিআই (Video Intelligence API) ব্যবহারের উপর মনোযোগ দেবেন। আপনি শিখবেন কীভাবে লেবেল, শট পরিবর্তন এবং আপত্তিকর বিষয়বস্তু শনাক্তকরণের জন্য ভিডিও বিশ্লেষণ করতে হয়।

আপনি যা শিখবেন

  • ক্লাউড শেল কীভাবে ব্যবহার করবেন
  • ভিডিও ইন্টেলিজেন্স এপিআই কীভাবে সক্রিয় করবেন
  • এপিআই অনুরোধগুলি কীভাবে প্রমাণীকরণ করবেন
  • C# এর জন্য গুগল ক্লাউড ক্লায়েন্ট লাইব্রেরি কীভাবে ইনস্টল করবেন
  • লেবেলের জন্য ভিডিও বিশ্লেষণ করার উপায়
  • শট পরিবর্তনের জন্য ভিডিও কীভাবে বিশ্লেষণ করবেন
  • আপত্তিকর বিষয়বস্তু শনাক্ত করার জন্য ভিডিও কীভাবে বিশ্লেষণ করবেন

আপনার যা যা লাগবে

  • একটি গুগল ক্লাউড প্ল্যাটফর্ম প্রকল্প
  • একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
  • C# ব্যবহারে পরিচিতি

জরিপ

আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?

শুধু পুরোটা পড়ুন এটি পড়ুন এবং অনুশীলনগুলো সম্পূর্ণ করুন।

C# নিয়ে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

শিক্ষানবিশ মধ্যবর্তী দক্ষ

গুগল ক্লাউড প্ল্যাটফর্ম পরিষেবা ব্যবহারের অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

শিক্ষানবিশ মধ্যবর্তী দক্ষ

২. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিতে পরিবেশ সেটআপ

  1. Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
  • প্রজেক্ট আইডি সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (একবার সেট করার পর এটি পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রজেক্ট আইডি উল্লেখ করতে হবে (যা সাধারণত PROJECT_ID হিসাবে চিহ্নিত করা হয়)। তৈরি করা আইডিটি আপনার পছন্দ না হলে, আপনি এলোমেলোভাবে আরেকটি তৈরি করতে পারেন। বিকল্পভাবে, আপনি আপনার নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রজেক্টের পুরো সময়কাল জুড়ে এটি অপরিবর্তিত থাকবে।
  • আপনার অবগতির জন্য জানাচ্ছি যে, তৃতীয় একটি ভ্যালু রয়েছে, যা হলো প্রজেক্ট নম্বর , এবং কিছু এপিআই এটি ব্যবহার করে থাকে। ডকুমেন্টেশনে এই তিনটি ভ্যালু সম্পর্কে আরও বিস্তারিত জানুন।
  1. এরপর, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হবে না, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর বিলিং এড়াতে রিসোর্সগুলো বন্ধ করার জন্য, আপনি আপনার তৈরি করা রিসোর্সগুলো অথবা প্রজেক্টটি ডিলিট করে দিতে পারেন। নতুন গুগল ক্লাউড ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ক্লাউড শেল শুরু করুন

যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চালিত একটি কমান্ড লাইন পরিবেশ।

ক্লাউড শেল সক্রিয় করুন

  1. ক্লাউড কনসোল থেকে, Activate Cloud Shell-এ ক্লিক করুন। d1264ca30785e435.png .

cb81e7c8e34bc8d.png

আপনি যদি প্রথমবারের মতো ক্লাউড শেল চালু করেন, তাহলে এটি কী তা বর্ণনা করে একটি মধ্যবর্তী স্ক্রিন আপনার সামনে আসবে। যদি একটি মধ্যবর্তী স্ক্রিন আসে, তাহলে 'চালিয়ে যান' (Continue) এ ক্লিক করুন।

d95252b003979716.png

ক্লাউড শেল প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগা উচিত।

7833d5e1c5d18f54.png

এই ভার্চুয়াল মেশিনটিতে প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার প্রায় সমস্ত কাজই একটি ব্রাউজার দিয়ে করা সম্ভব।

ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি দেখতে পাবেন যে আপনাকে প্রমাণীকৃত করা হয়েছে এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে।

  1. আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list

কমান্ড আউটপুট

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে জানে কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি তা না থাকে, তবে আপনি এই কমান্ডটি দিয়ে এটি সেট করতে পারেন:

gcloud config set project <PROJECT_ID>

কমান্ড আউটপুট

Updated property [core/project].

৩. ভিডিও ইন্টেলিজেন্স এপিআই সক্রিয় করুন

ভিডিও ইন্টেলিজেন্স এপিআই ব্যবহার শুরু করার আগে, আপনাকে অবশ্যই এপিআইটি সক্রিয় করতে হবে। ক্লাউড শেল-এ নিম্নলিখিত কমান্ডটি ব্যবহার করে আপনি এপিআইটি সক্রিয় করতে পারেন:

gcloud services enable videointelligence.googleapis.com

৪. C# এর জন্য Google Cloud Video Intelligence API ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন।

প্রথমে, একটি সহজ C# কনসোল অ্যাপ্লিকেশন তৈরি করুন যা আপনি ভিডিও ইন্টেলিজেন্স এপিআই স্যাম্পলগুলো চালানোর জন্য ব্যবহার করবেন:

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

এখন, আপনি ভিডিও ইন্টেলিজেন্স এপিআই ব্যবহার করার জন্য প্রস্তুত!

৫. লেবেল সনাক্তকরণ

লেবেল বিশ্লেষণ স্থানীয়ভাবে অথবা গুগল ক্লাউড স্টোরেজে সংরক্ষিত ভিডিওর লেবেলগুলো শনাক্ত করে। এই অংশে, আপনি গুগল ক্লাউড স্টোরেজে সংরক্ষিত লেবেলগুলোর জন্য একটি ভিডিও বিশ্লেষণ করবেন।

প্রথমে, ক্লাউড শেলের উপরের ডান দিক থেকে কোড এডিটরটি খুলুন:

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

এক বা দুই মিনিট সময় নিয়ে কোডটি দেখুন এবং খেয়াল করুন ভিডিওটি কীভাবে লেবেল করা হচ্ছে।

ক্লাউড শেলে ফিরে এসে অ্যাপটি চালান:

dotnet run

ভিডিও ইন্টেলিজেন্স এপিআই-এর লেবেলগুলো বের করতে কয়েক সেকেন্ড সময় লাগে, কিন্তু অবশেষে আপনি নিম্নলিখিত আউটপুটটি দেখতে পাবেন:

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

সারসংক্ষেপ

এই ধাপে, আপনি ভিডিও ইন্টেলিজেন্স এপিআই ব্যবহার করে একটি ভিডিওর সমস্ত লেবেল তালিকাভুক্ত করতে সক্ষম হয়েছেন। আপনি লেবেল শনাক্তকরণ পৃষ্ঠায় এ বিষয়ে আরও পড়তে পারেন।

৬. শট পরিবর্তন সনাক্তকরণ

আপনি স্থানীয়ভাবে বা গুগল ক্লাউড স্টোরেজে সংরক্ষিত কোনো ভিডিওর শট পরিবর্তন শনাক্ত করতে ভিডিও ইন্টেলিজেন্স এপিআই ব্যবহার করতে পারেন। এই অংশে, আপনি গুগল ক্লাউড স্টোরেজে অবস্থিত একটি ফাইলের শট পরিবর্তনের জন্য ভিডিও বিশ্লেষণ করবেন।

শট পরিবর্তন শনাক্ত করতে, 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);
                }
            }
        }
    }
}

এক বা দুই মিনিট সময় নিয়ে কোডটি পড়ুন এবং দেখুন শট ডিটেকশন কীভাবে করা হয়।

ক্লাউড শেলে ফিরে এসে অ্যাপটি চালান। আপনি নিম্নলিখিত আউটপুট দেখতে পাবেন:

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"

সারসংক্ষেপ

এই ধাপে, আপনি গুগল ক্লাউড স্টোরেজে সংরক্ষিত একটি ফাইলের শট পরিবর্তন শনাক্ত করতে ভিডিও ইন্টেলিজেন্স এপিআই ব্যবহার করতে পেরেছেন। শট পরিবর্তন সম্পর্কে আরও পড়ুন।

৭. সুস্পষ্ট বিষয়বস্তু সনাক্তকরণ

এক্সপ্লিসিট কন্টেন্ট ডিটেকশন একটি ভিডিওর মধ্যে প্রাপ্তবয়স্কদের জন্য অনুপযুক্ত বিষয়বস্তু শনাক্ত করে। প্রাপ্তবয়স্কদের জন্য অনুপযুক্ত বিষয়বস্তু হলো এমন বিষয়বস্তু যা সাধারণত ১৮ বছর বা তার বেশি বয়সীদের জন্য উপযুক্ত, যার মধ্যে নগ্নতা, যৌন কার্যকলাপ এবং পর্নোগ্রাফি (কার্টুন বা অ্যানিমে সহ) অন্তর্ভুক্ত, তবে এগুলিতেই সীমাবদ্ধ নয়। প্রতিক্রিয়াটিতে একটি বাকেটাইজড সম্ভাব্যতা মান অন্তর্ভুক্ত থাকে, যা 'খুবই অসম্ভাব্য' থেকে 'খুবই সম্ভাব্য' পর্যন্ত বিস্তৃত।

এক্সপ্লিসিট কন্টেন্ট ডিটেকশন যখন কোনো ভিডিও মূল্যায়ন করে, তখন তা ফ্রেম-ভিত্তিক করা হয় এবং শুধুমাত্র দৃশ্যমান বিষয়বস্তু বিবেচনা করা হয়। এক্সপ্লিসিট কন্টেন্টের মাত্রা মূল্যায়নের জন্য ভিডিওটির অডিও অংশ ব্যবহার করা হয় না।

আপত্তিকর বিষয়বস্তু শনাক্ত করতে, 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();
                }
            }
        }
    }
}

এক বা দুই মিনিট সময় নিয়ে কোডটি পড়ুন এবং দেখুন কীভাবে সুস্পষ্ট বিষয়বস্তু শনাক্তকরণ করা হয়েছে।

ক্লাউড শেলে ফিরে এসে অ্যাপটি চালান:

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

সারসংক্ষেপ

এই ধাপে, আপনি ভিডিও ইন্টেলিজেন্স এপিআই ব্যবহার করে একটি ভিডিওতে আপত্তিকর বিষয়বস্তু শনাক্ত করতে সক্ষম হয়েছেন। আপত্তিকর বিষয়বস্তু শনাক্তকরণ সম্পর্কে আরও পড়ুন।

৮. অভিনন্দন!

আপনি C# ব্যবহার করে ভিডিও ইন্টেলিজেন্স এপিআই (Video Intelligence API) ব্যবহার করার পদ্ধতি শিখেছেন!

পরিষ্কার করা

এই কুইকস্টার্টে ব্যবহৃত রিসোর্সগুলির জন্য আপনার গুগল ক্লাউড প্ল্যাটফর্ম অ্যাকাউন্টে চার্জ হওয়া এড়াতে:

  • ক্লাউড প্ল্যাটফর্ম কনসোলে যান।
  • যে প্রজেক্টটি বন্ধ করতে চান, সেটি নির্বাচন করুন, তারপর উপরে থাকা 'ডিলিট' বোতামে ক্লিক করুন: এটি প্রজেক্টটিকে মুছে ফেলার জন্য নির্ধারিত করবে।

আরও জানুন

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন ২.০ জেনেরিক লাইসেন্সের অধীনে রয়েছে।