I. Introduction

Nhận dạng mặt người (Face recognition) là một lĩnh vực nghiên cứu của ngành Computer Vision, và cũng được xem là một lĩnh vực nghiên cứu của ngành Biometrics (tương tự như nhận dạng vân tay – Fingerprint recognition, hay nhận dạng mống mắt – Iris recognition). Xét về nguyên tắc chung, nhận dạng mặt có sự tương đồng rất lớn với nhận dạng vân tay và nhận dạng mống mắt, tuy nhiên sự khác biệt nằm ở bước trích chọn đặt trưng (feature extraction) của mỗi lĩnh vực.

Trong khi nhận dạng vân tay và mống mắt đã đạt tới độ chín, tức là có thể áp dụng trên thực tế một cách rộng rãi thì nhận dạng mặt người vẫn còn nhiều thách thức và vẫn là một lĩnh vực nghiên cứu thú vị với nhiều người. So với nhận dạng vân tay và mống mắt, nhận dạng mặt có nguồn dữ liệu phong phú hơn (bạn có thể nhìn thấy mặt người ở bất cứ tấm ảnh, video clip nào liên quan tới con người trên mạng) và ít đòi hỏi sự tương tác có kiểm soát hơn (để thực hiện nhận dạng vân tay hay mống mắt, dữ liệu input lấy từ con người đòi hỏi có sự hợp tác trong môi trường có kiểm soát).

Hiện nay các phương pháp nhận dạng mặt được chia thành nhiều hướng theo các tiêu chí khác nhau: nhận dạng với dữ liệu đầu vào là ảnh tĩnh 2D (still image based FR) là phổ biến nhất, tuy nhiên tương lai có lẽ sẽ là 3D FR (vì việc bố trí nhiều camera 2D sẽ cho dữ liệu 3D và đem lại kết quả tốt hơn, đáng tin cậy hơn), cũng có thể chia thành 2 hướng là: làm với dữ liệu ảnh và làm với dữ liệu video.

Trên thực tế người ta hay chia các phương pháp nhận dạng mặt ra làm 3 loại: phương pháp tiếp cận toàn cục (global, như Eigenfaces-PCA, Fisherfaces-LDA), phương pháp tiếp cận dựa trên các đặc điểm cục bộ (local feature based, như LBP, Gabor wavelets) và phương pháp lai (hybrid, là sự kết hợp của hai phương pháp toàn cục và local feature). Phương pháp dựa trên các đặc điểm cục bộ đã được chứng minh là ưu việt hơn khi làm việc trong các điều kiện không có kiểm soát và có thể nói rằng lịch sử phát triển của nhận dạng mặt (A never ending story) là sự phát triển của các phương pháp trích chọn đặc trưng (feature extractrion methods) được sử dụng trong các hệ thống dựa trên feature based.

Các ứng dụng cụ thể của nhận dạng mặt dựa trên 2 mô hình nhận dạng: identification (xác định danh tính, bài toán 1-N), và verification (xác thực danh tính, bài toán 1-1). Trong bài toán identification, ta cần xác định danh tính của ảnh kiểm tra, còn trong bài toán verification ta cần xác định 2 ảnh có cùng thuộc về một người hay không.

II. Phần mềm nhận dạng khuôn mặt đơn giản với Python và OpenCV

1. Cài đặt

Ở bài viết này mình sẽ sử dụng phương pháp nhận diện khuôn mặt đơn giản Haar-cascade Detection .
Đầu tiên chúng ta cần cài đặt Python 2.7 và OpenCV

uc?id=1dnrETW8vGiYZpi7Jn_u3IVrdPqfnf0NA&export=download

uc?id=1i4SB8lO7FouWn7AT8aJbGeWORDk3uZoH&export=download

  • Sau khi cài đặt Python 2.7 và OpenCV ta copy file cv2.pyd từ thư mục face detectionopencvbuildpython2.7
  • Copy vào thư mục Python27Libsite-packages
  • Cài đặt numpy
    Vào thư mục Python27Scripts chạy lệnh

Chúng ta sẽ sử dụng haarcascade_frontalface_default.xml từ opencvsourcesdatahaarcascades
Copy vào thư mục của dự án

  • Cài đặt sqlite

uc?id=1yGSgF0gomLJphyli0g2YMrrsAd-8L3WA&export=download

Tạo CSDL FaceBase với bảng People
uc?id=1H8c0h20Nxva1ctMAYEqNC67Cr-jx1Sa1&export=download

OK chúng ta đã sẵn sàng .

2. Viết mã nguồn

Ở bài biết này mình sẽ tạo phần mềm nhận diện khuôn mặt bằng 3 bước đơn giản :

  • Bước 1 mình sẽ tạo dataSet dùng để nhận diện
  • Bước 2 mình sẽ tạo dataTraning sử dụng để traning dữ liệu
  • Bước 3 mình sẽ tạo lớp detector dể nhận diện
Kết nối sqlite để tạo/cập nhật record

Mã nguồn dùng camera để chụp hình dữ liệu

Ở đây mình giới hạn ở 20 tấm , dữ liệu ảnh càng phong phú thì độ chính xác càng cao

uc?id=1WY7FnG7ZjMdz1tbrEVQY8xJN4ggRa8FC&export=download

uc?id=1IVtz6vENMe4Lu_xNCKylDOvMCTgBdTx9&export=download

Dữ liệu lưu vào sqlite

uc?id=1s1Qd52YPdwAzP61D6k4p6X7fx5YbD-We&export=download

dataSetCreator đầy đủ :

3.Tạo lớp traning dữ liệu

Load đường dẫn và file trong thư mục dataSet

tách ID từ tên file ảnh

Convert ảnh và add vào mảng faces cùng với ID
đối với bàn toán classfication ở đây thì Feature là ảnh còn Label chính là id người dùng

Traning và lưu vào file

uc?id=1XoRkRJ365UIOURJFPbxCxEsCHY_H_GiP&export=download

Traning code đầy đủ :

4.Lớp detector nhận diện khuôn mặt đã traning

Lấy thông tin user từ Database

Sử dụng camera để nhận diện :

Hiển thị thông tin User bằng text

Tèn tén ten .

uc?id=19_w6XAbTBdxbkqzM2_PJZo_mqr42KK67&export=download

Full code detector

Hết !
Cảm ơn các bạn đã quan tâm và theo dõi.

Leave a Reply

avatar
  Subscribe  
Notify of