[C#] Nhận diện khuôn mặt – face recognition

Nhận diện khuôn mặt là từ ảnh khuôn mặt đã crop trả về kết quả là người nào. Nhận diện khuôn mặt gồm rút trích ra những đặc trưng của người nào đó như mắt, mũi, miệng, đường nét khuôn mặt. Kết quả trả về là nhãn giống như phân lớp và kèm theo giá trị confident. Giá trị confident càng thấp là càng chính xác.

Có nhiều thuật toán nhận diện như Eigen, Fisher, LBPH. Bài viết này giới thiệu 1 chương trình sử dụng thuật toán Eigen. Chương trình viết bằng C# có ưu điểm là viết code dễ dàng, nhanh chóng nhưng bù lại tốc độ chậm.

Chương trình viết bằng C#, sử dụng thư viện EmguCV. Giao diện của chương trình

Nhận diện khuôn mặt - face recognition

Các bước sử dụng:
– Click vào nút “1. Detect and recognize” để chương trình bắt đầu capture webcam và detect khuôn mặt
– Gõ tên người đang được nhận diện và ấn nút “2. Add face”
– Khi chương trình nhận diện được khuôn mặt thì chương trình sẽ hiện ra tên như trong ảnh

Giải thích thuật toán

  1. Đầu tiên tìm vị trí khuôn mặt trong ảnh bằng haar cascade
  2. Gán nhãn cho khuôn mặt rồi training
  3. Sau khi training thì tìm vị trí khuôn mặt rồi nhận diện

Download

Nguồn

Source code

Chương trình demo

Ngoài ra còn 1 chương trình khác sử dụng cả 3 thuật toán nhận diện, bạn có thể xem nó ở đây:
http://www.codeproject.com/Articles/261550/EMGU-Multiple-Face-Recognition-using-PCA-and-Paral

39 thoughts on “[C#] Nhận diện khuôn mặt – face recognition

  1. Hên quá, tìm tìm trên mạng ra được cái blog của anh.
    Em là người hỏi anh vụ nhận diện hình ảnh mấy bữa nay à.

    Cảm ơn anh nhiều vì những bài viết bổ ích.

  2. A ơi cho e hỏi chút.emguCV có áp dụng được cho nhận dạng vân tay không ạ,và nếu như sử dụng EmguCV thì e có thể áp dụng thuật toán trên cho nhận dạng vân tay được không ạ

  3. A ơi cho e hỏi emguCV cũng áp dụng cho nhận dạng vân tay được phải không ạ,và nếu áp dụng được thì sử dụng thuật toán như nhận diện khuôn mặt được không ạ

    1. EmguCV chẳng qua là cross-platform của opencv thôi, tức là chức năng giống hệt nhau, chỉ khác là emguCV hỗ trợ .NET. Cho nên những gì openCV làm được thì emguCV cũng làm được. Do đó emgucv nhận dạng được vân tay và khuôn mặt đều được hết

    1. đúng rồi, mình lấy từ đó ra, mình có ghi rõ nguồn mà

    2. Chào bạn vohungvi cái link code project là nó xử dụng cùng 1 lúc 3 giải thuật để nhận dạng khuôn mặt hả bạn

    3. Họ có viết code cho 3 giải thuật, còn mỗi lần xử lý chỉ sử dụng 1 giải thuật thôi

  4. Bạn Vohungvi thân mếm,
    Hiển tại mình đang làm để tài ve nhận diện khuôn mặt người (Face Recognition), tuy nhiên, mình không thể tài nào huấn luyện nó được. Mình gửi code được viết trên Matlab để bạn xem giúp mình với.
    Bạn có đề tài nào liên quan đến FR không cho mình xin.
    Hãy để số điện thoại, tôi sẽ gọi điện cho bạn. Mong sớm nhận được hồi âm của bạn.

    1. mình không biết về Matlab nên không hiểu code ở trên. Trong bài có link chương trình demo, bạn download về chạy thử xem

    2. bạn ơi cho mình hỏi sao mình chạy demo của bạn bằng visua studio lại k đc vậy

    1. Mình mới update lại code, các bạn checkout code về thử xem

  5. Tôi muốn bạn hướng dẫn hướng nhận dạng khuôn mặt trong việc điểm danh. Hôm trước tôi đã kết bạn trong Skype nhưng không thấy bạn trả lời. Bạn có thể cho tôi xin số điện thoại để hẹn gặp trao đổi được không (Mail: trhai2005@gmail.com). Cảm ơn

    1. LBP cascade chỉ dùng để phát hiện, còn Eigen, Fisher và LBPH dùng để nhận diện. Bạn có nhầm khái niệm không?

    1. Bạn chụp hình lỗi lên đây xem thử, nhớ chụp fullscreen

    1. phương pháp truyền thống thôi, bài này là dạng cơ bản nhất

  6. a ơi a có list nào trên youtobe hướng dẫn chi tiết hơn k ạ, nếu chưa có mong a có thể quay video lại mọi cùng học tập ạ- e cũng đang học về labview ở trường muốn học các project có tính ứng dụng và phát triển hơn e cảm ơn a nhiều ạ

    1. ok bạn, mình cũng đang định quay video youtube, nhưng về labview chắc là mình không làm được vì không phải mảng của mình rồi

    1. sửa đường dẫn lại đừng có ký tự unicode là được

Leave a Reply