Thông tin về lớp học lập trình này
1. Tổng quan
Google Cloud Vision API giúp nhà phát triển dễ dàng tích hợp các tính năng phát hiện thị lực vào các ứng dụng, chẳng hạn như gắn nhãn hình ảnh, phát hiện khuôn mặt và mốc, nhận dạng ký tự quang học (OCR) và gắn thẻ cho nội dung phản cảm.
Trong lớp học lập trình này, bạn sẽ tập trung vào việc sử dụng Vision API với C#. Bạn sẽ tìm hiểu cách phát hiện văn bản, phát hiện điểm mốc và phát hiện khuôn mặt!
Kiến thức bạn sẽ học được
- Cách sử dụng Cloud Shell
- Cách bật Google Cloud Vision API
- Cách xác thực yêu cầu API
- Cách cài đặt thư viện ứng dụng Vision API cho C#
- Cách thực hiện tính năng Phát hiện nhãn
- Cách thực hiện Phát hiện văn bản
- Cách thực hiện tính năng Phát hiện địa danh
- Cách thực hiện tính năng Phát hiện khuôn mặt
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 Vision API
Bạn phải bật API này thì mới có thể bắt đầu sử dụng Vision API. Khi sử dụng Cloud Shell, bạn có thể bật API bằng cách dùng lệnh sau:
gcloud services enable vision.googleapis.com
4. Cài đặt thư viện ứng dụng Google Cloud Vision 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ẽ sử dụng để chạy mẫu Vision API:
dotnet new console -n VisionApiDemo
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 VisionApiDemo
:
cd VisionApiDemo/
Và thêm gói Google.Cloud.Vision.V1
NuGet vào dự án:
dotnet add package Google.Cloud.Vision.V1
info : Adding PackageReference for package 'Google.Cloud.Vision.V1' into project '/home/atameldev/VisionApiDemo/VisionApiDemo.csproj'.
log : Restoring packages for /home/atameldev/VisionApiDemo/VisionApiDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.Vision.V1' version '1.2.0' added to file '/home/atameldev/VisionApiDemo/VisionApiDemo.csproj'.
Giờ đây, bạn đã sẵn sàng sử dụng Vision API!
5. Thực hiện phát hiện nhãn
Một trong những tính năng cơ bản của Vision API là nhận dạng các đối tượng hoặc thực thể trong một hình ảnh, còn được gọi là chú thích nhãn. Tính năng phát hiện nhãn giúp xác định các vật thể, vị trí, hoạt động, các loài động vật, sản phẩm chung và nhiều thông tin khác. Vision API lấy hình ảnh đầu vào và trả về các nhãn có nhiều khả năng nhất áp dụng cho hình ảnh đó. Chỉ số này sẽ trả về các nhãn phù hợp nhất cùng với điểm số tin cậy về kết quả trùng khớp với hình ảnh.
Trong ví dụ này, bạn sẽ thực hiện phát hiện nhãn trên một hình ảnh về một cảnh đường phố ở Thượng Hải. Mở trình soạn thảo mã ở 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 VisionApiDemo
rồi thay thế mã bằng đoạn mã sau:
using Google.Cloud.Vision.V1;
using System;
namespace VisionApiDemo
{
class Program
{
static void Main(string[] args)
{
var client = ImageAnnotatorClient.Create();
var image = Image.FromUri("gs://cloud-samples-data/vision/using_curl/shanghai.jpeg");
var labels = client.DetectLabels(image);
Console.WriteLine("Labels (and confidence score):");
Console.WriteLine(new String('=', 30));
foreach (var label in labels)
{
Console.WriteLine($"{label.Description} ({(int)(label.Score * 100)}%)");
}
}
}
}
Hãy dành vài phút để nghiên cứu mã và xem cách thư viện C# của Vision API được dùng để thực hiện việc phát hiện nhãn.
Quay lại Cloud Shell, chạy ứng dụng:
dotnet run
Bạn sẽ thấy kết quả sau đây:
Labels (and confidence score):
==============================
Wheel (97%)
Tire (97%)
Photograph (94%)
Bicycle (94%)
Motor vehicle (89%)
Infrastructure (89%)
Vehicle (86%)
Mode of transport (84%)
Bicycle wheel (83%)
Asphalt (81%)
Tóm tắt
Trong bước này, bạn có thể thực hiện việc phát hiện nhãn cho một hình ảnh đường phố ở Trung Quốc và hiển thị các nhãn có nhiều khả năng nhất được liên kết với hình ảnh đó. Đọc thêm về tính năng Phát hiện nhãn.
6. Thực hiện phát hiện văn bản
Tính năng Phát hiện văn bản của Vision API thực hiện nhận dạng ký tự quang học. Công cụ này phát hiện và trích xuất văn bản trong một hình ảnh nhờ tính năng hỗ trợ nhiều ngôn ngữ. Ngoài ra, Gemini còn có tính năng tự động nhận dạng ngôn ngữ.
Trong ví dụ này, bạn sẽ thực hiện phát hiện văn bản trên hình ảnh của màn hình cập nhật phần mềm hệ thống.
Chuyển đến tệp Program.cs
bên trong thư mục VisionApiDemo
rồi thay thế mã bằng đoạn mã sau:
using Google.Cloud.Vision.V1;
using System;
namespace VisionApiDemo
{
class Program
{
static void Main(string[] args)
{
var client = ImageAnnotatorClient.Create();
var image = Image.FromUri("gs://cloud-samples-data/vision/text/screen.jpg");
var response = client.DetectText(image);
foreach (var annotation in response)
{
if (annotation.Description != null)
{
Console.WriteLine(annotation.Description);
}
}
}
}
}
Hãy dành vài phút để nghiên cứu mã và xem cách thư viện C# của Vision API được dùng để thực hiện việc phát hiện văn bản.
Quay lại Cloud Shell, chạy ứng dụng:
dotnet run
Bạn sẽ thấy kết quả sau đây:
System Software Update
Back
Preparing to install...
After preparation is complete, the PS4 will automatically restart and the update file will be
installed.
37%
gus class
System
Software
Update
Back
Preparing
to
install
...
After
preparation
is
complete
,
the
PS4
will
automatically
restart
and
the
update
file
will
be
installed
.
37
%
gus
class
Tóm tắt
Trong bước này, bạn có thể thực hiện phát hiện văn bản trên hình ảnh rái cá và in văn bản đã nhận dạng được từ hình ảnh đó. Đọc thêm về tính năng Phát hiện văn bản.
7. Thực hiện phát hiện mốc
Tính năng Phát hiện địa danh của Vision API phát hiện các công trình kiến trúc tự nhiên và nhân tạo phổ biến trong một hình ảnh.
Trong ví dụ này, bạn sẽ thực hiện phát hiện mốc trên hình ảnh Tháp Eiffel.
Chuyển đến tệp Program.cs
bên trong thư mục VisionApiDemo
rồi thay thế mã bằng đoạn mã sau:
using Google.Cloud.Vision.V1;
using System;
namespace VisionApiDemo
{
class Program
{
static void Main(string[] args)
{
var client = ImageAnnotatorClient.Create();
var image = Image.FromUri("gs://cloud-samples-data/vision/eiffel_tower.jpg");
var response = client.DetectLandmarks(image);
foreach (var annotation in response)
{
if (annotation.Description != null)
{
Console.WriteLine(annotation.Description);
}
}
}
}
}
Hãy dành vài phút để nghiên cứu mã và xem cách dùng thư viện C# của Vision API để thực hiện việc phát hiện mốc.
Quay lại Cloud Shell, chạy ứng dụng:
dotnet run
Bạn sẽ thấy kết quả sau đây:
Eiffel Tower
Tóm tắt
Ở bước này, bạn đã có thể phát hiện mốc trên hình ảnh Tháp Eiffel. Đọc thêm về tính năng Phát hiện dấu mốc.
8. Thực hiện phát hiện khuôn mặt cảm xúc
Tính năng Phát hiện khuôn mặt phát hiện nhiều khuôn mặt trong một hình ảnh cùng với các đặc điểm chính trên khuôn mặt có liên quan như trạng thái cảm xúc hoặc việc đeo mũ nón.
Trong ví dụ này, bạn sẽ xác định khả năng xảy ra trạng thái cảm xúc từ bốn khả năng cảm xúc khác nhau, bao gồm: vui mừng, tức giận, đau buồn và ngạc nhiên.
Chuyển đến tệp Program.cs
bên trong thư mục VisionApiDemo
rồi thay thế mã bằng đoạn mã sau:
using Google.Cloud.Vision.V1;
using System;
namespace VisionApiDemo
{
class Program
{
static void Main(string[] args)
{
var client = ImageAnnotatorClient.Create();
var image = Image.FromUri("gs://cloud-samples-data/vision/face/face_no_surprise.jpg");
var response = client.DetectFaces(image);
foreach (var annotation in response)
{
Console.WriteLine($"Picture: {image}");
Console.WriteLine($" Surprise: {annotation.SurpriseLikelihood}");
}
}
}
}
Hãy dành vài phút để nghiên cứu mã này và xem cách dùng thư viện C# của Vision API để phát hiện khuôn mặt cảm xúc.
Chạy ứng dụng;
dotnet run
Bạn sẽ thấy kết quả sau đây cho ví dụ về face_no_surprise:
Picture: { "source": { "imageUri": "gs://cloud-samples-data/vision/face/face_no_surprise.jpg" } }
Surprise: Likely
Tóm tắt
Ở bước này, bạn đã có thể thực hiện tính năng phát hiện khuôn mặt cảm xúc. Đọc thêm về tính năng Phát hiện khuôn mặt.
9. Xin chúc mừng!
Bạn đã tìm hiểu cách dùng Vision API (API Vision) bằng C# để thực hiện nhiều hoạt động phát hiện trên hình ảnh!
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 Vision: https://cloud.google.com/vision/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.