[Face Recognize] Thử làm hệ thống chấm công bằng nhận dạng khuôn mặt

Hi xin chào các bạn, rất vui lại được gặp lại các bạn tại Mì AI Blog. Vậy là sau 02 bài đầu trong lĩnh vực Computer Vision, chúng ta đã cùng nhau tìm hiểu về Yolo về cách train Yolo để nhận dạng các đối tượng đặc thù theo nhu cầu.Hôm nay, để tiếp nối chủ đề về Computer Vision mình sẽ cùng các bạn ăn bát mì ăn liền về nhận dạng khuôn mặt nhá. Chúng ta sẽ làm ở mức đơn giản, mì ăn liền cho đúng vơi tôn chỉ của Mì AI nhé.

Công nghệ chúng ta sẽ sử dụng gồm có:

  • Phát hiện khuôn mặt – face detection bằng haarcascade detector.
  • Nhận diện khuôn mặt bằng LBPH Face Recognizer. Viết đầy đủ thì LBPH là Local Binary Patterns Histogram.

Ở đây các bạn cần làm rõ 2 việc riêng biệt nhé:

  • Phát hiện khuôn mặt là chỉ đơn thuần phát hiện xem trong ảnh có bao nhiêu khuôn mặt hoặc không có khuôn mặt nào.
  • Nhận diện khuôn mặt là biết được mặt đó là của ai, mã nhân viên nào.

Để cho bài toán có tính thực tế, hấp dẫn, chúng ta sẽ làm hệ thống chấm công bằng khuôn mặt thay cho chấm công bằng vân tay như truyền thông nhé. Thôi dài dòng đủ rồi, cùng bắt tay vào làm việc nhé!

Tổng quan các bước cần làm

  • Bước 1.Chuẩn bị một cơ sở dữ liệu để lưu trữ thông tin chấm công của mỗi người như: tên, tuổi, chức danh… và các thông tin khác tùy các bạn, mình ví dụ nên chỉ làm đơn giản nhé.
  • Bước 2. Thực hiện chụp ảnh cho cán bộ nhân viên mới.
  • Bước 3. Train model để nhận diện được cán bộ nhân viên mới từ ảnh vừa chụp
  • Bước 4. Tiến hành nhận dạng khuôn mặt trong hình để chấm công.

Chúng ta hãy cùng bắt tay vào làm nào!

Bước 1. Chuẩn bị cơ sở dữ liệu và mã nguồn

Về vấn đề này các bạn có thể dùng bất cứ CSDL nào bạn có như: mysql, MS SQL, Oracle,…. Ở đây để tiện triển khai trên các micro device nên mình dùng sqllite cho tiện. Trong quá trình chạy, các bạn sẽ thấy trong folder xuất hiện 1 file FaceBaseNew.db là file sqllite nhé.

Các bạn hãy tạo thư mục MiAI_Face_Recognize, sau đó chuyển vào thư mục đó bằng lệnh cd nhé. Bây giờ các bạn có thể vào github của mình tại https://github.com/thangnch/face_recognizer để lấy source về thủ công hoặc gõ lệnh sau:

git clone https://github.com/thangnch/face_recognizerCode language: PHP (php)

Sau đó chờ 1 lúc và nếu thành công thì các bạn sẽ có 1 folder face_recognizer trong thư mục hiện tại. Tiếp tục chuyển vào thư mục đó bằng lệnh cd face_recognizer nhe.

Bước 2. Thực hiện chụp ảnh cho người mới

Bây giờ các bạn mở file NewUser.py đọc qua sẽ thấy trong file này mình sẽ làm các việc:

  • Tạo CSDL sqllite tại thư mục hiện tại
  • Yêu cầu người dùng nhập và ID và Name, sau đó lưu vào DB
  • Yêu cầu ng dùng đưa mặt vào camera, chụp khoảng 100 ảnh của người dùng và tiến hành lưu trữ tại thư mục dataSet với cấu trúc User.<mã nhân viên>.<số thứ tự>.jpg

Để chạy file này các bạn gõ lệnh:

python NewUser.pyCode language: CSS (css)

Sau đó nhập ID, Name và lắc lư cái đầu trên camera cho máy chụp ảnh nhé. Như ở cơ quan thì đây là đăng ký khuôn mặt để chấm công đó.

Bước 3. Thực hiện train model để học được các khuôn mặt đã chụp

Bây giờ các bạn hãy mở tiếp file TrainModel.py. File này làm các nhiệm vụ:

  • Đọc thông tin trong CSDL về danh sách CBNV hiện tại
  • Đọc dữ liệu ảnh từ thư mục dataset
  • Train model để nhận dạng khuôn mặt và gán vào các nhân viên.

Các bạn đọc code chi tiết trong file TrainModel.py nhé, còn để chạy file này, các bạn lại gõ:

python TrainModel.pyCode language: CSS (css)

Và đợi cho đến khi màn hình xuất hiện chữ “Trained” là xong!

Bước 4. Kiểm thử hệ thống

Sau khi đăng ký xong, train xong giờ là lúc tận hưởng thành quả nào. Các bạn mở tiếp file FaceRecognizer.py. File này làm các nhiệm vụ chính:

  • Load dữ liệu nhân viên từ CSDL
  • Load model phát hiện khuôn mặt và nhận diện khuôn mặt đã train ở bước 3
  • Đọc ảnh từ camera và hiển thị tên người có mặt trong camera.

Các bạn chạy lệnh:

python FaceRecognizer.py Code language: CSS (css)

Nếu thành công, các bạn sẽ thấy giống như ảnh bên dưới.

nhận dạng khuôn mặt

Như vậy chúng ta đã làm được một hệ thống chấm công đơn giản bằng khuôn mặt và có thể áp dụng thử nghiệm ở cơ quan, công sở rồi.

Chúc các bạn thành công, nếu vướng gì thì cứ comment chúng ta cùng trao đổi nhé!

Fanpage: http://facebook.com/miaiblog
Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup
Website: https://miai.vn
Youtube: http://bit.ly/miaiyoutube

Related Post

39 Replies to “[Face Recognize] Thử làm hệ thống chấm công bằng nhận dạng khuôn mặt”

      1. mình chạy được nhưng lúc nhận được lúc ko là sao nhỉ!?
        dist thường là >25%. không biết có cách nào khắc phục không

  1. Cảm ơn a đã chia sẽ rất hy vọng được a dạy thêm nhiều bài nữa! Có thể làm demo scan CMND ko a?

  2. Chào Anh,
    Em chưa thể thực hiện setup được, anh có thể quay màn hình cách thực hiện được không ạ

  3. anh ơi cho em hỏi tỉ lệ nhận diện khuôn mặt của em khoảng 50…60 thì là do ảnh chụp hay sao

    1. Em nâng lên bản dùng MT CNN và Facenet nhé: https://miai.vn/2019/09/11/face-recog-2-0-nhan-dien-khuon-mat-trong-video-bang-mtcnn-va-facenet/

      Cần trao đổi gì em lên group cho tiện: Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup

      Cảm ơn em!

      #MìAI
      Fanpage: http://facebook.com/miaiblog
      Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup
      Website: https://miai.vn
      Youtube: http://bit.ly/miaiyoutube

  4. chào anh, cảm ơn anh nhiều nha, bài này rất hữu ích :3, mà anh cho em hỏi bh em ko muốn xài cam usb mà xài luôn camere của con rasp pi thì chỉnh chỗ nào lại ạ @@ , em cảm ơn

    1. á em chưa enable cam, em làm đc rồi, mà sao train hơi khó nhận mặt mình :< thử chục lần lâu lâu nó nhá lên cái xong nó lại k nhận diện đc nữa
      :<

      1. Chào em. Em chuyển lên bản 2.0 cho chính xác nhé (https://miai.vn/2019/09/11/face-recog-2-0-nhan-dien-khuon-mat-trong-video-bang-mtcnn-va-facenet/)

        Có gì cần trao đổi em cứ comment trên group ấy, tiện hơn. Link Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup

        #MìAI
        Fanpage: http://facebook.com/miaiblog
        Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup
        Website: https://miai.vn
        Youtube: http://bit.ly/miaiyoutube

  5. Traceback (most recent call last):
    File “TrainModel.py”, line 6, in
    recognizer = cv2.face.LBPHFaceRecognizer_create()
    AttributeError: module ‘cv2.cv2’ has no attribute ‘face’
    lỗi gì đây anh

  6. E chạy được rồi. A Thắng cho e hỏi, e muốn build chạy thử trên web local, thì deploy thế nào ạ. E cảm ơn

  7. Cảm ơn a đã chia sẻ. E chạy được rồi. A Thắng cho e hỏi, e muốn build chạy thử trên web local, thì deploy thế nào ạ. E cảm ơn

  8. E đã làm theo hết các bước nhưng đến khi chạy file FaceRecognizer.py để nhận diện thì nó vẫn hiện là UnKnow . không biết là đã bị lỗi hay thiếu bước nào.

  9. em da cai dat open cv roi nhung van bao loi ạ
    ModuleNotFoundError: No module named ‘cv2’
    anh giup e voi

  10. có cách nào điểm danh xong nó tích vào 1 ứng dụng chứa danh sách mọi người trong lớp không anh

Leave a Reply

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