Chào tất cả các bạn!

Như chúng tôi đã hứa lần trước, bài này chúng tôi xin nói về cách đánh giá các thuật toán nhận dạng khuôn mặt. Tài liệu do các nhân viên của phòng thí nghiệm NtechLab soạn thảo.

Gần đây, vectơ phát triển nhận dạng khuôn mặt ngày càng thu hút được nhiều sự quan tâm của nhà nước và lĩnh vực thương mại. Tuy nhiên, việc đo lường chuẩn độ chính xác của các hệ thống như vậy không phải là một nhiệm vụ dễ dàng và chứa đựng rất nhiều sắc thái. Chúng tôi thường xuyên được liên hệ với các yêu cầu thử nghiệm công nghệ nhận dạng của mình cũng như các dự án thử nghiệm dựa vào công nghệ đó, và chúng tôi nhận thấy rằng thường xuất hiện các câu hỏi liên quan đến thuật ngữ, phương pháp kiểm tra thuật toán liên quan đến các vấn đề kinh doanh. Kết quả là các công cụ không phù hợp có thể được lựa chọn để giải quyết vấn đề sẽ dẫn đến tổn thất tài chính hoặc không có được lợi nhuận. Chúng tôi quyết định công bố bài viết này để giúp mọi người làm quen với các thuật ngữ kỹ thuật và dữ liệu thô xoay quanh công nghệ nhận dạng khuôn mặt và giúp việc so sánh chúng trở nên dễ dàng hơn. Chúng tôi muốn nói với bạn về các khái niệm cơ bản trong lĩnh vực này bằng thứ ngôn ngữ đơn giản và dễ hiểu, chỉ rõ cách thức hoạt động của hệ thống nhận dạng khuôn mặt dựa trên thuật toán. Hy vọng rằng điều này sẽ cho phép những người làm về kỹ thuật và các nhà kinh doanh có tiếng nói chung với nhau, hiểu rõ hơn về các kịch bản sử dụng nhận dạng khuôn mặt trong thế giới thực và đưa ra các quyết định đã được kiểm chứng bằng dữ liệu.

Nhiệm vụ của việc nhận dạng khuôn mặt

Nhận dạng khuôn mặt thường được coi là một tập hợp các nhiệm vụ khác nhau, chẳng hạn như phát hiện khuôn mặt trong ảnh hoặc khuôn mặt trong luồng video, xác định giới tính và tuổi, tìm đúng người trong số nhiều hình ảnh khuôn mặt hoặc xác minh rằng hai hình ảnh là của cùng một người. Trong bài viết này, chúng tôi sẽ tập trung vào hai nhiệm vụ cuối cùng và sẽ gọi chúng tương ứng là nhận dạng và xác minh. Để giải quyết những vấn đề này, các ký hiệu mô tả khuôn mặt đặc biệt hoặc các vectơ ký hiệu ​​cần thiết để nhận dạng khuôn mặt sẽ được trích xuất từ ​​các bức ảnh. Trong trường hợp này, nhiệm vụ nhận dạng được giảm xuống thành việc tìm vectơ đặc điểm gần nhất và việc xác minh có thể được thực hiện bằng cách sử dụng một ngưỡng đơn giản khoảng cách giữa các vectơ. Bằng cách kết hợp hai hành động này, hệ thống có thể nhận dạng một người nào đó trong số các hình ảnh khuôn mặt được đưa ra hoặc đưa quyết định người đó có nằm trong số các hình ảnh được phân tích kia không. Quy trình này được gọi là nhận dạng trong tập hợp mở (open-set identification), xem Hình 1.

Задачи распознавания лиц
Hình 1. Nhiệm vụ của việc nhận dạng khuôn mặt

Có thể sử dụng khoảng cách trong không gian của các vectơ để đánh giá định lượng sự giống nhau của các khuôn mặt, bạn có thể sử dụng khoảng cách trong không gian của các vectơ đặc điểm của khuôn mặt. Thường thì khoảng cách euclid hoặc cosin sẽ được chọn, nhưng vẫn có những cách tiếp cận khác phức tạp hơn được sử dụng để nhận dạng. Tính năng khoảng cách cụ thể thường được cung cấp như một phần của sản phẩm nhận dạng khuôn mặt. Việc nhận dạng và xác minh trả lại các kết quả khác nhau và do đó, cần sử dụng các số liệu khác nhau để đánh giá chất lượng của chúng. Chúng ta sẽ xem xét chi tiết các chỉ số chất lượng trong các phần sau. Ngoài việc chọn số liệu thích hợp, để đánh giá độ chính xác của thuật toán cần có một bộ hình ảnh (tập dữ liệu) được đánh dấu.

Đánh giá độ chính xác

Tập dữ liệu

Hầu hết tất cả các phần mềm sinh trắc học trên khuôn mặt hiện đại đều được xây dựng trên máy học. Các thuật toán nhận dạng khuôn mặt được đào tạo trên các tập dữ liệu lớn (dataset) với các hình ảnh được đánh dấu. Cả chất lượng và bản chất của các bộ dữ liệu này đều có tác động đáng kể đến độ chính xác. Dữ liệu ban đầu càng tốt thì thuật toán sẽ giải quyết nhiệm vụ đưa ra càng tốt.

Một phương pháp tự nhiên để kiểm tra mức độ chính xác của hệ thống nhận dạng khuôn mặt là đo độ chính xác của nhận dạng trên một tập dữ liệu thử nghiệm riêng biệt. Điều rất quan trọng là phải chọn đúng bộ dữ liệu. Lý tưởng nhất là các tổ chức nên có được tập dữ liệu của riêng mình, tập dữ liệu này càng giống với các hình ảnh mà hệ thống sẽ hoạt động trong quá trình vận hành càng tốt. Cần chú ý đến máy ảnh, điều kiện chụp, tuổi, giới tính và quốc tịch của những người sẽ được đưa vào bộ dữ liệu thử nghiệm. Tập dữ liệu thử nghiệm càng giống với dữ liệu thực thì kết quả thử nghiệm càng đáng tin cậy, độ chính xác càng cao. Bởi vậy, thường thì cần phải dành nhiều thời gian cũng như tiền bạc để thu thập và đánh dấu tập dữ liệu của mình. Nếu vì một lý do nào đó không thể thực hiện điều này, bạn có thể sử dụng bộ dữ liệu công khai, ví dụ: LFWMegaFace. LFW chỉ chứa 6000 cặp hình ảnh khuôn mặt và không phù hợp với nhiều tình huống trong đời thực: đặc biệt, với tập dữ liệu này, không thể đủ để đo với mức sai sót thấp như chúng tôi sẽ trình bày dưới đây. Bộ dữ liệu MegaFace chứa nhiều hình ảnh hơn và phù hợp để thử nghiệm các thuật toán nhận dạng khuôn mặt ở quy mô lớn. Tuy nhiên, cả bộ hình ảnh đào tạo và kiểm tra của MegaFace đều được công bố công khai, vì vậy bạn nên thận trọng khi sử dụng để kiểm tra.

Một phương án thay thế khác là sử dụng kết quả kiểm tra của một bên thứ ba. Các bài kiểm tra như vậy được thực hiện bởi các chuyên gia có trình độ chuyên môn trên các bộ dữ liệu lớn khép kín về con người và kết quả của họ có thể tin cậy được. Một trong những ví dụ đó là NIST Face Recognition Vendor Test Ongoing. Đây là cuộc thử nghiệm do Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST) của Bộ Thương mại Hoa Kỳ thực hiện. Nhược điểm của cách tiếp cận này là tập dữ liệu của tổ chức thử nghiệm có thể khác biệt đáng kể so với kịch bản quan tâm sử dụng.

Đào tạo lại

Như chúng tôi đã nói, học máy là trung tâm của phần mềm nhận dạng khuôn mặt hiện đại. Một trong những hiện tượng học máy phổ biến nhất là đào tạo lại. Nó thể hiện ở chỗ, thuật toán hiển thị những kết quả tốt trên các khuôn mặt đã được sử dụng trong quá trình đào tạo, nhưng kết quả nhận dạng trên dữ liệu mới lại kém hơn nhiều.

Hãy xem xét một ví dụ cụ thể: Hãy tưởng tượng một khách hàng muốn cài đặt hệ thống qua cửa tốt nhất bằng nhận dạng khuôn mặt. Để thực hiện mục đích này, anh ấy thu thập một bộ ảnh của những người sẽ được phép ra vào và đào tạo một thuật toán để phân biệt khuôn mặt của họ với những người khác. Ở bước thử nghiệm, kiểm tra, hệ thống cho thấy kết quả tốt và được đưa vào vận hành. Sau một thời gian, danh sách những người được phép ra vào tăng lên, và hệ thống nhận dạng khuôn mặt lúc này sẽ làm việc thế nào? — từ chối những người mới, không cho phép ra vào. Thuật toán đã được thử nghiệm trên các khuôn mặt giống như nó đã được đào tạo và không ai đo độ chính xác trên các bức ảnh mới. Tất nhiên, đây là một ví dụ phóng đại, nhưng nó giúp chúng ta hiểu rõ vấn đề.

Trong một số trường hợp, việc đào tạo lại sẽ không thể hiện rõ ràng như vậy. Giả sử thuật toán nhận dạng khuôn mặt được đào tạo dựa trên hình ảnh của những người mà một nhóm dân tộc nhất định chiếm ưu thế. Nếu một công ty đa văn hóa (tức là có nhiều tộc người khác nhau) sử dụng thuật toán phân tích khuôn mặt này, độ chính xác của nó có thể sẽ giảm xuống. Đánh giá quá lạc quan về độ chính xác của một thuật toán do thử nghiệm không đúng cách là một sai lầm rất phổ biến. Thuật toán luôn cần được kiểm tra trên những dữ liệu mới, những dữ liệu mà nó sẽ phải xử lý trong thực tế khi áp dụng, chứ không phải trên dữ liệu mà nó đã được đào tạo.

Tóm tắt những điều trên, chúng ta có thể lập ra danh sách các khuyến nghị: không sử dụng ảnh chụp các khuôn mặt mà thuật toán đã được huấn luyện trong quá trình thử nghiệm, hãy sử dụng một tập dữ liệu kín đặc biệt để thử nghiệm. Nếu như không thể thực hiện điều này, bạn hãy sử dụng tập dữ liệu công khai và hãy đảm bảo rằng nhà cung cấp không sử dụng nó trong quá trình đào tạo và/hoặc để điều chỉnh thuật toán. Hãy nghiên cứu tập dữ liệu trước khi thử nghiệm, hãy suy nghĩ xem tập dữ liệu đó gần đến mức nào so với dữ liệu mà thuật toán sẽ xử lý trong quá trình vận hành hệ thống.

Số liệu/Chỉ số

Sau khi chọn tập dữ liệu, bạn nên quyết định số liệu sẽ được sử dụng để đánh giá kết quả. Trong trường hợp khái quát, số liệu là một hàm nhận kết quả làm việc của thuật toán ở đầu vào (nhận dạng hoặc xác minh) và ở đầu ra, nó trả về một số tương ứng với chất lượng làm việc của thuật toán trên một tập dữ liệu cụ thể. Sử dụng một số để so sánh định lượng giữa các thuật toán hoặc nhà cung cấp khác nhau cho phép trình bày ngắn gọn kết quả nhận dạng và tạo điều kiện thuận lợi cho việc đưa ra quyết định. Trong phần này, chúng ta sẽ xem xét các số liệu thường được sử dụng nhất trong nhận dạng khuôn mặt và thảo luận về ý nghĩa của chúng từ góc độ kinh doanh.

Xác minh

Việc xác minh khuôn mặt có thể được xem như một quá trình đưa ra quyết định nhị phân: «có» (hai hình ảnh thuộc về cùng một người), «không» (một vài bức ảnh hiển thị những người khác nhau). Trước khi tìm hiểu về các số liệu xác minh, sẽ rất hữu ích khi bạn hiểu cách chúng tôi có thể phân loại lỗi trong các nhiệm vụ như vậy. Chú ý rằng có 2 câu trả lời có thể có của thuật toán và 2 phương án cho tình huống thực sự của sự việc, như vậy có 4 kết quả có thể xảy ra:

Цвет фона кодирует истинное отношение между картинками
Hình 2. Các loại lỗi. Màu nền mã hóa mối quan hệ thực sự giữa các hình ảnh (màu xanh có nghĩa là «chấp nhận», màu vàng — «từ chối»), màu đường viền tương ứng với dự đoán của thuật toán (màu xanh — «chấp nhận», màu vàng — «từ chối»

Trong bảng trên, các cột tương ứng với quyết định của thuật toán (màu xanh — chấp nhận, màu vàng — từ chối), các hàng tương ứng với giá trị thực (được mã hóa bằng các màu giống nhau). Các câu trả lời đúng của thuật toán được đánh dấu bằng nền xanh, những câu sai — bằng màu đỏ. Trong số này, hai kết quả tương ứng với câu trả lời đúng của thuật toán và hai kết quả tương ứng với lỗi thuộc loại thứ nhất và thứ hai. Các lỗi thuộc loại thứ nhất được gọi là “false accept”, “false positive” hoặc “false match” (được chấp nhận không chính xác) và các lỗi thuộc loại thứ hai được gọi là “false reject”, “false negative” hoặc “false non-match” (bị từ chối không chính xác). Số lượng các loại lỗi khác nhau giữa các cặp hình ảnh trong tập dữ liệu và chia chúng cho số cặp, chúng tôi nhận được tỷ lệ chấp nhận sai (false accept rate, FAR) và tỷ lệ từ chối sai (false reject rate, FRR). Trong trường hợp hệ thống kiểm soát ra vào “false positive” tương ứng với việc cấp quyền ra vào cho một người mà lẽ ra quyền ra vào này không được cấp, trong khi “false negative” có nghĩa là hệ thống đã từ chối quyền ra vào một cách nhầm lẫn với người được được cho phép ra vào. Những sai sót này sẽ có chi phí khác nhau nhìn từ quan điểm kinh doanh và do đó, chúng được xem xét riêng. Trong ví dụ kiểm soát ra vào, “false negative” sẽ khiến nhân viên an ninh tiến hành kiểm tra lại thẻ ra vào của nhân viên. Việc cho phép người vi phạm tiềm năng ra vào trái phép (false positive) có thể dẫn đến hậu quả tệ hại hơn nhiều. Do các loại lỗi khác nhau có liên quan đến các rủi ro khác nhau, các nhà sản xuất phần mềm nhận dạng khuôn mặt thường cho phép điều chỉnh thuật toán để giảm thiểu một trong số các loại lỗi. Để làm điều này, thuật toán trả về không phải là giá trị nhị phân mà là một số thực phản ánh độ tin cậy của thuật toán đối với quyết định của nó. Trong trường hợp này, người dùng có thể độc lập chọn ngưỡng và sửa mức lỗi ở các giá trị nhất định. Ví dụ, hãy xem xét một tập dữ liệu đồ chơi gồm ba hình ảnh. Để hình ảnh 1 và 2 thuộc về cùng một người và hình ảnh 3 là của người khác. Giả sử chương trình đánh giá độ tin cậy của nó đối với từng cặp trong số ba cặp như sau:

Bảng 2. Ví dụ về giá trị tin cậy cho ba hình ảnh

Chúng tôi đã cố ý chọn các giá trị để không có ngưỡng nào phân loại chính xác cả ba cặp. Cụ thể, bất kỳ ngưỡng nào dưới 0,6 đều sẽ dẫn đến hai cặp có false accept (cặp 2−3 và 1−3). Tất nhiên, kết quả này có thể được cải thiện.

Chọn ngưỡng từ 0,6 đến 0,85 sẽ dẫn đến cặp 1−3 sẽ bị từ chối, mặt 1−2 vẫn được chấp nhận còn cặp 2−3 bị chấp nhận sai. Nếu bạn tăng ngưỡng lên 0,85−0,9, thì cặp 1−2 sẽ bị từ chối sai. Giá trị ngưỡng trên 0,9 sẽ dẫn đến hai cặp có true reject (cặp 1−3 và 2−3) và một false reject (1−2). Như vậy, trông có vẻ như các phương án tốt nhất là ngưỡng phạm vi từ 0,6−0,85 (một cặp false accept 2−3) và một ngưỡng trên 0,9 (dẫn đến false reject 1−2). Cuối cùng, việc chọn giá trị nào phụ thuộc vào chi phí của các loại lỗi khác nhau. Trong ví dụ này, ngưỡng biến đổi trong phạm vi rộng, điều này chủ yếu do tập dữ liệu rất nhỏ và do cách chúng tôi chọn giá trị độ tin cậy của thuật toán. Đối với các bộ dữ liệu lớn được sử dụng cho các nhiệm vụ trong thực tế, chúng ta sẽ thu được các giá trị ngưỡng chính xác hơn đáng kể. Thông thường, các nhà cung cấp phần mềm nhận dạng khuôn mặt đưa ra các giá trị ngưỡng mặc định cho các FAR khác nhau, các giá trị này được tính toán tương tự trên bộ dữ liệu của chính nhà cung cấp.

Cũng có thể dễ dàng nhận thấy rằng khi FAR quan tâm giảm xuống, ngày càng nhiều cặp hình ảnh dương tính được yêu cầu để tính toán chính xác giá trị ngưỡng. Vì vậy, đối với FAR = 0,001, cần ít nhất 1000 cặp và đối với FAR = 10−6, cần 1 triệu cặp. Không dễ để thu thập và đánh dấu một tập dữ liệu như thế, vì vậy những khách hàng quan tâm đến giá trị FAR thấp nên chú ý đến các kiểm chuẩn công khai như NIST Face Recognition Vendor Test hoặc MegaFace. Sau đó cần xử lý một cách thận trọng, vì tất cả mọi người đều có quyền truy cập vào cả mẫu thử nghiệm và mẫu đào tạo, điều này có thể dẫn đến những đánh giá quá lạc quan về độ chính xác (xem phần “Đào tạo lại”).

Đường cong ROC

Các loại lỗi khác nhau liên quan đến chi phí của chúng và khách hàng có cách để chuyển đổi cân bằng chi phí theo các lỗi nhất định. Để làm điều này, cần phải xem xét một loạt các giá trị ngưỡng. Để dễ dàng hình dung độ chính xác của một thuật toán ở các giá trị FAR khác nhau, người ta sử dụng đồ thị đường cong ROC (tiếng Anh là receiver operating characteristic — ROC, đặc trưng hoạt động của bộ phận thu).

Hãy xem đường cong ROC được xây dựng và phân tích như thế nào. Độ tin cậy của thuật toán (từ đó cho ra ngưỡng) nhận các giá trị từ một khoảng cố định. Nói cách khác, các giá trị này được giới hạn trên và dưới. Giả sử rằng phạm vi này là từ 0 đến 1. Bây giờ chúng ta có thể đo số lỗi bằng cách thay đổi giá trị ngưỡng từ 0 đến 1 theo từng bước nhỏ. Như vậy, đối với mỗi giá trị ngưỡng, chúng ta nhận được giá trị FAR và TAR (true accept rate). Tiếp theo, chúng ta sẽ vẽ từng điểm sao cho FAR tương ứng với trục hoành và TAR tương ứng với trục tung.

Hình 3. Ví dụ về đường cong ROC

Dễ dàng nhận thấy điểm đầu tiên sẽ có tọa độ 1,1. Với ngưỡng 0, chúng ta chấp nhận tất cả các cặp khuôn mặt và không từ chối bất kỳ cặp nào. Tương tự, điểm cuối cùng sẽ là 0,0: ở ngưỡng 1, chúng ta không chấp nhận bất kỳ cặp khuôn mặt nào và chúng ta từ chối tất cả các cặp khuôn mặt. Tại các điểm khác, đường cong thường lồi lên. Bạn cũng có thể nhận thấy rằng đường cong xấu nhất nằm xấp xỉ trên đường chéo của biểu đồ và tương ứng với một dự đoán ngẫu nhiên về kết quả. Mặt khác, đường cong tốt nhất có thể tạo thành một tam giác với các đỉnh (0,0) (0,1) và (1,1). Nhưng trên một tập dữ liệu có kích thước hợp lý, điều này rất khó bắt gặp.

Hình 4. Đường cong ROC NIST FRVT

Có thể xây dựng tương tự các đường cong ROC với các số liệu / lỗi khác nhau trên các trục. Ví dụ, hãy xem xét Hình 4. Trên biểu đồ thấy rõ rằng, các nhà tổ chức của NIST FRVT đã vẽ FRR (trên hình — False non-match rate) trên trục Y, và FAR (trên hình — False match rate) trên trục X. Trong trường hợp cụ thể này, kết quả tốt nhất đạt được bởi các đường cong nằm bên dưới và dịch chuyển sang trái, tương ứng với FRR và FAR thấp. Do đó, cần chú ý đến những giá trị nào được vẽ dọc theo các trục.

Biểu đồ như vậy giúp dễ dàng đánh giá độ chính xác của thuật toán đối với FAR nhất định: chỉ cần tìm một điểm trên đường cong có tọa độ X bằng FAR mong muốn và giá trị TAR tương ứng là đủ. “Chất lượng” của đường cong ROC cũng có thể được ước tính bằng một con số, để làm điều này, chúng ta cần phải tính diện tích bên dưới nó. Trong trường hợp này, giá trị tốt nhất có thể sẽ là 1, còn giá trị 0,5 tương ứng với một dự đoán ngẫu nhiên. Con số này được gọi là ROC AUC (Area Under Curve). Tuy nhiên, cần lưu ý rằng ROC AUC ngầm giả định rằng lỗi loại I và loại II là như nhau, điều này không phải lúc nào cũng đúng. Trong trường hợp nếu chi phí các lỗi khác nhau, bạn nên chú ý đến hình dạng của đường cong và những khu vực mà FAR đáp ứng các yêu cầu kinh doanh.

Nhận dạng

Nhiệm vụ nhận dạng khuôn mặt phổ biến thứ hai là xác định, định danh hoặc tìm khuôn mặt mong muốn trong một tập hợp các hình ảnh. Kết quả tìm kiếm khuôn mặt được sắp xếp theo độ tin cậy của thuật toán và các kết quả phù hợp nhất có thể nằm ở đầu danh sách. Tùy thuộc vào việc người được tìm kiếm có hiện diện trong cơ sở dữ liệu tìm kiếm người hay không, nhận dạng được chia thành hai loại phụ: nhận dạng nhóm kín closed-set (người được tìm kiếm có trong cơ sở dữ liệu) và nhận dạng nhóm mở open-set (người được tìm kiếm có thể không có trong cơ sở dữ liệu khuôn mặt).

Độ chính xác (accuracy) là một số liệu, chỉ số đáng tin cậy và dễ hiểu nhằm nhận dạng nhóm kín closed-set. Thực chất thì độ chính xác đo số lần mà một người mong muốn xuất hiện trong kết quả tìm kiếm khuôn mặt.

Nó hoạt động như thế nào trong thực tế? Chúng ta sẽ cùng tìm hiểu. Hãy bắt đầu bằng cách xây dựng các yêu cầu kinh doanh. Giả sử chúng ta có một trang web có thể lưu trữ mười kết quả tìm kiếm. Chúng tôi cần đo số lần người được tìm kiếm nhận được mười phản hồi đầu tiên của thuật toán. Con số này được gọi là độ chính xác Top-N (trong trường hợp cụ thể này, N bằng 10).

Với mỗi bài kiểm tra, chúng tôi xác định hình ảnh của người mà chúng tôi sẽ tìm và xác định một bộ sưu tập các khuôn mặt mà chúng tôi sẽ tìm kiếm sao cho bộ sưu tập chứa ít nhất một hình ảnh nữa của người này. Chúng tôi xem xét mười kết quả đầu tiên của thuật toán tìm kiếm và kiểm tra xem người chúng tôi đang tìm kiếm có nằm trong số đó hay không. Để có được độ chính xác, hãy tính tổng tất cả các thử nghiệm mà người được tìm kiếm có trong kết quả tìm kiếm và chia cho tổng số lần thử nghiệm.

Оценка качества алгоритмов распознавания лиц
Hình 5. Một ví dụ về nhận dạng. Trong ví dụ này, người bạn đang tìm xuất hiện ở vị trí 2, do đó, độ chính xác của Top-1 là 0 và Top-2 trở lên là 1

Nhận dạng open-set bao gồm việc tìm những người giống nhất với hình ảnh cần tìm và xác định xem có ai trong số họ có phải là người cần tim hay không dựa trên độ tin cậy của thuật toán. Nhận dạng open-set có thể được coi là sự kết hợp của nhận dạng và xác minh closed-set, do đó, ở nhiệm vụ này có thể áp dụng tất cả các số liệu như trong nhiệm vụ xác minh. Cũng dễ dàng thấy rằng nhận dạng open-set có thể được rút xuống để so sánh từng cặp giữa hình ảnh mong muốn với tất cả các hình ảnh từ thư viện. Trong thực tế, điều này không được sử dụng vì lý do tốc độ tính toán. Phần mềm nhận dạng khuôn mặt thường đi kèm với các thuật toán tìm kiếm nhanh có thể tìm thấy khuôn mặt giống nhau trong số hàng triệu khuôn mặt chỉ trong mili giây. Việc sử dụng kiểu so sánh theo cặp sẽ mất nhiều thời gian hơn.

Các ví dụ thực tế

Để minh họa, chúng ta hãy xem một vài ví dụ minh họa cách đo chất lượng của các thuật toán nhận dạng khuôn mặt để so sánh trong tình huống thực tế.

Cửa hàng bán lẻ

Giả sử một cửa hàng bán lẻ quy mô vừa muốn cải thiện chương trình khách hàng thân thiết của mình hoặc giảm các hành vi trộm cắp. Từ quan điểm sinh trắc học khuôn mặt, hai mục tiêu này là giống nhau. Mục tiêu chính của dự án này là xác định khách hàng trung thành hoặc kẻ xâm nhập từ hình ảnh camera càng sớm càng tốt và chuyển thông tin này cho người bán hoặc nhân viên an ninh.

Để chương trình khách hàng thân thiết tiếp cận được 100 khách hàng. Nhiệm vụ này có thể được coi là một ví dụ về nhận dạng tập hợp mở open-set. Sau khi đánh giá chi phí, bộ phận tiếp thị đưa ra kết luận rằng mức độ sai sót có thể chấp nhận được là nhầm lẫn một khách hàng ghé thăm với một khách hàng thường xuyên mỗi ngày. Nếu cửa hàng được 1000 khách ghé thăm mỗi ngày, mỗi người trong số họ phải được đối chiếu với danh sách 100 khách hàng thường xuyên, thì FAR yêu cầu sẽ là 1 / (1000 * 100) = 10−5.

Sau khi quyết định mức lỗi có thể chấp nhận được, cần chọn một tập dữ liệu phù hợp để kiểm tra. Một phương án hữu hiệu là đặt máy ảnh ở vị trí thích hợp (nhà cung cấp có thể trợ giúp về thiết bị cụ thể và tư vấn vị trí). Bằng cách đối chiếu, so sánh các giao dịch của chủ thẻ khách hàng thân thiết với hình ảnh camera và thực hiện lọc thủ công, nhân viên cửa hàng có thể thu thập một tập hợp các cặp khuôn mặt «dương tính». Việc thu thập một tập hợp các hình ảnh của khách ghé thăm ngẫu nhiên (mỗi người một hình ảnh) cũng có ý nghĩa. Tổng số hình ảnh phải tương ứng với số lượng khách ghé thăm cửa hàng mỗi ngày. Bằng cách kết hợp cả hai tập hợp, bạn có thể nhận được tập dữ liệu của cả cặp “dương tính” và “âm tính”.

Khoảng một nghìn cặp “dương tính” là đủ để kiểm tra độ chính xác nhận dạng mong muốn. Bằng cách kết hợp nhiều khách hàng thường xuyên khác nhau và khách không thường xuyên, có thể thu thập được khoảng 100.000 cặp «âm tính».

Bước tiếp theo là chạy (hoặc yêu cầu nhà cung cấp chạy) phần mềm và lấy độ tin cậy của thuật toán cho từng cặp từ tập dữ liệu. Khi thực hiện điều này, đường cong ROC có thể được vẽ ra và xác minh rằng số lượng khách hàng lặp lại được xác định chính xác tại FAR = 10−5 đáp ứng các yêu cầu kinh doanh.

E-Gate ở sân bay

Các sân bay hiện đại phục vụ hàng chục triệu hành khách mỗi năm, và có khoảng 300.000 người làm thủ tục hải quan qua cửa kiểm soát hộ chiếu mỗi ngày. Việc tự động hóa quy trình này sẽ giúp giảm chi phí đáng kể. Mặt khác, việc bỏ sót tội phạm qua cửa kiểm soát hải quan là điều không mong muốn và ban quản lý sân bay muốn giảm thiểu rủi ro của những sự việc như vậy. FAR = 10−7 tương ứng với mười người vi phạm mỗi năm và có vẻ hợp lý trong tình huống này. Nếu với giá trị FAR nay, FRR bằng 0,1 (tương ứng với kết quả của NtechLab xét theo điểm chuẩn của NIST visa images), thì chi phí xác minh thủ công giấy tờ có thể giảm đi 10 lần. Tuy nhiên, để ước tính độ chính xác ở mức FAR nhất định, sẽ cần hàng chục triệu hình ảnh. Việc thu thập một tập dữ liệu lớn như vậy đòi hỏi kinh phí đáng kể và có thể yêu cầu có sự đồng ý thêm việc xử lý dữ liệu cá nhân. Như vậy, các khoản đầu tư vào một hệ thống như trên có thể mất quá nhiều thời gian để thu hồi vốn. Trong trường hợp này, bạn nên tham khảo NIST Face Recognition Vendor Test (Nhà cung cấp bài kiểm tra nhận dạng khuôn mặt NIST), có chứa bộ dữ liệu với ảnh của những người có thị thực. Ban quản lý sân bay nên chọn nhà cung cấp dựa vào thử nghiệm trên bộ dữ liệu này và có tính đến lưu lượng hành khách.

Danh sách gửi thư nhắm mục tiêu

Đến nay, chúng ta đã xem xét các ví dụ trong đó khách đặt hàng quan tâm đến FAR thấp, nhưng điều này không phải lúc nào cũng như vậy. Hãy hình dung một quầy quảng cáo được trang bị camera trong một trung tâm mua sắm lớn. Trung tâm mua sắm có chương trình khách hàng thân thiết của riêng mình và muốn xác định những người tham gia đã dừng chân tại quầy. Hơn nữa, những người này có thể được gửi thư nhắm mục tiêu (gửi thư riêng) với chiết khấu và ưu đãi hấp dẫn dựa trên những gì họ quan tâm tại quầy hàng.

Giả sử rằng hoạt động của một hệ thống như vậy sẽ tốn 10 đô la, và có khoảng 1000 khách truy cập mỗi ngày dừng lại tại quầy. Bộ phận tiếp thị ước tính lợi nhuận từ mỗi email được nhắm mục tiêu là 0,0105 đô la. Chúng tôi muốn xác định càng nhiều khách hàng thường xuyên càng tốt và không làm phiền những người còn lại quá nhiều. Để việc gửi thư như vậy diễn ra thành công, độ chính xác phải bằng chi phí của gian hàng chia cho số lượng khách ghé thăm và thu nhập kỳ vọng từ mỗi bức thư. Với ví dụ của chúng tôi, độ chính xác là 10 / (1000 * 0,0105) = 95%. Ban quản trị trung tâm mua sắm có thể thu thập tập dữ liệu theo cách được mô tả trong phần “Cửa hàng bán lẻ” và đo độ chính xác như được mô tả trong phần “Nhận dạng”. Dựa vào kết quả thử nghiệm, có thể đưa ra quyết định liệu có thu được lợi ích mong đợi khi sử dụng hệ thống nhận dạng khuôn mặt hay không.

Áp dụng trong thực tế

Hỗ trợ video

Trong bài viết này, chúng ta chủ yếu thảo luận về vấn đề làm việc với hình ảnh và hầu như không đề cập đến việc phát video trực tuyến. Video có thể được coi là một chuỗi các hình ảnh tĩnh, vì vậy các chỉ số, số liệu và phương pháp tiếp cận để kiểm tra độ chính xác của hình ảnh cũng có thể áp dụng cho video. Cần lưu ý rằng việc xử lý video phát trực tuyến sẽ tốn kém hơn nhiều về các tính toán được thực hiện và đặt ra các hạn chế bổ sung đối với tất cả các giai đoạn nhận dạng khuôn mặt. Khi làm việc với video cần tiến hành kiểm tra hiệu suất riêng, do đó, chi tiết của quá trình sẽ không được đề cập trong bài này.

Những sai lầm thường gặp

Trong phần này, chúng tôi xin liệt kê các vấn đề, những lỗi phổ biến xảy ra khi thử nghiệm phần mềm nhận dạng khuôn mặt và đưa ra các khuyến nghị để tránh được những lỗi đó.

Thử nghiệm trên một tập dữ liệu không đủ lớn

Bạn phải luôn cẩn thận khi chọn tập dữ liệu để thử nghiệm các thuật toán nhận dạng khuôn mặt. Một trong những thuộc tính quan trọng nhất của tập dữ liệu là kích thước của nó. Kích thước của tập dữ liệu nên được chọn dựa trên các yêu cầu kinh doanh và giá trị FAR/TAR. Bộ dữ liệu “Đồ chơi” (dữ liệu coi là “nháp”) gồm một số hình ảnh khuôn mặt của mọi người từ văn phòng của bạn sẽ giúp bạn có thể “chơi” với thuật toán, đo hiệu suất của nó hoặc kiểm tra các tình huống không chuẩn, nhưng bạn không thể đưa ra kết luận về độ chính xác của thuật toán dựa trên chúng. Để kiểm tra độ chính xác cần sử dụng tập dữ liệu có kích thước hợp lý.

Thử nghiệm với một giá trị ngưỡng duy nhất

Đôi khi người ta kiểm tra thuật toán của hệ thống nhận dạng khuôn mặt ở một ngưỡng cố định (thường là mặc định của nhà sản xuất) và chỉ tính đến một loại lỗi. Điều này không chính xác vì các ngưỡng mặc định khác nhau giữa các nhà cung cấp hoặc được chọn dựa trên các giá trị FAR hoặc TAR khác nhau. Khi kiểm tra cần chú ý đến cả hai loại lỗi.

So sánh kết quả trên các tập dữ liệu khác nhau

Các tập dữ liệu khác nhau về kích thước, chất lượng và độ phức tạp, do đó không thể so sánh kết quả của các thuật toán trên các tập dữ liệu khác nhau. Bạn có thể dễ dàng từ chối giải pháp tốt nhất chỉ vì nó đã được thử nghiệm trên một tập dữ liệu phức tạp hơn so với của đối thủ cạnh tranh.

Rút ra kết luận dựa vào thử nghiệm trên một tập dữ liệu duy nhất

Nên thử kiểm tra trên nhiều bộ dữ liệu. Khi chọn một tập dữ liệu công khai, chúng ta không thể chắc chắn rằng nó không được sử dụng khi đào tạo hoặc điều chỉnh thuật toán. Trong trường hợp này, độ chính xác sẽ được đánh giá quá cao. May mắn là khả năng xảy ra sự việc này có thể giảm bớt bằng cách so sánh kết quả trên các tập dữ liệu khác nhau.

Kết luận

Trong bài viết này, chúng tôi đã mô tả các phần xây dựng chính của việc thử nghiệm các thuật toán nhận dạng khuôn mặt: bộ dữ liệu, nhiệm vụ, số liệu liên quan và các tình huống phổ biến.

Tất nhiên, đây không phải là tất cả những gì chúng tôi muốn nói về việc thử nghiệm và trình tự tốt nhất của các hành động có thể khác nhau trong nhiều trường hợp đặc biệt (nhóm NtechLab sẽ sẵn lòng giúp bạn tìm ra điều đó). Nhưng chúng tôi thực sự hy vọng bài viết này sẽ giúp bạn lập kế hoạch kiểm tra một cách chính xác, so sánh một số thuật toán nhận dạng khuôn mặt, đánh giá điểm mạnh, điểm yếu của chúng và giải thích các chỉ số chất lượng nhìn từ quan điểm kinh doanh, để cuối cùng bạn chọn được hệ thống nhận dạng khuôn mặt tốt nhất.

Các bạn thân mến! Chúng tôi luôn vui mừng đón nhận ý kiến của các bạn về vấn đề này.