Đo Độ Giống Khuôn Mặt
Công cụ AI miễn phí so sánh độ giống khuôn mặt. Tải lên hai ảnh và để AI tính toán mức độ giống nhau của hai khuôn mặt. Hoàn hảo để tìm người giống nhau. Hoạt động offline trong trình duyệt.
Giới thiệu công cụ Đo Độ Giống Khuôn Mặt
Công cụ Đo Độ Giống Khuôn Mặt so sánh hai bức ảnh và báo cáo mức độ giống nhau về thị giác của các khuôn mặt dưới dạng phần trăm từ 0% đến 100%. Toàn bộ chạy trong trình duyệt qua @vladmandic/face-api (bản fork được duy trì của face-api.js). Cả hai ảnh được giải mã cục bộ, khuôn mặt được phát hiện bằng detector kiểu MobileNet, mỗi khuôn mặt được mã hóa thành descriptor 128 chiều bởi mạng lấy cảm hứng từ FaceNet, và khoảng cách cosine giữa hai descriptor được chuyển thành phần trăm độ giống. Không byte ảnh nào rời khỏi thiết bị — không có xử lý phía server, không upload, không log.
Dùng để khám phá vui: 'hai anh em họ tôi có thực sự giống nhau không?', 'selfie năm năm trước có còn giống tôi không?', 'hai ngôi sao V-pop không liên quan này có giống nhau không?'. Vui, nhanh, cho bạn một con số. Chúng tôi cố ý chọn chế độ vận hành dễ dãi (chỉ một khuôn mặt tốt nhất mỗi ảnh, không kiểm tra liveness, không lọc chất lượng) để ảnh nhỏ hay chất lượng thấp vẫn cho ra kết quả thay vì lỗi. Điều đó làm công cụ thân thiện nhưng cũng nghĩa là phần trăm không được hiệu chuẩn cho xác thực sinh trắc. Hãy xem điểm số là chỉ báo tương đối về độ giống thị giác, không phải bằng chứng danh tính.
Kết quả tốt nhất cần ảnh chính diện, sáng đều, độ phân giải tốt nơi khuôn mặt chiếm phần đáng kể trong khung hình. Ảnh có kính râm, khẩu trang, trang điểm đậm, mũ che lông mày, góc nghiêng, hay độ phân giải thấp sẽ làm méo descriptor và hạ điểm, ngay cả khi cùng một người có trong cả hai ảnh. Ngược lại, song sinh giống hệt, cha mẹ và con cái, thậm chí người không liên quan cùng độ tuổi, cùng dân tộc, cùng kiểu tóc có thể cho điểm cao bất ngờ. Phẫu thuật thẩm mỹ, thay đổi cân nặng đáng kể, lão hóa hơn 10 năm, hay filter mạnh / phần mềm face-tune cũng quan trọng — mô hình không được huấn luyện để bất biến với những điều đó.
Chúng tôi cố ý thiết kế công cụ này như một thứ tò mò chứ không phải hệ thống xác minh. Không phù hợp cho xác minh danh tính sinh trắc, KYC (know-your-customer), kiểm soát biên giới, giám sát, sàng lọc tuyển dụng, xác minh ứng dụng hẹn hò, hay bất kỳ tình huống nào kết quả được dùng để cho phép hay từ chối ai điều gì. Cho những use case đó bạn cần hệ thống đã được benchmark theo NIST FRVT 1:1, hỗ trợ phát hiện liveness (chống giả mạo), đánh giá công bằng nhân khẩu, ghi danh an toàn và thu hồi. Demo miễn phí trong trình duyệt không thỏa mãn các yêu cầu vận hành, pháp lý hay audit đó.
Quyền riêng tư là theo thiết kế. Trọng số mô hình được tải về trình duyệt một lần (~6 MB, cache cho lần sau) và toàn bộ so sánh chạy cục bộ dưới dạng JavaScript. Không có bước upload, không có cache server tạm, không có API call. Trang web dùng analytics tiêu chuẩn chỉ để đếm traffic. Đóng tab xóa toàn bộ trạng thái. Chúng tôi không lưu, log, bán hay chia sẻ ảnh bạn so sánh.
Cách so sánh hoạt động
Pipeline có ba giai đoạn — phát hiện, căn chỉnh + mã hóa, và chấm điểm khoảng cách — mỗi giai đoạn dùng mạng nơ-ron mã nguồn mở đã được thiết lập. Detector là SSD MobileNetV1 huấn luyện trên WIDER FACE. Trả về một hoặc nhiều bounding box mỗi ảnh kèm độ tin cậy; chúng tôi giữ một khuôn mặt tin cậy nhất mỗi ảnh để so sánh. Nếu cần workflow nhiều khuôn mặt, xem Age & Gender Predictor lặp qua mọi phát hiện.
Mỗi khuôn mặt phát hiện được sau đó được căn chỉnh. Detector landmark 68 điểm (ConvNet nhỏ huấn luyện trên dataset iBUG 300-W) dự đoán tọa độ landmark: khóe mắt ngoài và trong, sống mũi, đầu mũi, khóe miệng, đường hàm. Khuôn mặt được xoay và crop để hai mắt nằm ngang và khoảng cách giữa hai con ngươi được chuẩn hóa. Căn chỉnh quan trọng: mạng mã hóa được huấn luyện trên khuôn mặt đã căn chỉnh và sẽ tạo descriptor không nhất quán trên đầu vào không căn chỉnh.
Crop đã căn chỉnh đi qua mạng mã hóa khuôn mặt — trong face-api.js đây là kiến trúc ResNet-34 lấy cảm hứng từ FaceNet (Schroff, Kalenichenko & Philbin, 2015) và huấn luyện với triplet loss để tạo vector đơn vị 128 chiều cụm chặt trong cùng danh tính và phân tán giữa các danh tính. ArcFace (Deng và cộng sự, 2019) là cải tiến gần đây dùng additive angular-margin loss; bản fork của vladmandic hỗ trợ backbone kiểu ArcFace mới hơn cho độ chính xác cao hơn khi cần. Chúng tôi dùng mô hình ResNet-34 mặc định cho tương thích trình duyệt và footprint.
Hai descriptor 128 chiều được so sánh bằng khoảng cách cosine: distance = 1 − (dot(a,b) / (|a||b|)). Khoảng cách nhỏ hơn = giống hơn. Ngưỡng face-api.js tiêu chuẩn cho 'cùng một người' khoảng 0,6 (khoảng cách 0,6 nghĩa là khoảng 70% độ giống trong hiển thị của chúng tôi). Chúng tôi map khoảng cách thành phần trăm độ giống bằng đường cong mượt: 0,0 → 100%, 0,4 → ~70%, 0,6 → ~50%, 1,0 → 0%. Mapping này là kinh nghiệm và thân thiện chứ không hiệu chuẩn theo tiêu chuẩn sinh trắc, nên điểm 85% nên đọc là 'rất giống' chứ không phải xác suất là cùng một người.
Tất cả trọng số được lượng tử thành float 32-bit cho TensorFlow.js runtime trong trình duyệt; tổng tải về ~6 MB. Inference chạy trên WebGL khi có sẵn (tăng tốc GPU) và fallback về CPU qua WebAssembly. So sánh hai khuôn mặt từ đầu đến cuối thường mất 200 ms đến 1 s trên laptop hiện đại, lâu hơn trên di động. UI hiển thị thanh kiểu confidence và một trong năm dải định tính (rất giống, giống, hơi giống, không giống, rất khác) chọn cho thân thiện chứ không cho độ chặt chẽ sinh trắc.
Độ chính xác, ngưỡng và nơi công cụ thất bại
Trên benchmark học thuật LFW (Labelled Faces in the Wild), encoder khuôn mặt 128 chiều được huấn luyện tốt đạt ~99% độ chính xác xác minh trên các cặp matched. Đó không phải độ chính xác bạn nên kỳ vọng trên ảnh internet bất kỳ. Cặp LFW được lựa chọn trước về chất lượng ảnh và tư thế chính diện; hiệu năng in-the-wild ồn hơn nhiều. NIST FRVT 1:1 — đánh giá hàng chục nhà cung cấp thương mại trên hàng trăm nghìn ảnh vận hành — cho thấy ngay cả hệ thống dẫn đầu cũng có giá trị FAR (False Acceptance Rate) và FRR (False Rejection Rate) thay đổi theo bậc 10 với nhân khẩu, độ tuổi và chất lượng ảnh. Backbone open-source của chúng tôi cũ hơn và nhỏ hơn các leader trên FRVT.
Các chế độ thất bại cụ thể bạn sẽ gặp: song sinh giống hệt hầu như luôn ghi trên 80% — encoder không thể phân biệt đáng tin cậy. Cha mẹ và con trưởng thành, anh chị em, hay người không liên quan cùng dân tộc, cùng độ tuổi, cùng kiểu tóc đều có thể ghi 70–85%. Cùng một người chụp cách nhau 10 năm có thể tụt xuống 50% nếu đặc điểm khuôn mặt thay đổi. Filter mạnh (FaceTune, Snapchat, beauty filter) thực chất chỉnh sửa một khuôn mặt khác vào ảnh và sẽ hạ điểm đáng kể. Kính, khẩu trang, râu, hijab, mũ, che một phần đều giảm độ chính xác vì che landmark thông tin.
Công bằng nhân khẩu là giới hạn đã biết. Buolamwini & Gebru (2018), NIST FRVT (2019, 2024), và nhiều audit khác đã chỉ ra rằng các mô hình nhận dạng khuôn mặt huấn luyện chủ yếu trên đối tượng da sáng tạo tỉ lệ lỗi cao hơn cho khuôn mặt da tối, phụ nữ, và trẻ em. Descriptor face-api.js dùng ở đây kế thừa các thiên kiến đó. Hãy thận trọng với mọi so sánh đơn lẻ, đặc biệt khi một hoặc cả hai đối tượng thuộc nhóm thiếu đại diện trong các tập huấn luyện công khai tiêu chuẩn.
Đừng dùng công cụ này như xác thực sinh trắc, hệ thống chứng minh danh tính, kiểm tra chống gian lận, khớp giám sát, bộ lọc sàng lọc tuyển dụng, hay xác minh ứng dụng hẹn hò. Cho những việc đó bạn cần hệ thống thương mại được audit có phát hiện liveness (để ảnh in hay video deep-fake không lọt), pipeline thu hồi, và đánh giá thiên kiến có tài liệu. Chúng tôi không có những đảm bảo đó và minh thị bảo bạn đừng triển khai cái này trong production. Đây là công cụ tò mò, và điểm số là hướng dẫn, không phải phán quyết.
- Song sinh giống hệt thường ghi 85–95% — mô hình không thể phân biệt đáng tin cậy.
- Cùng một người cách nhau hơn 10 năm có thể tụt xuống 50–70% độ giống do lão hóa tự nhiên.
- Kính râm, khẩu trang, râu, mũ, hay che khác chặn landmark và giảm điểm.
- Filter mạnh (FaceTune, beauty filter, Snapchat lens) thực chất chỉnh sửa khuôn mặt và làm méo descriptor.
- Công bằng nhân khẩu không đều: tông da tối, phụ nữ, trẻ em có tỉ lệ lỗi cao hơn do mất cân đối tập huấn luyện.
- Công cụ chỉ báo cáo một khuôn mặt tốt nhất mỗi ảnh; ảnh nhóm phải crop về một khuôn mặt trước.
- Không có phát hiện liveness — ảnh in của khuôn mặt ai đó tạo ra cùng descriptor với ảnh chụp trực tiếp.
- Không phù hợp cho xác minh danh tính sinh trắc, KYC, kiểm soát biên giới, tuyển dụng, hay kiểm tra an toàn ứng dụng hẹn hò.
- Mapping từ khoảng cách cosine sang phần trăm là thân thiện và không hiệu chuẩn theo tiêu chuẩn sinh trắc.
Thuật ngữ
- Face embedding (descriptor)
- Vector số có độ dài cố định — ở đây là 128 số floating-point — được mạng nơ-ron tạo ra mã hóa danh tính thị giác của khuôn mặt. Ảnh cùng một người nên có embedding tương tự; ảnh người khác nhau nên có embedding khác biệt.
- Cosine similarity / cosine distance
- Phép đo hình học mức độ căn chỉnh của hai vector. Cosine similarity = dot(a,b) / (|a||b|), khoảng [-1, 1]; cosine distance = 1 − cosine similarity. Dùng vì descriptor sống trên hyperphere chiều cao.
- Threshold (ngưỡng)
- Khoảng cách cosine dưới ngưỡng đó hai descriptor được tuyên bố là khớp. face-api.js dùng ~0,6 mặc định; tương ứng khoảng 50% trong UI thân thiện. Hạ ngưỡng làm công cụ chặt chẽ hơn (ít false match hơn, nhiều miss match hơn).
- FAR (False Acceptance Rate)
- Tỉ lệ matcher khuôn mặt sai khi nói hai người khác nhau là cùng một người. Quan trọng cho hệ thống bảo mật — FAR cao nghĩa là kẻ giả mạo lọt qua.
- FRR (False Rejection Rate)
- Tỉ lệ matcher khuôn mặt sai khi nói ảnh cùng một người là khác nhau. FRR cao nghĩa là người dùng thật bị bất tiện.
- FaceNet
- Bài báo bước ngoặt 2015 của Schroff, Kalenichenko & Philbin (Google) giới thiệu sơ đồ huấn luyện triplet-loss để tạo embedding khuôn mặt 128 chiều trên hyperphere đơn vị.
- ArcFace
- Hàm loss nhận dạng khuôn mặt năm 2019 (Deng và cộng sự, InsightFace) dùng additive angular margin để đẩy các lớp descriptor xa nhau hơn trên hyperphere. State-of-the-art trên benchmark học thuật như LFW và IJB-B.
- LFW / NIST FRVT
- Benchmark học thuật và chính phủ cho hệ thống nhận dạng khuôn mặt. LFW (Labelled Faces in the Wild, 2007) nhỏ và chất lượng cao. NIST FRVT (Face Recognition Vendor Test) là đánh giá chính phủ tiêu chuẩn vàng, với hàng trăm nghìn ảnh vận hành và xuất bản liên tục.
Câu Hỏi Thường Gặp
AI so sánh hai khuôn mặt như thế nào?
Nó phát hiện một khuôn mặt mỗi ảnh, căn chỉnh từng khuôn mặt bằng 68 landmark khuôn mặt, mã hóa từng khuôn mặt đã căn chỉnh thành vector 128 chiều bằng ResNet kiểu FaceNet, và tính khoảng cách cosine giữa hai vector. Khoảng cách cosine được map sang điểm độ giống 0–100% thân thiện. Toàn bộ inference là JavaScript trong trình duyệt qua @vladmandic/face-api trên TensorFlow.js.
Phần trăm thực sự nghĩa là gì?
Là mapping mượt từ khoảng cách cosine sang thang 0–100. Ước chừng: 90–100% = gần như giống hệt về thị giác (cùng người, song sinh, hoặc người giống cực đoan); 70–90% = có khả năng cùng người, hoặc người thân; 50–70% = có một số đặc điểm chung nhưng không nhất thiết cùng người; dưới 50% = người khác nhau. KHÔNG phải xác suất và KHÔNG phải kết quả xác minh sinh trắc.
Sao người không liên quan ghi 60%?
Vì descriptor mã hóa hình dạng tổng thể của khuôn mặt — khoảng cách mắt, độ rộng mũi, góc hàm, dân tộc, tuổi — và nhiều người không liên quan chia sẻ đủ các đặc điểm đó để rơi vào cùng vùng không gian embedding. Đây là tính chất cơ bản của descriptor 128 chiều, không phải lỗi.
Sao ảnh chính tôi chỉ ghi 75% so với ảnh khác của tôi?
Nguyên nhân thường gặp: (1) ánh sáng hoặc góc máy khác; (2) tuổi khác (hơn vài năm có thể dịch chuyển descriptor đáng kể); (3) kính hoặc râu chỉ trong một ảnh; (4) filter mạnh hoặc FaceTune trong một ảnh; (5) một ảnh có độ phân giải thấp hơn nhiều; (6) bạn trang điểm trong một ảnh và không trang điểm ảnh kia. Thử cặp ảnh khác với điều kiện tương tự.
Ảnh có bị upload không?
Không. Tất cả phát hiện, mã hóa và so sánh khuôn mặt diễn ra cục bộ trong trình duyệt qua TensorFlow.js. Trọng số mô hình được tải về một lần (~6 MB, cache) và inference chạy trên JPEG bạn chọn. Byte ảnh không bao giờ rời thiết bị. Chúng tôi không lưu, log hay chia sẻ ảnh.
Có dùng để xác minh danh tính được không?
Không. Đừng dùng công cụ này để xác minh danh tính, kiểm soát truy cập dịch vụ, chống gian lận, hay sàng lọc nhân viên / hẹn hò. Không có phát hiện liveness, không có ngưỡng hiệu chuẩn, không có audit công bằng nhân khẩu, và dùng mô hình open-source nhỏ hơn hệ thống thương mại. Để xác minh danh tính cần nhà cung cấp được đánh giá theo NIST FRVT với FAR/FRR tài liệu hóa và đảm bảo vận hành.
Sao song sinh giống hệt không phân biệt được?
Descriptor khuôn mặt được huấn luyện để bất biến với ánh sáng, biểu cảm và tư thế, nhưng không được thiết kế để bắt micro-feature mà ngay cả con người cũng dùng để phân biệt song sinh (nốt ruồi nhỏ, bất đối xứng nhẹ). Phân biệt song sinh là lĩnh vực nghiên cứu đang hoạt động; encoder khuôn mặt tiêu chuẩn thường thất bại.
Có phân biệt được cha mẹ và con không?
Thường, nhưng không luôn. Cha mẹ và con trưởng thành chia sẻ nhiều đặc điểm khuôn mặt di truyền và có thể ghi 60–80%. Mô hình được huấn luyện đặt cùng danh tính gần nhau, nhưng không có khái niệm 'giống gia đình' so với 'danh tính', nên điểm cao giữa người thân là bình thường và mong đợi.
Có hỗ trợ nhiều khuôn mặt trong một ảnh không?
Hiện tại nó chọn một khuôn mặt tin cậy nhất mỗi ảnh và so sánh hai cái đó. Nếu ảnh là chụp nhóm, hãy crop từng cái về một khuôn mặt trước. Cho workflow nhiều khuôn mặt chúng tôi có Age & Gender Predictor riêng lặp qua mọi khuôn mặt phát hiện được.
Nếu không phát hiện khuôn mặt thì sao?
Công cụ báo 'không phát hiện khuôn mặt' cho ảnh đó. Nguyên nhân thường: khuôn mặt quá nhỏ (dưới kích thước tối thiểu của detector), khuôn mặt ở góc cực đoan, ánh sáng quá tối hay quá sáng, ảnh mờ nặng, hay ảnh không thực sự là ảnh khuôn mặt. Thử ảnh rõ hơn, lớn hơn, chính diện.
Tài liệu tham khảo & nguồn học thuật
- Schroff, F., Kalenichenko, D., & Philbin, J.. (2015). FaceNet: A Unified Embedding for Face Recognition and Clustering IEEE CVPR.
- Deng, J., Guo, J., Xue, N., & Zafeiriou, S.. (2019). ArcFace: Additive Angular Margin Loss for Deep Face Recognition IEEE CVPR (dự án InsightFace).
- Huang, G. B., Ramesh, M., Berg, T., & Learned-Miller, E.. (2007). Labeled Faces in the Wild: A Database for Studying Face Recognition in Unconstrained Environments Đại học Massachusetts Amherst Technical Report.
- Grother, P., Ngan, M., & Hanaoka, K.. (2024). NIST Face Recognition Vendor Test (FRVT) Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ.
- Buolamwini, J., & Gebru, T.. (2018). Gender Shades: Intersectional Accuracy Disparities in Commercial Gender Classification Proceedings of Machine Learning Research.
- Mandic, V.. (2024). @vladmandic/face-api — bản fork TypeScript được duy trì của face-api.js Dự án mã nguồn mở, giấy phép MIT.
Last reviewed: · Reviewed by Đội Đạo Đức & Kỹ Thuật AI WuTools
