Nhận diện khuôn mặt với Microsoft Cognitive Face Recognition API

Với bộ Face Recognition API của Microsoft Cognitive việc nhận diện khuôn mặt đã trở nên thật đơn giản. Trong bài này, tôi sẽ hướng dẫn các bạn sử dụng bộ API này bằng các bước sử dụng Microsoft Cognitive.

Step 1

Đầu tiên, các bạn có thể đăng kí một tài khoản miễn phí của Microsoft. Với tài khoản này chúng ta có thể vọc hết các tính năng của Cognitive, tuy nhiên Microsoft sẽ chỉ lưu trữ data của bạn trong vòng 1 ngày.

Step 2

Sau khi có account, hãy vào link này để get cho mình bộ Key mà Microsoft cung cấp cho bạn như hình dưới. Lưu ý không có key này thì hết xài API nha!!!

1-6

Step 3

OK, sau khi có key rồi chúng ta bắt đầu vọc thôi. Giải thích qua một chút, Cognitive sẽ nhận diện theo nhóm người, và qua đó sẽ detect các thành viên trong nhóm. Vậy việc đầu tiên, chúng ta cần tạo một nhóm trước bằng Api này. Để demo, tôi sẽ tạo 1 group tạm gọi là … “DepTraiGroup” với ID là “DepTraiGroup1”.

Những Tham số cần truyền vào:

"personGroupId": Cái này là group ID,
"name": Cái này chính là group Name,
"userData": Thông tin User.
URL: "https://api.projectoxford.ai/face/v1.0/persongroups/personGroupID"

Body của tôi sẽ như sau:

PUT https://api.projectoxford.ai/face/v1.0/persongroups/DT1 HTTP/1.1
Content-Type: application/json
Host: api.projectoxford.ai
Content-Length: 72
Ocp-Apim-Subscription-Key: ••••••••••••••••••••••••••••••••
{
    "name":"Deptraigroup",
    "userData":"Hoi Nhung nguoi dep trai"
}

Sau khi gửi request, Service sẽ trả về status 200, nghĩa là bạn đã tạo group thành công.

Step 4

Group có dzồi thì phải có người chứ nhề. Nào cùng tạo ra mấy ông trong group với Api này.

Thằng này thì tương tự như Group, chỉ cần điền name và userData. Ở đây tôi sẽ tạo person Name Là ThuanSoldier.

Request URL sẽ có dạng:

https://api.projectoxford.ai/face/v1.0/persongroups/{personGroupId}/persons

Body

POST https://api.projectoxford.ai/face/v1.0/persongroups/giang/persons HTTP/1.1
Content-Type: application/json
Host: api.projectoxford.ai
Content-Length: 60
Ocp-Apim-Subscription-Key: ••••••••••••••••••••••••••••••••

{
    "name":"ThuanSoldier",
    "userData":"Thuan Bo Doi"
}

Sau khi gửi thành công, Api sẽ trả về cho chúng ta Response Data dạng như sau:

Pragma: no-cache
apim-request-id: 171b8ce5-xxxx-xxxx-be51-ddd367ef9d35
Cache-Control: no-cache
Date: Tue, 30 Aug 2016 17:38:38 GMT
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Length: 51
Content-Type: application/json; charset=utf-8
Expires: -1
{
  "personId": "bd0eaec2-124c-4a23-b0a7-56661ea5714d"
}

Lưu ý: Hãy lưu lại personID này để dùng cho các step tiếp theo nhé các bro.

Step 5

Sau khi tạo thành công person, chúng ta cần add cho person ảnh thông tin khuôn mặt để máy nó còn học :)). Thằng này thì sử dụng Api add Face. Tôi sẽ sử dụng ảnh dưới đây.

2-3-768x576

Request URL:

https://api.projectoxford.ai/face/v1.0/persongroups/{personGroupId}/persons/{personId}/persistedFaces

Body

POST https://api.projectoxford.ai/face/v1.0/persongroups/giang/persons/bd0eaec2-124c-4a23-b0a7-56661ea5714d/persistedFaces?userData=Anh cua Thuan&targetFace=1 HTTP/1.1
Content-Type: application/json
Host: api.projectoxford.ai
Content-Length: 40
Ocp-Apim-Subscription-Key: ••••••••••••••••••••••••••••••••

{
    "url":"http://example.com/1.jpg"
}

URL chính là URL ảnh của person. Lưu ý rằng bạn có thể up nhiều url. Và 1 person có tối đa là 248 ảnh. Càng nhiều ảnh thì độ chính xác khi nhận diện càng lớn.

Response data sẽ trả về cho bạn persistedFaceId.

Pragma: no-cache
apim-request-id: 8c391d29-2103-4fd7-9f56-71525827a74c
Cache-Control: no-cache
Date: Tue, 30 Aug 2016 17:57:08 GMT
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Length: 58
Content-Type: application/json; charset=utf-8
Expires: -1

{
  "persistedFaceId": "4411530b-e4f5-4cc4-a8c0-2ac174670da9"
}

Giờ thì chúng ta sẽ training cho Cognitive những thông tin đã nhập ở trên tại đây.

Request URL:

https://api.projectoxford.ai/face/v1.0/persongroups/{personGroupId}/train

Thông số đầu vào duy nhất chính là personGroupId mà chúng ta đã tạo.

POST https://api.projectoxford.ai/face/v1.0/persongroups/{personGroupId}/train HTTP/1.1
Host: api.projectoxford.ai
Ocp-Apim-Subscription-Key: ••••••••••••••••••••••••••••••••

Train xong service sẽ trả về response như sau:

Pragma: no-cache
Operation-Location: https://api.projectoxford.ai/face/v1.0/persongroups/giang/training
apim-request-id: c1c22fc7-26e1-4010-9974-e31d02f80f0c
Access-Control-Expose-Headers: Operation-Location
Cache-Control: no-cache
Date: Tue, 30 Aug 2016 18:02:29 GMT
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Length: 0
Expires: -1

Step 6

Detect và tạo FaceID. Bước này rất hay vì với APi này ngoài lấy được FaceID bạn còn có thể lấy được các thông số như tuổi tác, giới tính …v.v. Tôi tạm dùng ảnh này

Request URL:

https://api.projectoxford.ai/face/v1.0/detect?returnFaceId=true&returnFaceLandmarks=false&returnFaceAttributes=age

Body:

POST https://api.projectoxford.ai/face/v1.0/detect?returnFaceId=true&returnFaceLandmarks=false&returnFaceAttributes=age HTTP/1.1
Content-Type: application/json
Host: api.projectoxford.ai
Content-Length: 60
Ocp-Apim-Subscription-Key: ••••••••••••••••••••••••••••••••

{
    "url":""
}

Lưu ý: returnFaceAttributes Là thông số mà chúng ta có thể nhận diện Tuổi tác, giới tính …Data cho thằng này gồm có: age, gender, headPose, smile, facialHair, and glasses.
Với Sample tôi tạm lấy giới tính. Data trả về như sau:

Pragma: no-cache
apim-request-id: 1a3bb345-5eb6-4db2-8255-88e26190af87
Cache-Control: no-cache
Date: Tue, 30 Aug 2016 18:23:44 GMT
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Length: 148
Content-Type: application/json; charset=utf-8
Expires: -1

[
  {
    "faceId": "8cc5a8b8-50e2-45d0-b92c-9d32da25de68",
    "faceRectangle": {
      "top": 227,
      "left": 439,
      "width": 45,
      "height": 45
    },
    "faceAttributes": {
      "gender": "male"
    }
  }
]

Tuyệt vời, ông trong ảnh đúng là chuẩn man, ngoài ra chúng ta còn có faceID và tọa độ của khuôn mặt trên ảnh.

Step 7

Sau khi đã training xong cho ông siêu nhân Cognitive. Chúng ta có thể bắt đầu nhận diện được rồi.Sau khi lấy được faceID từ step 6. Sau đó gọi API này. Ở bước này tôi dùng ảnh ở Step 6 để detect.

Request URL:

 https://api.projectoxford.ai/face/v1.0/identify
 

Body

OST https://api.projectoxford.ai/face/v1.0/identify HTTP/1.1
Content-Type: application/json
Host: api.projectoxford.ai
Content-Length: 221
Ocp-Apim-Subscription-Key: ••••••••••••••••••••••••••••••••

{    
    "personGroupId":"",
    "faceIds":[
        "4411530b-e4f5-4cc4-a8c0-2ac174670da9",
        "65d083d4-9447-47d1-af30-b626144bf0fb"
    ],
    "maxNumOfCandidatesReturned":1,
    "confidenceThreshold": 0.7
}

FaceIDs ở đây chính là những ảnh mà chúng ta cần nhận diện.

Ở đây có 2 thông số cần lưu ý:

maxNumOfCandidatesReturned: Số người tối đa chúng ta cần detect.

confidenceThreshold: Chỉ số giống nhau mà theo bạn có thể chấp nhận được (Double 0->1). Theo kinh nghiệm của mình thì 0.7-0.8 tức là đã tìm được người cần tìm rồi hehe.

Kết quả sẽ trả về như sau:

Pragma: no-cache
apim-request-id: 9dcf71d0-3e9a-4299-9c83-07619fe92ff3
Cache-Control: no-cache
Date: Tue, 30 Aug 2016 18:14:24 GMT
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Length: 135
Content-Type: application/json; charset=utf-8
Expires: -1

[
  {
    "faceId": "6a9a69d6-3d41-40ca-a2d4-7e23e06bdd81",
    "candidates": [
      {
        "personId": "bd0eaec2-124c-4a23-b0a7-56661ea5714d",
        "confidence": 1.0
      }
    ]
  }
]

Và kết quả trả về thật kì diệu. 2 ông này chính là 1, và personID chính là ông ThuanSoldier đã tạo ở trên.

Như vậy tôi đã hướng dẫn các bạn step-by-step để có thể vọc được Face Api của Cognitive.

Các ứng dụng Web, Mobile, … đều có thể dùng ông này.

Nào cùng thực hành thôi các bạn. Enjoy  !!!

Trần Hoàng Giang

Anh Trần Hoàng Giang là chuyên gia với hơn 6 năm kinh nghiệm trong lĩnh vực Mobility. Anh Giang từng là kiến trúc sư giải pháp cho các giải pháp Mobility cho tổ chức chính phủ tại Singapore, đặc biệt cho 1 trong những hãng chế tạo máy bay lớn nhất thế giới. Anh Giang hiện đang công tác tại FPT Software, chịu trách nhiệm chính trong việc tư vấn về cái giải pháp Enterprise Mobility. Đến với AzureVN.NET, anh Giang mong muốn được chia sẻ về Microsoft Azure Mobility, Cognitive Service

giangth has 9 posts and counting.See all posts by giangth

2 thoughts on “Nhận diện khuôn mặt với Microsoft Cognitive Face Recognition API

  • 23/05/2017 at 7:55 pm
    Permalink

    AD cho e hỏi thuật toán nhận diện khuôn mặt này của Microsoft dựa trên phương pháp nhận diện khuôn mặt nào ạ?
    Như HOG, PCA… chẳng hạn ạ.

    Reply
  • 15/08/2017 at 10:12 am
    Permalink

    Bạn ơi, bạn có video hướng dẫn không cho mình xem với. Từ bước 3 trở đi mình không biết bắt đầu như thế nào. Cảm ơn bạn

    Reply

Leave a Reply

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