Nhận diện và nhận dạng khuôn mặt là một trong những lĩnh vực của thị giác máy tính nơi nghiên cứu tích cực diễn ra
Các ứng dụng của Nhận dạng khuôn mặt bao gồm Mở khóa bằng khuôn mặt, Bảo mật và Quốc phòng, v.v. Các bác sĩ và quan chức y tế sử dụng nhận dạng khuôn mặt để truy cập hồ sơ y tế và lịch sử của bệnh nhân và chẩn đoán bệnh tốt hơn
Giới thiệu về nhận dạng khuôn mặt Python
Trong dự án python này, chúng ta sẽ xây dựng một mô hình máy học để nhận dạng người từ một hình ảnh. Chúng tôi sử dụng API face_recognition và OpenCV trong dự án của mình
Công cụ và Thư viện
- Trăn – 3. x
- cv2 – 4. 5. 2
- gọn gàng – 1. 20. 3
- face_recognition – 1. 3. 0
Để cài đặt các gói trên, sử dụng lệnh sau
pip install numpy opencv-python
Để cài đặt face_recognition, trước tiên hãy cài đặt gói dlib
pip install dlib
Bây giờ, hãy cài đặt mô-đun face_recognition bằng lệnh bên dưới
pip install face_recognition
Tải xuống mã Python nhận dạng khuôn mặt
Vui lòng tải xuống mã nguồn của dự án nhận dạng khuôn mặt python. Mã dự án nhận dạng khuôn mặt
Bộ dữ liệu dự án
Chúng tôi có thể thực hiện dự án nhận dạng khuôn mặt này bằng bộ dữ liệu của riêng mình. Đối với dự án này, hãy lấy dàn diễn viên của sê-ri web nổi tiếng của Mỹ “Friends” làm bộ dữ liệu. Bộ dữ liệu được bao gồm với mã dự án nhận dạng khuôn mặt mà bạn đã tải xuống ở phần trước
Các bước phát triển mô hình nhận dạng khuôn mặt
Trước khi tiếp tục, hãy tìm hiểu nhận dạng và phát hiện khuôn mặt là gì
Nhận dạng khuôn mặt là quá trình xác định hoặc xác minh khuôn mặt của một người từ ảnh và khung hình video
Nhận diện khuôn mặt được định nghĩa là quá trình định vị và trích xuất khuôn mặt [vị trí và kích thước] trong một hình ảnh để thuật toán nhận diện khuôn mặt sử dụng
Phương pháp nhận dạng khuôn mặt được sử dụng để định vị các đặc điểm trong hình ảnh được chỉ định duy nhất. Hình ảnh khuôn mặt đã được xóa, cắt, thu nhỏ và chuyển đổi thành thang độ xám trong hầu hết các trường hợp. Nhận dạng khuôn mặt bao gồm 3 bước. nhận diện khuôn mặt, trích xuất tính năng, nhận dạng khuôn mặt
OpenCV là một thư viện mã nguồn mở được viết bằng C++. Nó chứa việc triển khai các thuật toán khác nhau và mạng lưới thần kinh sâu được sử dụng cho các tác vụ thị giác máy tính
1. Chuẩn bị tập dữ liệu
Tạo 2 thư mục, huấn luyện và kiểm tra. Chọn một hình ảnh cho mỗi diễn viên từ internet và tải nó xuống thư mục “tàu” của chúng tôi. Đảm bảo rằng các hình ảnh bạn đã chọn hiển thị đủ các đặc điểm của khuôn mặt để bộ phân loại
Để kiểm tra mô hình, hãy chụp một bức ảnh có chứa tất cả các diễn viên và đặt nó vào thư mục “thử nghiệm” của chúng tôi
Để bạn thoải mái, chúng tôi đã thêm dữ liệu đào tạo và thử nghiệm với mã dự án
2. Đào tạo người mẫu
Đầu tiên nhập các mô-đun cần thiết
import face_recognition as fr import cv2 import numpy as np import os
Thư viện face_recognition chứa việc triển khai các tiện ích khác nhau trợ giúp trong quá trình nhận dạng khuôn mặt
Bây giờ, hãy tạo 2 danh sách lưu trữ tên của hình ảnh [người] và mã hóa khuôn mặt tương ứng của họ
path = "./train/" known_names = [] known_name_encodings = [] images = os.listdir[path]
Mã hóa khuôn mặt là một vectơ các giá trị đại diện cho các phép đo quan trọng giữa các đặc điểm phân biệt của khuôn mặt như khoảng cách giữa hai mắt, chiều rộng của trán, v.v.
Chúng tôi lặp qua từng hình ảnh trong thư mục xe lửa của mình, trích xuất tên của người trong ảnh, tính toán vectơ mã hóa khuôn mặt của nó và lưu trữ thông tin trong danh sách tương ứng
for _ in images: image = fr.load_image_file[path + _] image_path = path + _ encoding = fr.face_encodings[image][0] known_name_encodings.append[encoding] known_names.append[os.path.splitext[os.path.basename[image_path]][0].capitalize[]]
3. Kiểm tra mô hình trên tập dữ liệu thử nghiệm
Như đã đề cập ở trên, tập dữ liệu thử nghiệm của chúng tôi chỉ chứa 1 hình ảnh với tất cả những người trong đó
Đọc ảnh thử nghiệm bằng phương thức cv2 imread[]
test_image = "./test/test.jpg" image = cv2.imread[test_image]
Thư viện face_recognition cung cấp một phương thức hữu ích gọi là face_locations[] để xác định tọa độ [trái, dưới, phải, trên] của mọi khuôn mặt được phát hiện trong ảnh. Sử dụng các giá trị vị trí đó, chúng tôi có thể dễ dàng tìm thấy mã hóa khuôn mặt
face_locations = fr.face_locations[image] face_encodings = fr.face_encodings[image, face_locations]
Chúng tôi lặp qua từng vị trí khuôn mặt và mã hóa của nó được tìm thấy trong hình ảnh. Sau đó, chúng tôi so sánh mã hóa này với mã hóa của các khuôn mặt từ bộ dữ liệu “đào tạo”
Sau đó tính toán khoảng cách khuôn mặt nghĩa là chúng tôi tính toán sự giống nhau giữa mã hóa của hình ảnh thử nghiệm và mã hóa của hình ảnh đoàn tàu. Bây giờ, chúng tôi chọn khoảng cách có giá trị tối thiểu từ nó để chỉ ra rằng khuôn mặt này của hình ảnh thử nghiệm là một trong những người từ tập dữ liệu huấn luyện
Bây giờ, hãy vẽ một hình chữ nhật có tọa độ vị trí khuôn mặt bằng các phương thức từ mô-đun cv2
________số 8Hiển thị hình ảnh bằng phương thức imshow[] của mô-đun cv2
cv2.imshow["Result", image]
Lưu hình ảnh vào thư mục làm việc hiện tại của chúng tôi bằng phương thức imwrite[]
pip install dlib0
Giải phóng các tài nguyên chưa được giải phóng [nếu có]
pip install dlib1
Đầu ra nhận dạng khuôn mặt Python
Hãy xem đầu ra của mô hình
Tóm lược
Trong dự án máy học này, chúng tôi đã phát triển mô hình nhận dạng khuôn mặt trong python và opencv bằng tập dữ liệu tùy chỉnh của riêng mình