1. Tổng quan
API Google Cloud Video Intelligence cho phép các nhà phát triển sử dụng công nghệ phân tích video của Google như một phần trong ứ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 những thứ khó hiểu, 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 thay đổi về cảnh quay: Phát hiện các thay đổi của cảnh trong video.
API REST cho phép người dùng chú thích các video được lưu trữ trên máy hoặc trong Google Cloud Storage bằng thông tin bối cảnh ở cấp độ toàn bộ video, theo phân đoạn, mỗi cảnh quay và trong từng 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 với C#. Bạn sẽ tìm hiểu cách phân tích video để gắn nhãn, thay đổi cảnh quay và phát hiện 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 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 cho hãng thu âm
- Cách phân tích video về những thay đổi đối với cảnh quay
- 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 C#
Khảo sát
Bạn sẽ sử dụng hướng dẫn này như thế nào?
Bạn đánh giá trải nghiệm sử dụng C# như thế nào?
Bạn đánh giá trải nghiệm sử dụng các dịch vụ của Google Cloud Platform như thế nào?
2. Thiết lập và yêu cầu
Thiết lập môi trường theo tiến độ riêng
- Đăng nhập vào Google Cloud Console rồi tạo dự án mới hoặc sử dụng lại 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ự không được API của Google sử dụng. Bạn luôn có thể cập nhật ứng dụng.
- Mã dự án là duy nhất trong tất cả các dự án Google Cloud và không thể thay đổi (không thể thay đổi sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường bạn không quan tâm đến sản phẩm đó là gì. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham khảo Mã dự án của mình (thường được xác định là
PROJECT_ID
). Nếu không thích mã đã tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Ngoài ra, bạn có thể thử cách riêng của mình để xem có thể sử dụng hay không. Bạn không thể thay đổi mã này sau bước này và mã vẫn giữ nguyên trong thời gian dự án. - Đối với thông tin của bạn, có giá trị thứ ba, Project Number (Số dự án), mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu này.
- Tiếp theo, bạn sẽ phải bật tính năng thanh toán trong Cloud Console để sử dụng API/tài nguyên trên đám mây. Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Để tắt các tài nguyên nhằm tránh phát sinh việc thanh toán ngoài hướng dẫn này, bạn có thể xoá các tài nguyên bạ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í 300 USD.
Khởi động Cloud Shell
Mặc dù bạn 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 trong Đám mây.
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 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 nhìn thấy màn hình trung gian, hãy nhấp vào Tiếp tục.
Quá trình cấp phép và kết nối với Cloud Shell chỉ mất vài phút.
Máy ảo này được tải tất cả các công cụ phát triển cần thiết. Dịch vụ này cung cấp thư mục gốc có dung lượng ổn định 5 GB và chạy trên Google Cloud, giúp nâng cao đáng kể hiệu suất và khả năng xác thực của mạng. Nhiều (nếu không nói là) tất cả công việc của bạn trong lớp học lập trình này đều có thể thực hiện bằng trình duyệt.
Sau khi kết nối với Cloud Shell, bạn sẽ thấy mình đã được xác thực và dự án được đặt thành mã dự á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
Kết quả 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
Kết quả lệnh
[core] project = <PROJECT_ID>
Nếu chưa, bạn có thể thiết lập chế độ này bằng lệnh sau:
gcloud config set project <PROJECT_ID>
Kết quả lệnh
Updated property [core/project].
3. Bật Video Intelligence API
Bạn phải bật API này thì mới có thể bắt đầu sử dụng API Video Intelligence. Bạn có thể bật API này bằng cách 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 đơn giản trên bảng điều khiển C# mà bạn sẽ dùng để chạy mẫu API Video Intelligence:
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 giải quyết:
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ờ đây, bạn đã sẵn sàng sử dụng API Video Intelligence!
5. Phát hiện nhãn
Tính năng phân tích nhãn phát hiện các nhãn trong một video được lưu trữ trên thiết bị hoặc trong Google Cloud Storage. Trong phần này, bạn sẽ phân tích một video về các nhãn được lưu trữ trong Google Cloud Storage.
Trước tiên, hãy mở trình soạn thảo mã từ 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}");
}
}
}
}
}
Hãy dành một hoặc hai phút để nghiên cứu mã và xem cách gắn nhãn video*.*
Quay lại Cloud Shell, chạy ứng dụng:
dotnet run
Video Intelligence API có thể 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
Ở bước này, bạn có thể liệt kê tất cả các nhãn trong một video bằng API Video Intelligence. Bạn có thể đọc thêm trên trang Phát hiện nhãn.
6. Phát hiện thay đổi khi chụp
Bạn có thể dùng Video Intelligence API để phát hiện những thay đổi về cảnh quay trong một video được lưu trữ trên thiết bị hoặc trong Google Cloud Storage. Trong phần này, bạn sẽ phân tích những thay đổi của video đối với một tệp nằm trong Google Cloud Storage.
Để phát hiện những thay đổi về cảnh quay, 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);
}
}
}
}
}
Hãy dành vài phút để tìm hiểu mã và xem cách hoạt động của tính năng phát hiện cảnh bắn.
Quay lại Cloud Shell, chạy ứng dụng. Bạn sẽ thấy kết quả sau đây:
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
Ở bước này, bạn có thể sử dụng Video Intelligence API để phát hiện những thay đổi đối với cảnh quay trong một tệp được lưu trữ trên Google Cloud Storage. Đọc thêm về Thay đổi về thời điểm chụp ảnh.
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 một 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 (bao gồm cả phim hoạt hình hoặc anime). Phản hồi bao gồm giá trị khả năng được phân giỏ, từ VERY_UNLIKELY đến VERY_LIKELY.
Khi đánh giá một video, công cụ Phát hiện nội dung phản cảm sẽ thực hiện việc này theo 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 độ nội dung phản cảm.
Để 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();
}
}
}
}
}
Hãy dành một hoặc hai phút để nghiên cứu mã và xem hiệu quả của tính năng phát hiện nội dung phản cảm*.*
Quay lại Cloud Shell, chạy ứng dụng:
dotnet run
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ể phát hiện nội dung phản cảm trên một video bằng API Video Intelligence. Đọ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í vào tài khoản Google Cloud Platform cho các tài nguyên được sử dụng trong hướng dẫn bắt đầu nhanh này, hãy làm như sau:
- Truy cập vào Bảng điều khiển Cloud Platform.
- Chọn dự án 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
- API Google Cloud Video Intelligence: 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 chung Ghi nhận tác giả Creative Commons 2.0.