Microsoft Cognitive Service API – Phép màu công nghệ

Gần đây, khi lang thang trên mạng, mình chợt thấy một bài viết về Micorosoft Coginitive Service API. Sau khi test thử và thấy nó quá “ảo diệu”, mình cầm lòng không được nên phải lên blog viết bài này để chia sẻ cho các bạn.

maria
API có thể nhận diện được Maria Oizawa trong ảnh.

Giới thiệu tổng quan

Nói đơn giản, bộ API này là kết tinh vô số tinh hoa về thuật toán, machine learning, data mining của Microsoft. Sử dụng bộ API này, bạn có thể tạo ra những ứng dụng “vi diệu” mà không cần biết gì về machine learning hay data mining cả.

Bộ API Cognitive Service của Microsoft bao gồm 5 bộ API nhỏ:

  • Vision: Nhận diện hình ảnh, khuôn mặt và cảm xúc
  • Speech: Nhận diện giọng nói
  • Language: Nhận diện ngôn ngữ
  • Knowledge: Tra cứu dữ liệu trong giới học thuật (các báo cáo, bài báo khoa học)
  • Search: Sử dụng bing để tìm kiếm bằng chữ, hình ảnh, video

Các API về giọng nói, ngôn ngữ chỉ hoạt động được với tiếng Anh và một số ngôn ngữ khác, không có tiếng Việt. Do đó, trong phạm vi bài viết, mình sẽ giới thiệu bộ API Vision (Thật ra đây mới là thằng ngầu nhất).

2
Tôi đã bật khóc vì xúc động khi test API này

Vision API

Bộ này có 4 set API nhỏ vô cùng bá đạo như sau:

  • Computer Vision: Nhận diện các thuộc tính của hình ảnh, các vật thể trong ảnh, đưa ra mô tả. Ngoài ra, API này còn có thể nhận diện được ảnh có phải là ảnh XXX hay không =))). Lúc đầu test mình rất ngạc nhiên vì kết quả API trả về khá là chính xác.

azure_cognitive

  • Face: Nhận diện các khuôn mặt trong hình như Facebook. Bạn cũng có thể thông qua API để huấn luyện cho máy, giúp nó nhận diện người trong ảnh là ai. API này còn có thể nhận được người trong ảnh là nam hay nữ, tuổi khoảng bao nhiêu luôn nhé, rất bá đạo =)).
  • Emotion: Nhận diện khuôn mặt và cảm xúc của người trong ảnh. Chức năng này khá vui và hài hước.

azure_cognitive_01

  • Video: Cho phép nhận diện khuôn mặt, hình ảnh, nhận diện chuyển động, chống rung, tạo thumbnail cho video. API này có vẻ cũng khá hay nhưng mình chưa test.

Cách dùng API

Ngày trước, lúc làm đồ án tốt nghiệp, mình cũng từng làm một dự án liên quan tới nhận diện hình ảnh. Hồi đấy mình sử dụng OpenCV để nhận diện khuôn mặt trong hình và tên người trong ảnh. Do OpenCV viết bằng C++, bạn phải tìm thư viện wrapper bằng Java, C#  để sử dụng, khá là mệt.

Cognitive Serivce được Microsoft cung cấp dưới dạng Restful API nên bạn có thể dễ dàng tích hợp nó với mọi ngôn ngữ lập trình. Hiện tại mình đang đã tích hợp nó với bot chat trong NodeJS. Sử dụng API rất đơn giản, bạn không cần cài đặt gì cả, chỉ cần làm 3 bước:

  1. Đăng ký tài khoản Cognitive Service để lấy key. Một tài khoản free cho phép bạn gọi khoản 5000-10000 request mỗi tháng, cũng khá đủ để nghịch ngợm lung tung rồi.
  2. Chọn API mình muốn sử dụng, sau đó vào xem document của nó. Ví dụ như mình muốn dùng ComputerVision API để nhận diện hình ảnh, mình sẽ vào đây xem hướng dẫn:https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1fa.
  3. Mỗi API sẽ có 1 API URL riêng. Ta chỉ cần gửi request tới URL này, trong request có kèm theo key và link của hình ảnh muốn nhận diện. Kết quả sẽ được trả về dưới dạng JSON. Trong code mẫu, mình dùng NodeJS, nhưng các bạn có thể dùng C# hay Java tùy ý.
request({
url: this._analyzeApiUrl, // Thay bằng URL của API
headers: {
"Ocp-Apim-Subscription-Key": this._analyzeKey // Thay bằng key của bạn
},
method: "POST",
json: true,
body: {
"url": imageUrl // Thay bằng url của hình ảnh
}
}, (err, response, body) => {
// Lấy kết quả trong body
});

Ứng dụng của các API

Nếu bạn có ý định xây dựng một mạng xã hội, bạn sẽ cần chức năng nhận diện khuôn mặt, nhận diện thành viên. Thay vì viết lại chức năng này từ đầu (rất phức tạp, đòi hỏi phải biết về machine learning, data mining), ta có thể dùng FaceAPI để có kết quả một cách nhanh chóng.
Bộ Computer Vision API cho phép ta nhận diện các vật có trong ảnh, có thể dùng để thêm tag cho hình ảnh. Giả sử bạn có một thư viện ảnh và bạn muốn thêm chức năng tìm kiếm theo nội dung ảnh, bạn chỉ cần sử dụng Computer Vision để thêm tag cho các hình. Nếu người dùng muốn tìm hình “chó”, ta chỉ cần query ảnh có tag “chó” là ra kết quả.

114
Tấm ảnh này được nhận diện với các tag: dog, indoor, sitting, small, white, bed, room, … Cũng chuẩn đấy chứ nhỉ?

Hiện tại, con chat bot của tôi đi code dạo cũng đang tích hợp Computer Vision APIEmotion API để nhận diện hình ảnh và cảm xúc. Bạn nào tò mò có thể vào m.me/toidicodedao để nghịch chơi. Bạn nào có ý tưởng nào hay để sử dụng các API này thì cứ comment nhé.

azure_cognitive_02

azure_cognitive_03

azure_cognitive04

Phạm Huy Hoàng

Anh Phạm Huy Hoàng hiện đang theo học tại Thạc sĩ về Khoa Học Máy Tính (Computer Science) tại Đại học Lancaster, Anh. Tại Anh, Hoàng cũng làm Full-stack Developer cho trường. Hoàng là chủ blogger Tôi Đi Code Dạo rất nổi tiếng tại Việt Nam. Hoàng có hơn 6 năm kinh nghiệm trong lĩnh vực phần mềm và rất đam mê nghiên cứu về các công nghệ mới như Machine Learning, Cognitive.

hoangph has 3 posts and counting.See all posts by hoangph

Leave a Reply

Your email address will not be published. Required fields are marked *