Haar feature nhận diện khuôn mặt như thế nào
Trong một thử nghiệm vào năm 2017, một hệ thống camera giám sát ở Quế Dương, Trung Quốc chỉ mất 7 phút để xác định được vị trí một phóng viên dựa vào ảnh khuôn mặt của họ. Đây là kết quả của một mạng lưới camera quy mô lớn cùng với công nghệ nhận dạng khuôn mặt (Face Recognition). Nếu để ý một chút thì chúng ta sẽ thấy Face Recognition ngày càng được sử dụng rộng rãi trong đời sống hàng ngày như tự động tag ảnh trên facebook, mở điện thoại bằng FaceID trên Iphone, …
Show Hãy cùng mình tìm hiểu xem công nghệ này là gì, hoạt động như thế nào và thực hành với một ví dụ nho nhỏ ở cuối bài nha. Face recognition hoạt động như thế nàoNhận dạng khuôn mặt là công nghệ xác định danh tính của một cá nhân dựa trên khuôn mặt của họ. Một hệ thống hay phần mềm nhận dạng khuôn mặt thường bao gồm 3 bước chính:
Xác định vị trí khuôn mặt (Face Detection)Bước 1: Xác định vị trí khuôn mặtĐây là bước xác định khuôn mặt người từ những bức ảnh hoặc băng hình (images or videos). Những khuôn mặt này sẽ được “cắt” ra để dùng cho bước tiếp theo. Đã có một vài bài viết liên quan đến Face Detection nên mình không đi sâu vào nữa, các bạn có thể tham khảo thêm những bài sau:
Ở bước này, chúng ta sẽ cần một mô hình để trích xuất đặc trưng từ ảnh khuôn mặt (Feature Extractor). Những đặc trưng được trích xuất từ mô hình này còn được gọi là Face Embeddings hay Face Encodings, chúng ta có thể hiểu là cách biểu diễn khác của ảnh khuôn mặt giúp cho việc nhận dạng khuôn mặt dễ dàng hơn (thay vì những điểm ảnh đơn thuần). Face Embeddings có một đặc tính rất thú vị: những khuôn mặt giống nhau sẽ có Face Embeddings “gần” nhau hơn (dựa trên khoảng cách Euclid). Những khuôn mặt giống nhau sẽ có đặc trưng giống nhauĐiều này đạt được khi mô hình trích xuất đặc trưng được thiết kế riêng cho việc phân biệt / nhận dạng khuôn mặt. Bài hôm này không đi sâu vào cách xây dựng dạng mô hình này, các bạn có thể tìm hiểu thêm về mạng Siamese, mô hình FaceNet hay mô hình dlib ResNet. Nhận dạng khuôn mặt (Recognition)Bước 3: Phân loại / nhận dạng khuôn mặt dựa trên khoảng cách giữa Face EmbeddingsVới đặc tính của Face Embeddings đề cập ở trên, một phương pháp đơn giản để nhận dạng khuôn mặt là dựa trên khoảng cách giữa các Face Embeddings với nhau. Hãy tưởng tượng mỗi khuôn mặt có thể được biểu diễn bằng một điểm toạ độ trên trục xy, nếu khoảng cách giữa 2 điểm càng gần nhau, khả năng 2 khuôn mặt thuộc về cùng 1 người càng cao. Ngược lại, nếu khoảng cách này quá lớn (vượt qua một ngưỡng nhất định), chúng ta có thể “tự tin” rằng 2 khuôn mặt thuộc về 2 người khác nhau. Thực hànhMục tiêu của bài thực hành hôm nay là viết một đoạn code có khả năng xác định được tên cầu thủ bóng đá. Chúng ta sẽ dùng thư viện face_recognition với các mô hình sau:
Cấu trúc code
Để áp dụng nhận dạng khuôn mặt, chúng ta có thể dùng đoạn code sau
Các bạn hãy thử áp dụng với ảnh trong thư mục Nội dung code
Một số lưu ý với hàm
Mã nguồn (source code)PandaML Blog GitHub Tạm kếtBài hôm nay giới thiệu đến các bạn về cách xây dựng một phần mềm nhận dạng khuôn mặt dựa trên thư viện Còn bạn dùng mô hình nào? Bạn có kinh nghiệm gì thú vị với Face Recognition thì chia sẻ để mọi người cùng tham khảo với nhé. Tham khảo
|