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 sử dụng thị giác máy tính trong ứng dụng, bao gồm gắn nhãn hình ảnh, phát hiện khuôn mặt và điểm mốc, nhận dạng ký tự quang học (OCR) và gắn thẻ 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 thực hiện tính năng 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 cá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 tính năng 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 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 Vision API
Bạn phải bật Vision API trước khi có thể bắt đầu sử dụng API này. Khi dùng Cloud Shell, bạn có thể bật API bằ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ẽ dùng để chạy các 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 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 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 tính năng Phát hiện nhãn
Một trong những tính năng cơ bản của Vision API là xác định các đối tượng hoặc thực thể trong hình ảnh, còn được gọi là chú thích nhãn. Tính năng phát hiện nhãn xác định các đối tượng, địa điểm, hoạt động, loài động vật, sản phẩm nói chung và nhiều nội dung khác. Vision API nhận một hình ảnh đầu vào và trả về các nhãn có khả năng cao nhất áp dụng cho hình ảnh đó. API này trả về các nhãn khớp hàng đầu cùng với điểm tin cậy của một kết quả khớp với hình ảnh.
Trong ví dụ này, bạn sẽ thực hiện việc phát hiện nhãn trên hình ảnh cảnh đường phố ở Thượng Hải. 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 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)}%)");
}
}
}
}
Dành một hoặc hai phút để nghiên cứu mã và xem cách thư viện Vision API C# được dùng để thực hiện tính năng phát hiện nhãn.
Trong Cloud Shell, hãy 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
Ở bước này, bạn có thể thực hiện tính năng phát hiện nhãn trên hình ảnh cảnh đường phố ở Trung Quốc và hiển thị các nhãn có khả năng cao nhất liên quan đến hình ảnh đó. Đọc thêm về tính năng Phát hiện nhãn.
6. Thực hiện tính năng Phát hiện văn bản
Tính năng Nhận dạng văn bản của Vision API thực hiện quy trình Nhận dạng ký tự quang học. API này phát hiện và trích xuất văn bản trong hình ảnh, đồng thời hỗ trợ nhiều ngôn ngữ. Công cụ này cũng 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 tính năng phát hiện văn bản trên hình ảnh của một 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);
}
}
}
}
}
Dành một hoặc hai phút để nghiên cứu mã và xem cách thư viện Vision API C# được dùng để thực hiện tính năng phát hiện văn bản.
Trong Cloud Shell, hãy 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 tính năng phát hiện văn bản trên hình ảnh về một lối băng qua đường dành cho rái cá và in văn bản được nhận dạng từ hình ảnh đó. Tìm hiểu thêm về tính năng Phát hiện văn bản.
7. Thực hiện tính năng Phát hiện địa danh
Tính năng Nhận dạng địa danh của Vision API phát hiện các cấu 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 tính năng phát hiện địa danh 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);
}
}
}
}
}
Dành một hoặc hai phút để nghiên cứu mã và xem cách Thư viện Vision API C# được dùng để thực hiện tính năng phát hiện địa danh.
Trong Cloud Shell, hãy 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ể thực hiện tính năng phát hiện địa danh trên hình ảnh Tháp Eiffel. Tìm hiểu thêm về tính năng Phát hiện địa danh.
8. Thực hiện tính năng Phát hiện khuôn mặt biểu lộ cảm xúc
Tính năng Nhận diệ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 thuộc tính chính liên quan đến khuôn mặt, chẳng hạn như trạng thái cảm xúc hoặc việc đội mũ.
Trong ví dụ này, bạn sẽ phát hiện khả năng xảy ra trạng thái cảm xúc trong 4 khả năng xảy ra cảm xúc khác nhau, bao gồm: vui vẻ, tức giận, buồn bã 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}");
}
}
}
}
Dành một hoặc hai phút để nghiên cứu mã và xem cách thư viện Vision API C# được dùng để thực hiện tính năng phát hiện khuôn mặt biểu lộ 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 của chúng tôi:
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 biểu lộ 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 sử dụng Vision API 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í 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 Vision API: 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 Ghi công theo Creative Commons 2.0 Chung.