Căn chỉnh khuôn mặt là khá quan trọng, việc này giúp cải thiện phần nào độ chính xác khi đưa vào nhận dạng.
Trong dự án này, tôi sử dụng phương pháp căn chỉnh 2D, dựa vào các mốc trên khuôn mặt (đặc biệt là vùng mắt) để thực hiện xoay, dịch chuyển và điều chỉnh tỷ lệ của khuôn mặt về cùng một kích thước.
Cụ thể, thuật toán lấy vị trí mắt trái và mắt phải từ MTCNN, tính toán điểm giữa và tiến hành xoay khuôn mặt sao cho hai mắt cùng nằm trên hàng ngang.
Hình 27. Trước và sau khi căn chỉnh khuôn mặt 3.1.7 Trích rút đặc trưng khuôn mặt từ ảnh đầu vào:
Sau khi phát hiện và căn chỉnh khuôn mặt, hệ thống sẽ tiến hành trích rút đặc trưng khuôn mặt bằng FaceNet. Sau đó các đặc trưng này sẽ được đưa vào “không gian embeddings” để so sánh với bộ dữ liệu các đặc trưng đã có.
3.1.8 Nhận diện khuôn mặt
Trong “không gian embeddings”, các khuôn mặt ở dạng vector 128 chiều sẽ được đối chiếu với bộ dữ liệu để tìm ra khuôn mặt giống nhất và gắn nhãn cho chúng.
Trong dự án này, tôi sử dụng phép đo cosine similarity (độ tương tự cosine) để tiến hành so sánh. Ta sử dụng cosine similarity khi chỉ quan tâm đến góc giữa 2 vector mà không quan tâm đến khoảng cách giữa chúng.
Hình 28. Cosine similarity
Dựa vào cosine similarity ta có thể tính cosine distance (khoảng cách cosine) bằng công thức:
cosine_distance = 1 – cosine_similarity
Đầu vào của hàm cosine là mảng chứa vector 128 chiều của khuôn mặt trong ảnh chưa khuôn mặt cần nhận dạng mà FaceNet vừa tính toán, và bộ dữ liệu gồm các mảng chứa vector 128 chiều của các khuôn mặt đã được huấn luyện từ
trước. Cosine distance sẽ tính lần lượt khoảng cách giữa vector đầu vào với các vector trong bộ dữ liệu để tìm ra vector có giá trị thấp nhất (khoảng cách ngắn nhất), tương ứng với độ tương tự cao nhất.
3.1.9 Xác định các khuôn mặt “unknown”
Với một hệ thống nhận diện khuôn mặt, việc loại trừ các trường hợp có nhiều điểm chung trong khuôn mặt là cực kì cần thiết. Hoặc đơn giản là có một gương mặt lạ xuất hiện trong bức hình cũng bị nhận nhầm là người dùng của hệ thống. Các khuôn mặt lạ này chung quy lại là các khuôn mặt “unknown”.
Các khuôn mặt “unknown” là các khuôn mặt không có trong bộ dữ liệu được huấn luyện từ trước. Khi ảnh xuất hiện các khuôn mặt này, nếu không tiến hành xác định và loại trừ thì khả năng cao hệ thống sẽ nhận nhầm với các khuôn mặt có trong bộ dữ liệu và tiến hành nhận diện sai là rất cao.
Từ cosine distance ta có thể xác định các khuôn mặt “unknown” với một tỉ lệ nhất định dựa trên ngưỡng cho phép (threshold). Không có một quy tắc chuẩn nào cho việc lựa chọn ngưỡng trong nhận dạng khuôn mặt, mà giá trị ngưỡng này được chọn thông qua các lần thử nghiệm mang lại kết quả tốt nhất.
3.2 Kết quả thử nghiệm hệ thống3.2.1 Giao diện chương trình: 3.2.1 Giao diện chương trình:
Hình 30: File hình ảnh được tạo ra
KẾT LUẬN 1.Kết quả đạt được
Trên cơ sở nghiên cứu về bài toán phát hiện mặt người trong ảnh. Đặc biệt là mô hình nơ-ron tích chập (CNN). Chúng em đã áp dụng thành công mô hình CNN vào bài toán phát hiện mặt người trong ảnh. Tuy kết quả đạt được chưa cao, nhưng đây là bước đầu để phát triển bài toán nhận dạng mặt (face recognition) người sau này. Bên cạnh đó, trong quá trình xây dựng chương trình demo, em đã tìm hiểu về deep learning, ngôn ngữ Python, qua đó biết cách lập trình với ngôn ngữ Python và có thêm kiến thức về deep learning
Về chương trình demo, sau khi thử nghiệm với tập ảnh lớn và webcam. Chương trình đạt kết quả tốt, thời gian phát hiện nhanh đối với các ảnh mặt người chụp thẳng, chất lượng ảnh tốt (chụp bằng máy kĩ thuật số), tuy nhiên đối với các ảnh chụp quá nghiêng hay ảnh có màu sắc quá tối thì chương trình gần như không thể phát hiện được khuôn mặt trong bức ảnh đấy.
Đối với webcam, thì hiệu suất của chương trình còn tùy theo chất lượng của loại webcam được sử dụng, tuy nhiên cũng tương tự như với phát hiện khuôn mặt trong ảnh, chương trình sẽ không thể phát hiện mặt người trong điều kiện độ sáng quá yếu và góc quay nghiêng quá 200.
2.Hướng phát triển:
Có nhiều hướng phát triển cho chương trình này, có thể phát triển cả về mặt ứng dụng và mặt thuật toán. Có thể xây dựng một ứng dụng chỉ cần đến phát hiện mặt người mà không cần nhận dạng. Ví dụ như một hệ thống ghép hình, ghép khuôn mặt phát hiện được vào trong một bức ảnh khác
Ngoài ra có thể phát triển chương trình theo hướng nhận dạng khuôn mặt, xây dựng một hệ thống để học các đặc trưng của những người cần nhận dạng. Khi thực hiện, đầu tiên ta đưa qua bức ảnh qua chương trình phát hiện mặt người để phát hiện nhanh các khuôn mặt có trong ảnh, sau đấy so sách các khuôn mặt đó với các khuôn mặt mà chương trình đã được “học” từ trước, so sánh các đặc trưng của hai khuôn mặt, nếu trùng thì đưa ra thông tin về khuôn mặt được nhận dạng.
DANH MỤC TÀI LIỆU THAM KHẢO
[1] G. Yang and T. S. Huang, “Human Face Detection in Complex Background”, Pattern Recognition, vol. 27, no. 1, pp. 53-63, 1994.
[2] A. Lanitis, C.J. Taylor, and T.F. Cootes, “An Automatic Face Identification System Using lexible Appearance Models”, Image and Vision Computing, vol. 13, no. 5, pp. 393-401, 1995.
[3] Andrew King, “A Survey of Methods for Face Detection”, 2003.
[4] A. Yuille, P. Hallinan, and D. Cohen, “Feature Extraction from Faces Using eformable Templates”, Int’l J. Computer Vision, vol. 8, no. 2, pp. 99-111, 1992. [5] D.G. Kendall, “Shape Manifolds, Procrustean Metrics, and Complex Projective Shapes”, Bull. London Math. Soc., vol. 16, pp. 81-121, 1984.
[6] E. Osuna, R. Freund, and F. Girosi, “Training Support Vector Machines: An Application to Face Detection” Proc. IEEE Conf. Computer Vision and Pattern Recognition, pp. 130-136, 1997.
[7] Fuzhen Huang and Jianbo Su, “Multiple Face Contour Detection Using adaptive Flows”, Sinobiometrics 2004, LNCS 3338, pp. 137-143, Springer-Verlag Berlin eidelberg, 2004.
[8] H.P. Graf, T. Chen, E. Petajan, and E. Cosatto, “Locating Faces and Facial Parts”, Proc. First Int’l Workshop Automatic Face and Gesture Recognition, pp. 41-46, 1995.
[9] J. Canny, “A Computational Approach to Edge Detection”, IEEE Trans. Pattern Analysis and Machine Intelligence, vol. 8, no. 6, pp. 679-698, June 1986. [10] J. Sobottka and I. Pitas, “Segmentation and Tracking of Faces in Color Images”, Proc. Second Int’l Conf. Automatic Face and Gesture Recognition, pp. 236-241, 1996.s