1. بررسی اجمالی
Google Cloud Video Intelligence API به توسعه دهندگان این امکان را می دهد که از فناوری تجزیه و تحلیل ویدیوی گوگل به عنوان بخشی از برنامه های خود استفاده کنند.
می توان از آن برای انجام موارد زیر استفاده کرد:
- تشخیص برچسب : اشیایی مانند سگ، گل، انسان را در ویدیو شناسایی کنید.
- تشخیص محتوای صریح : محتوای بزرگسالان را در یک ویدیو شناسایی کنید.
- تشخیص تغییر عکس : تغییرات صحنه را در ویدیو تشخیص دهید.
REST API به کاربران امکان می دهد ویدیوهای ذخیره شده محلی یا در Google Cloud Storage را با اطلاعات متنی در سطح کل ویدیو، در هر بخش، در هر عکس و در هر فریم حاشیه نویسی کنند.
در این کد لبه، شما بر روی استفاده از API هوش ویدیویی با سی شارپ تمرکز خواهید کرد. شما یاد خواهید گرفت که چگونه فیلم ها را برای برچسب ها، تغییرات عکس و تشخیص صریح محتوا تجزیه و تحلیل کنید.
چیزی که یاد خواهید گرفت
- نحوه استفاده از Cloud Shell
- نحوه فعال کردن Video Intelligence API
- نحوه احراز هویت درخواست های API
- نحوه نصب کتابخانه سرویس گیرنده Google Cloud برای C#
- چگونه فیلم ها را برای برچسب ها تجزیه و تحلیل کنیم
- نحوه تجزیه و تحلیل ویدیوها برای تغییرات شات
- چگونه ویدیوها را برای تشخیص محتوای صریح تجزیه و تحلیل کنیم
آنچه شما نیاز دارید
نظرسنجی
چگونه از این آموزش استفاده خواهید کرد؟
به تجربه خود با سی شارپ چه امتیازی می دهید؟
تجربه خود را در استفاده از سرویسهای پلتفرم ابری Google چگونه ارزیابی میکنید؟
2. راه اندازی و الزامات
تنظیم محیط خود به خود
- به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. همیشه می توانید آن را به روز کنید.
- شناسه پروژه در تمام پروژههای Google Cloud منحصربهفرد است و تغییرناپذیر است (پس از تنظیم نمیتوان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید شناسه پروژه خود را ارجاع دهید (معمولاً با نام
PROJECT_ID
شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، میتوانید خودتان را امتحان کنید، و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند. - برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه ، که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
- در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه هزینه زیادی نخواهد داشت. برای خاموش کردن منابع برای جلوگیری از تحمیل صورتحساب فراتر از این آموزش، میتوانید منابعی را که ایجاد کردهاید حذف کنید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.
Cloud Shell را فعال کنید
- از Cloud Console، روی Activate Cloud Shell کلیک کنید .
اگر این اولین باری است که Cloud Shell را راه اندازی می کنید، با یک صفحه میانی روبرو می شوید که آن را توصیف می کند. اگر با یک صفحه میانی مواجه شدید، روی Continue کلیک کنید.
تهیه و اتصال به Cloud Shell فقط باید چند لحظه طول بکشد.
این ماشین مجازی با تمام ابزارهای توسعه مورد نیاز بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی ارائه میکند و در Google Cloud اجرا میشود، که عملکرد و احراز هویت شبکه را بسیار افزایش میدهد. بسیاری از کارهای شما، اگر نه همه، در این کد لبه با مرورگر قابل انجام است.
پس از اتصال به Cloud Shell، باید ببینید که احراز هویت شده اید و پروژه به ID پروژه شما تنظیم شده است.
- برای تایید احراز هویت، دستور زیر را در 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`
- دستور زیر را در 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 استفاده کنید، باید API را فعال کنید. می توانید API را با استفاده از دستور زیر در Cloud Shell فعال کنید:
gcloud services enable videointelligence.googleapis.com
4. کتابخانه سرویس گیرنده Google Cloud Video Intelligence API را برای C# نصب کنید
ابتدا یک برنامه کنسول C# ساده ایجاد کنید که از آن برای اجرای نمونه های 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 تجزیه و تحلیل خواهید کرد.
ابتدا ویرایشگر کد را از سمت راست بالای Cloud Shell باز کنید:
به فایل Program.cs
داخل پوشه VideoIntApiDemo
بروید و کد زیر را جایگزین کنید:
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. تشخیص تغییر شات
میتوانید از Video Intelligence API برای تشخیص تغییرات عکسبرداری در ویدیویی که به صورت محلی یا در Google Cloud Storage ذخیره شده است استفاده کنید. در این بخش، شما تجزیه و تحلیل ویدیو را برای تغییرات شات روی یک فایل واقع در Google Cloud Storage انجام خواهید داد.
برای تشخیص تغییرات شات، به فایل Program.cs
در داخل پوشه VideoIntApiDemo
بروید و کد را با کد زیر جایگزین کنید:
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"
خلاصه
در این مرحله، شما قادر به استفاده از Video Intelligence API برای تشخیص تغییرات شات در فایل ذخیره شده در Google Cloud Storage هستید. درباره تغییرات شات بیشتر بخوانید.
7. تشخیص محتوای صریح
تشخیص محتوای صریح محتوای بزرگسالان را در یک ویدیو تشخیص می دهد. محتوای بزرگسالان معمولاً برای 18 سال و بالاتر مناسب است، شامل برهنگی، فعالیتهای جنسی، و هرزهنگاری (از جمله کارتون یا انیمیشن) اما نه محدود به آن. پاسخ شامل یک مقدار احتمال سطلی، از VERY_UNLIKELY تا VERY_LIKELY است.
وقتی «تشخیص محتوای صریح» یک ویدیو را ارزیابی میکند، این کار را بر اساس هر فریم انجام میدهد و فقط محتوای بصری را در نظر میگیرد. جزء صوتی ویدیو برای ارزیابی سطح محتوای صریح استفاده نمی شود.
برای شناسایی محتوای صریح، به فایل Program.cs
در داخل پوشه VideoIntApiDemo
بروید و کد زیر را جایگزین کنید:
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 بروید.
- پروژهای را که میخواهید تعطیل کنید انتخاب کنید، سپس روی «حذف» در بالا کلیک کنید: با این کار، پروژه برای حذف برنامهریزی میشود.
بیشتر بدانید
- Google Cloud Video Intelligence API: https://cloud.google.com/video-intelligence/docs/
- C#/.NET در Google Cloud Platform: https://cloud.google.com/dotnet/
- سرویس گیرنده Google Cloud .NET: https://googlecloudplatform.github.io/google-cloud-dotnet/
مجوز
این اثر تحت مجوز Creative Commons Attribution 2.0 Generic مجوز دارد.