top of page
Search
Writer's picturetctechhn

Đánh Giá Chất Lượng Thuật Toán Nhận Diện Khuôn Mặt Hiện Nay

Updated: May 27, 2022

Thời gian gần đây, thuật toán nhận diện khuôn mặt do các nhà mạng phát triển ngày càng thu hút được nhiều sự quan tâm của giới kinh doanh trong và ngoài nước. Tuy nhiên, các phép đo chuẩn độ chính xác cho các hệ thống như vậy không phải là nhỏ và có nhiều sắc thái. Chúng tôi thường xuyên nhận được các yêu cầu kiểm tra đối với công nghệ nhận dạng và quy trình kiểm tra dựa trên công nghệ này và chúng tôi lưu ý các câu hỏi phổ biến về thuật ngữ, phương pháp kiểm tra, thuật toán và các vấn đề kinh doanh. Kết quả là, công cụ sai có thể được chọn để giải quyết một vấn đề dẫn đến tổn thất tài chính hoặc không có lợi nhuận. Chúng tôi quyết định xuất bản 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ô của công nghệ nhận dạng khuôn mặt và để so sánh dễ dàng hơn. Chúng tôi muốn nói chuyện với bạn bằng ngôn ngữ đơn giản về các khái niệm cơ bản của lĩnh vực này và chỉ ra cách 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 các nhà công nghệ và doanh nhân 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, đưa ra quyết định sáng suốt và xác thực dữ liệu.

Nhiệm vụ của thuật toán nhận diện khuôn mặt

Nhận diện khuôn mặt thường được coi là một tập hợp các tác vụ khác nhau, chẳng hạn như phát hiện khuôn mặt trong ảnh hoặc luồng video, xác định giới tính và tuổi tác, tìm đúng người trong nhiều hình ảnh có khuôn mặt hoặc xác minh rằng hai hình ảnh thuộc về cùng một Cá nhân. Trong bài báo này, chúng tôi sẽ tập trung vào hai nhiệm vụ cuối cùng, được gọi là xác định và xác minh. Để giải quyết những vấn đề này, các bộ mô tả khuôn mặt đặc biệt hoặc các vectơ biểu tượng cần thiết để nhận dạng khuôn mặt được trích xuất từ ​​hình ảnh. Trong trường hợp này, nhiệm vụ nhận dạng được giảm xuống để tìm vectơ đặc trưng 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 khoảng cách đơn giản giữa các vectơ. Bằng cách kết hợp hai hành động này, hệ thống có thể xác định một người từ một số hình ảnh khuôn mặt nhất định hoặc xác định xem người đó có trong hình ảnh đang được phân tích hay không. Quá trình này được gọi là nhận dạng tập hợp mở, xem Hình 1.


Khoảng cách của không gian vectơ có thể được sử dụng để đánh giá định lượng độ giống nhau của khuôn mặt và khoảng cách không gian của vectơ đặc trưng khuôn mặt có thể được sử dụng. Khoảng cách euclide hoặc cosine thường được chọn, nhưng các phương pháp khác phức tạp hơn có thể được sử dụng để xác định nó. Khả năng khoảng cách cụ thể thường được cung cấp như một phần của các sản phẩm nhận dạng khuôn mặt. Việc xác định và xác minh trả lại các kết quả khác nhau, do đó, nên sử dụng các số liệu khác nhau để đánh giá chất lượng của chúng. Chúng tôi sẽ trình bày chi tiết các chỉ số chất lượng trong các phần sau. Ngoài việc chọn một số liệu phù hợp, việc đánh giá độ chính xác của một thuật toán yêu cầu một tập hợp các hình ảnh được gắn nhãn (tập dữ liệ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 gắn nhãn. 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 có thể giải quyết một nhiệm vụ nhất định càng tốt.

Một cách tự nhiên để kiểm tra độ 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 kiểm tra riêng biệt. Lựa chọn tập dữ liệu phù hợp là rất quan trọng. Tốt nhất, các tổ chức nên giữ bộ dữ liệu của họ càng gần thời điểm hệ thống đang chạy 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 và độ chính xác càng cao. Do đó, việc thu thập và dán nhãn các bộ dữ liệu thường tốn rất nhiều thời gian và tiền bạc. Nếu điều này không thể thực hiện được vì lý do nào đó, bạn có thể sử dụng các bộ dữ liệu công khai như LFW và MegaFace. LFW chỉ chứa 6000 cặp hình ảnh khuôn mặt và không phù hợp với nhiều trường hợp trong thế giới thực: đặc biệt, với bộ dữ liệu này, không thể đo với sai số thấp mà 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 trên quy mô lớn. Tuy nhiên, cả bộ hình ảnh đào tạo và kiểm tra cho MegaFace đều được công bố công khai, vì vậy cần cẩn thận khi kiểm tra chúng.


Một tùy chọn khác là sử dụng kết quả của bài kiểm tra của 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 độ trên các bộ dữ liệu lớn và kết quả có thể được tin cậy. Một ví dụ là thử nghiệm nhà cung cấp nhận dạng khuôn mặt NIST đang diễn ra. Đây là cuộc thử nghiệm do Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST) thực hiện. Được cung cấp bởi Bộ Thương mại Hoa Kỳ. 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ể rất khác so với bối cảnh quan tâm.

đà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. Có thể thấy, thuật toán hoạt động tốt trên các khuôn mặt được sử dụng trong quá trình đào tạo, nhưng lại hoạt động kém hơn trên dữ liệu mới.


Hãy xem một ví dụ cụ thể: Giả sử một khách hàng muốn lắp đặt hệ thống cửa đến cửa tốt nhất bằng cách sử dụng nhận dạng khuôn mặt. Để làm được điều này, anh đã thu thập một bộ ảnh của những người đượ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 khuôn mặt của những người khác. Trong giai đoạn thử nghiệm và kiểm tra, hệ thống đã đạt kết quả tốt và được đưa vào sử dụng. Sau một thời gian, ngày càng có nhiều người được phép ra vào, hệ thống nhận dạng khuôn mặt sẽ hoạt động như thế nào bây giờ? - Từ chối người mới đến và không cho nhập cảnh. Thuật toán đã được thử nghiệm trên chính những khuôn mặt mà nó đã được đào tạo và không ai đo độ chính xác của 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 được vấn đề.


Trong một số trường hợp, việc đào tạo lại sẽ không đáng chú ý. Giả sử một thuật toán nhận dạng khuôn mặt được đào tạo trên hình ảnh của những người có dân tộc chủ yếu. Nếu một công ty đa văn hóa (tức là có nhiều chủng tộc 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ể giảm xuống. Tối ưu hóa quá mức độ chính xác của một thuật toán do thử nghiệm kém là một sai lầm rất phổ biến. Một thuật toán luôn cần được thử nghiệm trên dữ liệu mới, dữ liệu mà nó phải xử lý trong thực tế, chứ không phải dữ liệu mà nó đã được đào tạo.


Tóm lại, chúng tôi có thể liệt kê các khuyến nghị: không sử dụng ảnh khuôn mặt của thuật toán được đào tạo trong quá trình thử nghiệm, sử dụng tập dữ liệu đóng đặc biệt để thử trải nghiệm. Nếu điều này không thể thực hiện được, hãy sử dụng tập dữ liệu công khai và đả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. Nghiên cứu tập dữ liệu trước khi thử nghiệm và xem xét mức độ gần gũi của nó với dữ liệu mà thuật toán sẽ xử lý khi hệ thống đang chạy.

Số / Thống kê

Sau khi chọn tập dữ liệu, bạn nên quyết định số liệu nào sẽ được sử dụng để đánh giá kết quả. Trong trường hợp chung, số liệu là một hàm lấy hiệu suất của thuật toán làm đầu vào (nhận dạng hoặc xác thực) và trả về đầu ra là một số tương ứng với hiệu suất của thuật toán nói trên, một tập dữ liệu. So sánh định lượng giữa các thuật toán khác nhau hoặc các nhà cung cấp sử dụng số có thể trình bày chính xác kết quả nhận dạng và hỗ trợ việc ra quyết định. Trong phần này, chúng ta sẽ xem xét các số liệu được sử dụng phổ biến 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 nhận

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



Trong bảng trên, các cột tương ứng với các quyết định theo thuật toán (màu xanh lam - chấp nhận, màu vàng - từ chối) và các hàng tương ứng với các giá trị thực tế (được mã hóa bằng cùng một màu). Câu trả lời đúng của thuật toán được đánh dấu bằng nền xanh và câu trả lời sai được đánh dấu bằng nền đỏ. Trong số này, hai tương ứng với các câu trả lời đúng của thuật toán, và hai tương ứng với các lỗi của loại thứ nhất và thứ hai. Loại lỗi đầu tiên được gọi là "lỗi chấp nhận", "kết quả xác thực sai" hoặc "kết hợp sai" và loại lỗi thứ hai được gọi là "từ chối sai", "âm tính sai" hoặc "không khớp". Từ chối). Hình ảnh trong tập dữ liệu Lấy số lượng các loại lỗi khác nhau giữa các cặp và chia chúng cho logarit, chúng tôi nhận được Tỷ lệ chấp nhận sai (FAR) và Tỷ lệ từ chối sai (FRR). Trong ngữ cảnh của hệ thống kiểm soát truy cập, "dương tính giả" tương ứng với việc cấp quyền truy cập cho người không được phép, trong khi "dương tính giả" có nghĩa là hệ thống từ chối quyền truy cập. Vào hoặc ra không đúng người được phép vào. Từ góc độ kinh doanh, những khiếm khuyết này có chi phí khác nhau và cần được xem xét riêng lẻ. Trong ví dụ về kiểm soát ra vào, "dương tính giả" sẽ khiến nhân viên bảo vệ phải kiểm tra lại thẻ ra vào của nhân viên. Việc cho phép những người vi phạm tiềm ẩn ra vào (dương tính giả) có thể dẫn đến những hậu quả nghiêm trọng hơn. Vì 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 các 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 sự tự tin 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. Giả sử hình ảnh 1 và 2 thuộc về cùng một người, và hình ảnh 3 thuộc về 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:


Chúng tôi đã cố ý chọn những giá trị này để không có ngưỡng 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 sẽ dẫn đến hai cặp được chấp nhận sai (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 giữa 0,6 và 0,85 sẽ dẫn đến việc 1-3 cặp bị loại, mặt 1-2 vẫn được chấp nhận và 2-3 cặp bị chấp nhận sai. Nâng ngưỡng lên 0,85−0,9 sẽ từ chối sai 1−2 cặp. Ngưỡng trên 0,9 sẽ dẫn đến hai cặp từ chối đúng (cặp 1-3 và 2-3) và một cặp từ chối sai (1-2). Vì vậy, các lựa chọn tốt nhất dường như là ngưỡng trong phạm vi 0,6-0,85 (một cặp được chấp nhận sai 2-3) và ngưỡng trên 0,9 (dẫn đến từ chối sai 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, các ngưỡng rất khác nhau, chủ yếu là do tập dữ liệu rất nhỏ và cách chúng tôi chọn giá trị tin cậy cho thuật toán. Đối với các bộ dữ liệu lớn cho các tác vụ trong thế giới thực, chúng tôi có được các ngưỡng chính xác hơn. Thông thường, các nhà cung cấp phần mềm nhận dạng khuôn mặt cung cấp các ngưỡng mặc định cho các FAR khác nhau, các ngưỡng 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 giảm, 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 điểm cắt. Do đó, đố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. Việc thu thập và gắn nhãn các bộ dữ liệu như vậy không dễ dàng, vì vậy những khách hàng quan tâm đến giá trị FAR thấp nên chú ý đến các điểm chuẩn được công bố công khai như Bài kiểm tra nhà cung cấp nhận dạng khuôn mặt NIST hoặc MegaFace. Điều này sau đó cần được xử lý một cách thận trọng, vì mọi người đều có quyền truy cập vào các mẫu thử nghiệm và đào tạo, điều này có thể dẫn đến các đá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 tùy theo chi phí và khách hàng có cách chuyển đổi số dư phí thành các lỗi nhất định. Đối với điều này, cần phải xem xét một loạt các ngưỡng. Để dễ dàng hình dung độ chính xác của thuật toán ở các giá trị FAR khác nhau, đồ thị đường cong ROC được sử dụng.


Hãy xem cách xây dựng và phân tích đường cong ROC. Độ tin cậy của thuật toán (từ đó suy ra ngưỡng) nhận một phạm vi giá trị cố định. Đó là, các giá trị bị ràng buộc lên và xuống. Giả sử phạm vi này là 0 đến 1. Giờ đây, chúng tôi có thể đo lường số lỗi bằng cách thay đổi ngưỡng từ 0 thành 1 theo từng bước nhỏ. Vì vậy, đối với mỗi ngưỡng, chúng tôi nhận được giá trị FAR và TAR (Tỷ lệ chấp nhận thực). 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 với trục tung.


Dễ dàng nhận thấy điểm đầu tiên có tọa độ là 1,1. Sử dụng ngưỡng 0, chúng tôi chấp nhận tất cả các cặp khuôn mặt và không từ chối chúng. Một lần nữa, điểm cuối cùng là 0.0: ở ngưỡng 1, chúng tôi không chấp nhận các cặp mặt và từ chối tất cả các cặp mặt. Ở các điểm khác, đường cong thường lồi. Bạn cũng có thể nhận thấy rằng đường cong xấu nhất gần như nằm 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ả. Nếu không, đường cong tốt nhất là 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 là không thể.


Các đường cong ROC với các số liệu / sai số khác nhau có thể được xây dựng tương tự trên các trục. Ví dụ, hãy xem xét Hình 4. Trên biểu đồ, rõ ràng là các nhà tổ chức của NIST FRVT đã vẽ biểu đồ FRR (Tỷ lệ không khớp trên) trên trục Y và FAR (Tỷ lệ không khớp trên) trên trục X. Trong trường hợp cụ thể này, kết quả tốt nhất thu được là lớp dưới cùng và các đường cong dịch trái, tương ứng với FRR và FAR thấp. Do đó, cần quan tâm đến các giá trị nào được vẽ dọc theo trục.


Biểu đồ như vậy giúp dễ dàng đánh giá độ chính xác của một thuật toán cho một FAR nhất định: chỉ cần tìm điểm trên đường cong mà 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ố, mà chúng ta cần 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ể là 1, trong khi giá trị 0,5 tương ứng với một phỏng đoán ngẫu nhiên. Con số này được gọi là ROC AUC (diện tích dưới đường cong). Tuy nhiên, cần lưu ý rằng ROC AUC mặc nhiên giả định rằng lỗi Loại I và Loại II là giống nhau, điều này không phải lúc nào cũng đúng. Nếu các chi phí khác nhau, bạn nên chú ý đến hình dạng của đường cong và khu vực mà FAR đáp ứng nhu 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ận dạng hoặc tìm khuôn mặt mong muốn trong một bộ ả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ới kết quả phù hợp nhất ở đầu danh sách. Dựa trên việc liệu người được tìm kiếm có tồn tại trong cơ sở dữ liệu của người tìm kiếm hay không, danh tính được chia thành hai loại phụ: danh tính nhóm kín (người được tìm kiếm có mặt trong cơ sở dữ liệu) và nhận dạng nhóm mở (người được tìm kiếm có thể không có trong cơ sở dữ liệu khuôn mặt trung gian) .


Độ chính xác là một số liệu và chỉ số đáng tin cậy và được hiểu rõ để xác định các nhóm kín. Về cơ bản, độ chính xác đo lường số lần một người được mong đợi 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 nhau 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 lường số lần người tìm kiếm nhận được mười phản hồi thuật toán hàng đầu. 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).


Đối 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 đang tìm kiếm và xác định nhóm khuôn mặt chúng tôi đang tìm kiếm, để tập hợp chứa ít nhất nhiều hình ảnh hơn về người này. Chúng tôi xem xét mười kết quả hàng đầu của thuật toán tìm kiếm và kiểm tra xem người mà 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 cộng tất cả các thử nghiệm của người tìm kiếm trong kết quả tìm kiếm và chia cho tổng số thử nghiệm.


Nhận dạng tập hợp mở liên quan đến việc tìm những người phù hợp nhất với hình ảnh được tìm thấy và xác định xem bất kỳ ai trong số họ có phải là công cụ tìm tim hay không dựa trên độ tin cậy của thuật toán. Danh tính nhóm mở có thể được coi là sự kết hợp của xác minh và xác minh nhóm kín, vì vậy trong tác vụ này, tất cả các chỉ số có thể được áp dụng như trong tác vụ xác minh. Cũng có thể dễ dàng nhận thấy rằng nhận dạng tập hợp mở có thể được giảm xuống để so sánh từng cặp giữa hình ảnh mong muốn và tất cả các hình ảnh trong thư viện. Trên thực tế, điều này không phải 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. So sánh theo cặp mất nhiều thời gian hơ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 là thử nghiệm và trong nhiều trường hợp đặc biệt, trình tự hoạt động tối ưu có thể khác nhau (nhóm NtechLab sẽ sẵn lòng hỗ trợ bạn). 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 đúng cách, so sánh một số thuật toán nhận diện khuôn mặt, đánh giá ưu và nhược điểm của chúng, đồng thời giải thích các chỉ số, con số chất lượng từ góc độ kinh doanh và cuối cùng là chọn hệ thống nhận dạng khuôn mặt tốt nhất.


82 views0 comments

Recent Posts

See All

Comments


Post: Blog2_Post
bottom of page