1. Tổng quan
Google Cloud Video Intelligence API cho phép nhà phát triển sử dụng công nghệ phân tích video của Google trong các ứng dụng của họ.
Bạn có thể dùng công cụ này để:
- Phát hiện nhãn: Phát hiện các đối tượng, chẳng hạn như chó, hoa, người trong video.
- Phát hiện nội dung phản cảm: Phát hiện nội dung người lớn trong video.
- Phát hiện cảnh thay đổi: Phát hiện các cảnh thay đổi trong video.
API REST cho phép người dùng chú thích video được lưu trữ cục bộ hoặc trong Google Cloud Storage bằng thông tin theo ngữ cảnh ở cấp độ toàn bộ video, theo phân đoạn, theo cảnh và theo khung hình.
Trong lớp học lập trình này, bạn sẽ tập trung vào việc sử dụng Video Intelligence API bằng C#. Bạn sẽ tìm hiểu cách phân tích video để gắn nhãn, phát hiện cảnh chuyển và nội dung phản cảm.
Kiến thức bạn sẽ học được
- Cách sử dụng Cloud Shell
- Cách bật Video Intelligence API
- Cách xác thực các yêu cầu API
- Cách cài đặt thư viện ứng dụng Google Cloud cho C#
- Cách phân tích video để gắn nhãn
- Cách phân tích video để tìm các cảnh thay đổi
- Cách phân tích video để phát hiện nội dung phản cảm
Bạn cần có
- Một dự án trên Google Cloud Platform
- Một trình duyệt, chẳng hạn như Chrome hoặc Firefox
- Quen thuộc với việc sử dụng C#
Bản khảo sát
Bạn sẽ sử dụng hướng dẫn này như thế nào?
Bạn đánh giá thế nào về trải nghiệm của mình với C#?
Bạn đánh giá thế nào về trải nghiệm sử dụng các dịch vụ của Google Cloud Platform?
2. Thiết lập và yêu cầu
Thiết lập môi trường theo tốc độ của riêng bạn
- Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.



- Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự mà các API của Google không sử dụng. Bạn luôn có thể cập nhật thông tin này.
- Mã dự án là mã duy nhất trên tất cả các dự án trên Google Cloud và không thể thay đổi (bạn không thể thay đổi mã này sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là
PROJECT_ID). Nếu không thích mã nhận dạng được tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Hoặc bạn có thể thử tên người dùng của riêng mình để xem tên đó có được chấp nhận hay không. Bạn không thể thay đổi tên này sau bước này và tên này sẽ tồn tại trong suốt thời gian của dự án. - Để bạn nắm được thông tin, có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả 3 giá trị này trong tài liệu.
- Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API trên đám mây. Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh bị tính phí ngoài phạm vi hướng dẫn này, bạn có thể xoá các tài nguyên đã tạo hoặc xoá dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí trị giá 300 USD.
Khởi động Cloud Shell
Mặc dù có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trên Cloud.
Kích hoạt Cloud Shell
- Trong Cloud Console, hãy nhấp vào Kích hoạt Cloud Shell
.

Nếu đây là lần đầu tiên bạn khởi động Cloud Shell, bạn sẽ thấy một màn hình trung gian mô tả về Cloud Shell. Nếu bạn thấy màn hình trung gian, hãy nhấp vào Tiếp tục.

Quá trình cung cấp và kết nối với Cloud Shell chỉ mất vài giây.

Máy ảo này được trang bị tất cả các công cụ phát triển cần thiết. Nền tảng này cung cấp một thư mục chính có dung lượng 5 GB và chạy trong Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Bạn có thể thực hiện hầu hết, nếu không muốn nói là tất cả, công việc của mình trong lớp học lập trình này bằng trình duyệt.
Sau khi kết nối với Cloud Shell, bạn sẽ thấy rằng mình đã được xác thực và dự án được đặt thành mã dự án của bạn.
- Chạy lệnh sau trong Cloud Shell để xác nhận rằng bạn đã được xác thực:
gcloud auth list
Đầu ra của lệnh
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Chạy lệnh sau trong Cloud Shell để xác nhận rằng lệnh gcloud biết về dự án của bạn:
gcloud config list project
Đầu ra của lệnh
[core] project = <PROJECT_ID>
Nếu không, bạn có thể đặt nó bằng lệnh sau:
gcloud config set project <PROJECT_ID>
Đầu ra của lệnh
Updated property [core/project].
3. Bật Video Intelligence API
Bạn phải bật API Trí tuệ nhân tạo trong video trước khi có thể bắt đầu sử dụng API này. Bạn có thể bật API bằng cách sử dụng lệnh sau trong Cloud Shell:
gcloud services enable videointelligence.googleapis.com
4. Cài đặt thư viện ứng dụng Google Cloud Video Intelligence API cho C#
Trước tiên, hãy tạo một ứng dụng bảng điều khiển C# đơn giản mà bạn sẽ dùng để chạy các mẫu Video Intelligence API:
dotnet new console -n VideoIntApiDemo
Bạn sẽ thấy ứng dụng được tạo và các phần phụ thuộc được phân giải:
The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.
Tiếp theo, hãy chuyển đến thư mục VideoIntApiDemo:
cd VideoIntApiDemo/
Và thêm gói Google.Cloud.VideoIntelligence.V1 NuGet vào dự án:
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'.
Giờ thì bạn đã sẵn sàng sử dụng Video Intelligence API!
5. Phát hiện nhãn
Phân tích nhãn phát hiện nhãn trong video được lưu trữ cục bộ hoặc trong Google Cloud Storage. Trong phần này, bạn sẽ phân tích một video để tìm nhãn được lưu trữ trong Google Cloud Storage.
Trước tiên, hãy mở trình soạn thảo mã ở phía trên cùng bên phải của Cloud Shell:

Chuyển đến tệp Program.cs bên trong thư mục VideoIntApiDemo rồi thay thế mã bằng đoạn mã sau:
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}");
}
}
}
}
}
Dành một hoặc hai phút để nghiên cứu mã và xem cách video được gắn nhãn*.*
Trong Cloud Shell, hãy chạy ứng dụng:
dotnet run
Video Intelligence API mất vài giây để trích xuất nhãn nhưng cuối cùng, bạn sẽ thấy kết quả sau:
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
...
Tóm tắt
Trong bước này, bạn có thể liệt kê tất cả nhãn trong một video bằng Video Intelligence API. Bạn có thể đọc thêm trên trang Phát hiện nhãn.
6. Phát hiện cảnh thay đổi
Bạn có thể sử dụng Video Intelligence API để phát hiện các thay đổi cảnh trong một video được lưu trữ trên máy hoặc trong Google Cloud Storage. Trong phần này, bạn sẽ phân tích video để tìm những thay đổi về cảnh trong một tệp nằm trong Google Cloud Storage.
Để phát hiện các thay đổi về cảnh, hãy chuyển đến tệp Program.cs bên trong thư mục VideoIntApiDemo rồi thay thế mã bằng đoạn mã sau:
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);
}
}
}
}
}
Dành một hoặc hai phút để nghiên cứu mã và xem cách phát hiện cú đánh được thực hiện.
Quay lại Cloud Shell, hãy chạy ứng dụng. Bạn sẽ thấy kết quả sau:
dotnet run
Bạn sẽ thấy kết quả sau đây:
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"
Tóm tắt
Trong bước này, bạn có thể sử dụng Video Intelligence API để phát hiện các thay đổi về cảnh trong một tệp được lưu trữ trong Google Cloud Storage. Đọc thêm về thay đổi cảnh quay.
7. Phát hiện nội dung phản cảm
Tính năng Phát hiện nội dung phản cảm phát hiện nội dung người lớn trong video. Nội dung người lớn là nội dung thường phù hợp với người từ 18 tuổi trở lên, bao gồm nhưng không giới hạn ở ảnh khoả thân, hoạt động tình dục và nội dung khiêu dâm (kể cả phim hoạt hình hoặc anime). Phản hồi bao gồm một giá trị khả năng được phân loại, từ RẤT KHÔNG CÓ KHẢ NĂNG đến RẤT CÓ KHẢ NĂNG.
Khi đánh giá một video, hệ thống Phát hiện nội dung phản cảm sẽ đánh giá từng khung hình và chỉ xem xét nội dung hình ảnh. Thành phần âm thanh của video không được dùng để đánh giá mức độ phản cảm của nội dung.
Để phát hiện nội dung phản cảm, hãy chuyển đến tệp Program.cs bên trong thư mục VideoIntApiDemo rồi thay thế mã bằng đoạn mã sau:
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();
}
}
}
}
}
Dành một hoặc hai phút để nghiên cứu mã và xem cách phát hiện nội dung phản cảm được thực hiện*.*
Trong Cloud Shell, hãy chạy ứng dụng:
dotnet run
Quá trình này có thể mất vài giây nhưng cuối cùng, bạn sẽ thấy kết quả sau:
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
Tóm tắt
Ở bước này, bạn có thể thực hiện quy trình phát hiện nội dung phản cảm trên video bằng Video Intelligence API. Đọc thêm về tính năng Phát hiện nội dung phản cảm.
8. Xin chúc mừng!
Bạn đã tìm hiểu cách sử dụng Video Intelligence API bằng C#!
Dọn dẹp
Để tránh bị tính phí cho tài khoản Google Cloud Platform đối với các tài nguyên được dùng trong hướng dẫn bắt đầu nhanh này, hãy làm như sau:
- Truy cập vào Cloud Platform Console.
- Chọn dự án mà bạn muốn tắt, sau đó nhấp vào "Xoá" ở trên cùng: thao tác này sẽ lên lịch xoá dự án.
Tìm hiểu thêm
- Google Cloud Video Intelligence API: https://cloud.google.com/video-intelligence/docs/
- C#/.NET trên Google Cloud Platform: https://cloud.google.com/dotnet/
- Ứng dụng Google Cloud .NET: https://googlecloudplatform.github.io/google-cloud-dotnet/
Giấy phép
Tác phẩm này được cấp phép theo giấy phép Ghi công theo Creative Commons 2.0 Chung.