- Điều kiện tiên quyết
- Cách nhận dạng khuôn mặt hoạt động với OpenCV
- Nhận diện khuôn mặt bằng cách sử dụng Bộ phân loại tầng trong OpenCV
Nhận dạng khuôn mặt đang ngày càng trở nên phổ biến và hầu hết chúng ta đều đang sử dụng nó mà không hề nhận ra. Có thể là một đề xuất Thẻ Facebook đơn giản hoặc Bộ lọc Snapchat hoặc giám sát an ninh sân bay tiên tiến, Nhận dạng khuôn mặt đã phát huy tác dụng kỳ diệu trong đó. Trung Quốc đã bắt đầu sử dụng Nhận dạng khuôn mặt trong các trường học để theo dõi việc đi học và hành vi của học sinh. Các Cửa hàng Bán lẻ đã bắt đầu sử dụng Nhận dạng khuôn mặt để phân loại khách hàng của họ và cô lập những người có tiền sử gian lận. Với rất nhiều thay đổi đang được thực hiện, chắc chắn rằng công nghệ này sẽ được nhìn thấy ở khắp mọi nơi trong tương lai gần.
Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách chúng ta có thể xây dựng hệ thống Nhận dạng khuôn mặt của riêng mình bằng cách sử dụng Thư viện OpenCV trên Raspberry Pi. Ưu điểm của việc cài đặt hệ thống này trên Raspberry Pi di động là bạn có thể cài đặt nó ở bất cứ đâu để làm hệ thống giám sát. Giống như tất cả các hệ thống Nhận dạng khuôn mặt, hướng dẫn này sẽ liên quan đến hai tập lệnh python, một là chương trình Trainer sẽ phân tích một bộ ảnh của một người cụ thể và tạo tập dữ liệu (Tệp YML). Chương trình thứ hai là chương trình Recognizerphát hiện một khuôn mặt và sau đó sử dụng tệp YML này để nhận dạng khuôn mặt và đề cập đến tên người đó. Cả hai chương trình mà chúng ta sẽ thảo luận ở đây đều dành cho Raspberry Pi (Linux), nhưng cũng sẽ hoạt động trên Máy tính Windows với những thay đổi rất nhỏ. Chúng tôi đã có loạt bài Hướng dẫn cho người mới bắt đầu làm quen với OpenCV, bạn có thể xem tất cả các bài hướng dẫn OpenCV tại đây.
Điều kiện tiên quyết
Như đã nói trước đó, chúng tôi sẽ sử dụng Thư viện OpenCV để phát hiện và nhận dạng khuôn mặt. Vì vậy, hãy đảm bảo rằng bạn đã cài đặt Thư viện OpenCV trên Pi trước khi tiếp tục với hướng dẫn này. Ngoài ra, cấp nguồn cho Pi của bạn bằng bộ chuyển đổi 2A và kết nối nó với màn hình hiển thị qua cáp HDMI vì chúng tôi sẽ không thể nhận đầu ra video thông qua SSH.
Ngoài ra, tôi sẽ không giải thích cách hoạt động chính xác của OpenCV, nếu bạn quan tâm đến việc tìm hiểu Xử lý hình ảnh thì hãy xem hướng dẫn xử lý hình ảnh cơ bản và nâng cao về OpenCV này. Bạn cũng có thể tìm hiểu về đường viền, Phát hiện khối, v.v. trong hướng dẫn Phân đoạn Hình ảnh này.
Cách nhận dạng khuôn mặt hoạt động với OpenCV
Trước khi bắt đầu, điều quan trọng là phải hiểu rằng Nhận diện khuôn mặt và Nhận dạng khuôn mặt là hai thứ khác nhau. Trong tính năng Nhận diện khuôn mặt, chỉ có khuôn mặt của một người được phát hiện, phần mềm sẽ không có Ý tưởng người đó là ai. Trong Nhận dạng khuôn mặt, phần mềm sẽ không chỉ phát hiện khuôn mặt mà còn nhận dạng người. Bây giờ, rõ ràng là chúng ta cần thực hiện Nhận diện khuôn mặt trước khi thực hiện Nhận dạng khuôn mặt. Tôi sẽ không thể giải thích chính xác cách OpenCV phát hiện một khuôn mặt hoặc bất kỳ đối tượng nào khác cho vấn đề đó. Vì vậy, nếu bạn tò mò muốn biết, bạn có thể làm theo hướng dẫn Phát hiện Đối tượng này.
Nguồn cấp dữ liệu video từ webcam chỉ là một chuỗi dài các hình ảnh tĩnh được cập nhật lần lượt. Và mỗi hình ảnh này chỉ là một tập hợp các pixel có giá trị khác nhau được ghép lại với nhau ở vị trí tương ứng của nó. Vậy làm thế nào một chương trình có thể phát hiện một khuôn mặt từ những pixel này và nhận diện thêm người trong đó? Có rất nhiều thuật toán đằng sau nó và việc cố gắng giải thích chúng nằm ngoài phạm vi của bài viết này, nhưng vì chúng tôi đang sử dụng thư viện OpenCV nên rất đơn giản để thực hiện Nhận dạng khuôn mặt mà không cần đi sâu vào các khái niệm
Nhận diện khuôn mặt bằng cách sử dụng Bộ phân loại tầng trong OpenCV
Chỉ khi chúng ta có thể phát hiện ra một khuôn mặt, chúng ta sẽ có thể nhận ra hoặc ghi nhớ nó. Để phát hiện một đối tượng chẳng hạn như khuôn mặt, OpenCV sử dụng một thứ gọi là Bộ phân loại. Các Bộ phân loại này là tập dữ liệu được đào tạo trước (Tệp XML) có thể được sử dụng để phát hiện một đối tượng cụ thể trong trường hợp của chúng ta là khuôn mặt. Bạn có thể tìm hiểu thêm về Bộ phân loại nhận diện khuôn mặt tại đây. Ngoài việc phát hiện khuôn mặt, Bộ phân loại có thể phát hiện các đối tượng khác như mũi, mắt, Biển số xe, Nụ cười, v.v. Danh sách Bộ phân loại tình huống có thể được tải xuống từ tệp ZIP bên dưới
Bộ phân loại để phát hiện đối tượng trong Python
Ngoài ra, OpenCV cũng cho phép bạn tạo Bộ phân loại của riêng mình, có thể được sử dụng để phát hiện bất kỳ đối tượng nào khác trong Hình ảnh bằng cách Đào tạo Bộ phân loại theo tầng của bạn. Trong hướng dẫn này, chúng tôi sẽ sử dụng một bộ phân loại có tên “haarcascade_frontalface_default.xml” sẽ phát hiện khuôn mặt từ vị trí phía trước. Chúng ta sẽ thấy