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.

1
API có thể nhận diện được Maria Oizawa trong ảnh =)). Nếu không tin các bạn có thể vào đây test

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.

13590291_275812742780381_1070442863274899854_n

  • 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.

13626603_276934379334884_2510891734191285593_n

  • 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
});

view raw

api.js

hosted with ❤ by GitHub

Ứ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ả.

11
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é.

13592707_275812739447048_2233306726481936132_n
13626484_276934359334886_2241842034280994235_n

23 thoughts on “Microsoft Cognitive Service API – Phép màu công nghệ”

  1. Thanks bác, mà thằng google nó public cả mã nguồn machine learning của nó đó, bác vọc thử coi có gì hot không . :3

    Giờ bắt đầu có nhiều ứng dụng Machine Learning vào , điển hình như thằng Prisma cho máy nó vẽ lại ảnh cho mình theo phong cách nghệ thuật hiện đang tạo lên xu hướng mới.

    Vớ vẩn một thời gian nữa dev lại chuyển sang làm huấn luyện, trainer cho bot biết cách lập trình. :v

    Liked by 1 person

  2. Câu vui vui như hình cuối cùng là bạn tự đưa vào dựa vào thuộc tính emotion của api đúng không? Chứ máy nói đùa được vậy thì ảo quá 😮

    Liked by 1 person

  3. Chào anh Hoàng, cùng tất cả bạn đọc!
    Rất tình cờ em đọc được bài viết này của anh trên Tech Talk và mò mãi mới vào được bài gốc của anh ở đây :))
    Thật trùng hợp là em cũng đang có công việc cần làm về vấn đề nhận dạng hình ảnh.
    Công việc hiện tại của em đòi hỏi phải phát triển một ứng dụng có thể nhận dạng xem trong một hình ảnh, có xuất hiện 1 hình mẫu đã cho trước hay không. Ví dụ, khách hàng chuyển cho bên em hình mẫu 1 con dấu, cùng vài nghìn tấm ảnh khác, sau đó yêu cầu bên em tìm xem trong số những tấm ảnh đó, có những tấm ảnh nào xuất hiện hình con dấu mẫu kia.
    Tuy nhiên, qua bài giới thiệu và tìm hiểu mà em đọc trên trang của microsoft, có vẻ như Vision API chỉ tập trung vào nhận dạng khuôn mặt, đặc tính hình ảnh thôi chứ không có hỗ trợ nào phù hợp với yêu cầu công việc của em.
    Hoặc cũng có thể trình độ của em chưa thể nhìn ra được cái đó ^^ Vậy nên em mạn phép để lại bình luận này nhờ anh tư vấn cho em một chút về vấn đề này. Còn nếu như API này của Microsoft không hỗ trợ thì liệu các API của những gã khổng lồ khác như Google, có cái nào hỗ trợ không ạ.
    Em cảm ơn anh!

    Like

  4. chào anh. bài viết rất hay. em đang cần 1 cái nhận diện giọng nói tiếng anh cho dự án giáo dục đã đăng kí 1 tài khoản nhưng k down dc bộ source

    Like

      1. dạ không phải lúc gọi api trả về có language. ý em là API nó dau hổ trợ tiếng việt. a làm sao chuyển về dc tiếng việt ạ. anh chia sẻ e với ạ.

        Like

      1. em tìm hiểu hình như Bing Translate API phải nâng cấp Azure lên mới xài được anh ạ. Nên e dùng Yandex Translate API. Gọi API rất nhanh mà tiện lợi mà free nữa. mỗi tội dịch k bằng google. hic

        Like

  5. cho em hỏi ngoài tí được không ạ. cx là nhận diện mà em có đề tài là nhận diện giọng nói, em đang xài api của google mà nó không hỗ trợ tiếng việt về phần lệnh câu như dấu với các ký tự đặc biệt. anh có thể tư vấn em tí cách viết dấu trong tiếng việt được không ạ

    Like

Leave a comment