1. Trang chủ
  2. » Luận Văn - Báo Cáo

HỆ THỐNG NHẬN DẠNG BẰNG KHUÔN MẶT SỬ DỤNG MÔ HÌNH DEEP LEARNING

71 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Hệ Thống Nhận Dạng Bằng Khuôn Mặt Sử Dụng Mô Hình Deep Learning
Tác giả Lý Thành Lâm, Lê Bá Việt Anh, Nguyễn Trọng Hoàng
Người hướng dẫn TS. Nguyễn Mạnh Cường
Trường học Trường Đại Học Công Nghiệp Hà Nội
Chuyên ngành Công Nghệ Thông Tin
Thể loại Báo Cáo Thực Nghiệm
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 71
Dung lượng 2,31 MB

Cấu trúc

  • CHƯƠNG 1:TỔNG QUAN VỀ BÀI TOÁN NHẬN DẠNG KHUÔN MẶT (10)
    • 1.1. Tổng quan về nhận dạng (10)
    • 1.2. Mạng nơ ron tích chập và bài toán nhận dạng (11)
    • 1.3. Bài toán nhận dạng khuôn mặt qua ảnh (13)
  • CHƯƠNG 2:NHẬN DẠNG KHUÔN MẶT SỬ DỤNG RETINAFACE VÀ (16)
    • 2.1. Phát hiện khuôn mặt (16)
      • 2.1.1. Haar cascade (16)
      • 2.1.2. MTCNN (20)
      • 2.1.3. RetinaFace (24)
    • 2.2. Căn chỉnh khuôn mặt (27)
    • 2.3. Biểu diễn khuôn mặt (29)
      • 2.3.1. VGGFace (30)
      • 2.3.2. FaceNet (31)
      • 2.3.3. ArcFace (33)
    • 2.4. Xác định danh tính khuôn mặt (35)
      • 2.4.1. Khoảng cách Euclidean (36)
      • 2.4.2. Khoảng cách Cosine (37)
  • CHƯƠNG 3: MỘT SỐ KẾT QUẢ THỰC NGHIỆM (41)
    • 3.1. Giới thiệu về dữ liệu thực nghiệm (41)
    • 3.2. Quy trình thực nghiệm (42)
      • 3.2.1. Mô hình phát hiện khuôn mặt (43)
      • 3.2.2. Mô hình nhận dạng khuôn mặt (44)
    • 3.3. Các siêu tham số được thiết lập và môi trường (44)
      • 3.3.1. Mô hình phát hiện khuôn mặt (45)
      • 3.3.2. Mô hình nhận dạng khuôn mặt (45)
    • 3.4. Một số kết quả (46)
      • 3.4.1. Mô hình phát hiện khuôn mặt (46)
      • 3.4.2. Mô hình nhận dạng khuôn mặt (48)
  • CHƯƠNG 4:XÂY DỰNG HỆ THỐNG NHẬN DẠNG BẰNG KHUÔN MẶT (50)
    • 4.1. Các công cụ được sử dụng (50)
      • 4.1.1. Streamlit (50)
      • 4.1.2. DeepFace (51)
      • 4.1.3. PyCharm (51)
    • 4.2. Các bước xây dựng phần mềm (52)
      • 4.2.1. Phân tích yêu cầu (52)
      • 4.2.2. Thu thập và chuẩn bị dữ liệu (52)
      • 4.2.3. Xây dựng mô hình nhận diện khuôn mặt (53)
      • 4.2.4. Thiết kế giao diện người dùng và logic ứng dụng (53)
      • 4.2.5. Kiểm thử phần và triển khai phần mềm (53)
      • 4.2.6. Bảo trì và cập nhật (54)
    • 4.3. Phân tích/ thiết kế phần mềm (54)
      • 4.3.1. Biểu đồ use case (54)
      • 4.3.2. Mô tả chi tiết use case nhận dạng (54)
      • 4.3.3. Mô tả chi tiết use case đăng ký (55)
      • 4.3.4. Thiết kế giao diện (57)
    • 4.4. Kết quả đạt được (59)
      • 4.4.1. Trang nhận dạng khuôn mặt (59)
      • 4.4.2. Trang đăng ký thông tin nhận dạng (63)
  • KẾT LUẬN (68)
  • TÀI LIỆU THAM KHẢO (70)

Nội dung

Trong những năm gần đây, Việt Nam đã chứng kiến sự phát triển mạnh mẽ trong lĩnh vực công nghệ thông tin, đặc biệt là trong các ứng dụng của trí tuệ nhân tạo (AI) và học máy. Sự tiến bộ này không chỉ thể hiện ở sự gia tăng của các startup công nghệ, mà còn qua việc áp dụng các công nghệ tiên tiến vào các ngành nghề khác nhau. Trong số đó, công nghệ nhận diện khuôn mặt, một phần quan trọng của AI, đã và đang trở thành một công cụ không thể thiếu trong nhiều lĩnh vực từ an ninh, giao thông đến thương mại và giáo dục. Hệ thống nhận dạng bằng khuôn mặt là một trong những ứng dụng quan trọng của trí tuệ nhân tạo và thị giác máy tính. Hệ thống này có thể được sử dụng trong nhiều lĩnh vực khác nhau, như an ninh, giáo dục, y tế, và giải trí. Tuy nhiên, việc nhận dạng bằng khuôn mặt cũng gặp nhiều thách thức, như sự biến đổi của ánh sáng, góc nhìn, biểu cảm, và phụ kiện. Do đó, cần phải nghiên cứu và phát triển các phương pháp nhận dạng bằng khuôn mặt hiệu quả và chính xác. Một trong những hướng tiếp cận hiện đại và tiên tiến nhất cho bài toán nhận dạng bằng khuôn mặt là sử dụng các mô hình học sâu (Deep Learning). Các mô hình học sâu có thể học được các đặc trưng phức tạp và phân biệt của khuôn mặt từ dữ liệu ảnh, và sử dụng chúng để phân loại hoặc xác minh các khuôn mặt khác nhau. Các mô hình học sâu cũng có thể được huấn luyện trên các tập dữ liệu lớn và đa dạng, để tăng khả năng tổng quát hóa và chống nhiễu. Đề tài “Hệ thống nhận dạng bằng khuôn mặt sử dụng mô hình học sâu” nhằm mục đích nghiên cứu và xây dựng một hệ thống nhận dạng bằng khuôn mặt hiệu quả và chính xác, sử dụng các mô hình học sâu phổ biến và tiên tiến nhất hiện nay, như RetinaFace, MTCNN, và ArcFace. Đề tài cũng nhằm đánh giá và so sánh hiệu năng của các mô hình học sâu khác nhau trong bài toán nhận dạng bằng khuôn mặt, cũng như đề xuất các cải tiến và giải pháp cho các vấn đề còn tồn tại.

QUAN VỀ BÀI TOÁN NHẬN DẠNG KHUÔN MẶT

Tổng quan về nhận dạng

Nhận dạng mẫu là quá trình xác định và phân loại các mẫu dữ liệu dựa trên các đặc trưng và thuộc tính của chúng Đối tượng được nhận dạng có thể bao gồm vật lý, hình ảnh, âm thanh, chữ viết hoặc bất kỳ dạng dữ liệu nào khác.

Tổng quan về quá trình nhận dạng mẫu gồm các bước chính như sau:

Để xây dựng mô hình nhận dạng hiệu quả, bước đầu tiên là thu thập dữ liệu mẫu, bao gồm hình ảnh, tệp âm thanh, dữ liệu văn bản hoặc bất kỳ dạng dữ liệu nào phù hợp với vấn đề nhận dạng cụ thể.

Trước khi tiến hành huấn luyện mô hình nhận dạng, việc tiền xử lý dữ liệu là rất quan trọng để chuẩn hóa và loại bỏ nhiễu Các bước tiền xử lý bao gồm chuẩn hóa dữ liệu, giảm kích thước, loại bỏ nhiễu và tăng cường dữ liệu nhằm chuẩn bị tốt nhất cho quá trình huấn luyện.

Trích xuất đặc trưng là quá trình quan trọng trong nhận dạng, nơi các đặc trưng phù hợp được rút ra từ dữ liệu mẫu Phương pháp này có thể sử dụng các kỹ thuật truyền thống như phân tích thành phần chính (PCA) hoặc áp dụng các mô hình học sâu như mạng nơ-ron tích chập (CNN) cho nhận dạng hình ảnh.

Xây dựng mô hình nhận dạng dựa trên các đặc trưng đã được rút trích là bước quan trọng trong quá trình phân tích dữ liệu Mô hình này có thể áp dụng các thuật toán máy học, bao gồm học có giám sát và học không giám sát, hoặc kết hợp cả hai phương pháp để tối ưu hóa hiệu suất nhận dạng.

Mô hình nhận dạng cần được huấn luyện trên dữ liệu mẫu đã được chuẩn bị để có thể dự đoán và phân loại các mẫu mới Quá trình huấn luyện giúp mô hình học các đặc trưng cần thiết, từ đó nâng cao khả năng nhận diện và phân loại chính xác.

Sau khi huấn luyện, mô hình cần được kiểm tra trên dữ liệu kiểm tra độc lập để đánh giá hiệu suất và độ chính xác Nếu kết quả đạt yêu cầu, mô hình sẽ được triển khai để nhận dạng các mẫu mới trong thực tế.

Nhận dạng mẫu có nhiều ứng dụng đa dạng, bao gồm nhận dạng khuôn mặt trong hệ thống mở khóa và xác định danh tính Nhận dạng chữ viết hỗ trợ nhận diện chữ ký và chuyển đổi văn bản từ hình ảnh qua hệ thống OCR Nhận dạng giọng nói được sử dụng trong các hệ thống nhận diện và xác định người nói Ngoài ra, công nghệ này còn được áp dụng trong các lĩnh vực như y tế, an ninh, giao thông, điều khiển tự động và nhiều ngành công nghiệp khác.

Nhận dạng mẫu là quá trình xác định và phân loại dữ liệu dựa trên các đặc trưng và thuộc tính của chúng, đóng vai trò quan trọng trong việc phát triển các hệ thống thông minh có khả năng nhận biết và tương tác với môi trường xung quanh.

Mạng nơ ron tích chập và bài toán nhận dạng

Mạng nơ ron tích chập (CNN) là một loại mạng nơ ron phổ biến trong thị giác máy tính và xử lý ảnh, được thiết kế để mô phỏng hệ thống thị giác của con người CNN chủ yếu được sử dụng cho các bài toán phân loại, nhận dạng và phân đoạn ảnh, bao gồm ba thành phần chính: lớp tích chập, lớp gộp và lớp kết nối đầy đủ Lớp tích chập thực hiện việc trích xuất đặc trưng từ ảnh đầu vào thông qua các bộ lọc nhỏ, giúp phát hiện các đặc trưng như cạnh, góc và texture Lớp gộp giảm kích thước bản đồ đặc trưng bằng cách lấy giá trị lớn nhất hoặc tính trung bình, giảm số lượng tham số và tính toán cần thiết Cuối cùng, lớp kết nối đầy đủ kết nối các đặc trưng đã trích xuất với lớp đầu ra để thực hiện phân loại hoặc nhận dạng dựa trên các đặc trưng đã học.

Bài toán nhận dạng là một ứng dụng quan trọng của CNN, nhằm nhận diện đối tượng, mẫu hoặc đặc điểm trong ảnh hoặc video, như nhận dạng khuôn mặt, phân loại chó mèo, và nhận dạng biển số xe CNN đóng vai trò chủ chốt trong các tác vụ nhận dạng này, giúp cải thiện độ chính xác và hiệu quả trong quá trình xử lý hình ảnh.

CNN được sử dụng để trích xuất các đặc trưng từ ảnh đầu vào thông qua các lớp tích chập, cho phép tự động học các bộ lọc nhằm phát hiện các đặc trưng cụ thể như cạnh, góc và texture Quá trình này giúp nắm bắt thông tin quan trọng trong ảnh và biểu diễn chúng dưới dạng các bản đồ đặc trưng.

CNN có khả năng phân loại các đối tượng, mẫu hoặc đặc điểm trong ảnh bằng cách trích xuất đặc trưng và sử dụng các lớp kết nối đầy đủ để xử lý thông tin Quá trình huấn luyện trên tập dữ liệu nhãn chính xác giúp mô hình cải thiện khả năng phân loại đối tượng một cách hiệu quả.

CNN có khả năng nhận dạng đối tượng độc lập với vị trí trong ảnh nhờ vào việc sử dụng lớp gộp (pooling layer) Điều này cho phép CNN xác định đặc trưng của đối tượng dựa trên một vùng không gian rộng hơn, giúp nhận diện đối tượng ngay cả khi chúng có vị trí và tỷ lệ khác nhau.

CNN có khả năng tổng quát hóa xuất sắc, cho phép nhận dạng các đối tượng mới mà nó chưa từng gặp Điều này đạt được nhờ vào quá trình huấn luyện trên một tập dữ liệu lớn và đa dạng, giúp mô hình nắm bắt các đặc trưng chung và quy luật phổ biến trong hình ảnh.

CNN có khả năng xử lý ảnh đầu vào lớn mà không cần kích thước cố định Nhờ vào cấu trúc tích chập và lớp gộp, CNN có thể làm việc với các ảnh có kích thước khác nhau mà không cần điều chỉnh kích thước của chúng.

Gần đây, CNN đã gặt hái nhiều thành công nổi bật trong các lĩnh vực như nhận diện khuôn mặt, nhận diện đối tượng, phân loại hình ảnh y tế và công nghệ lái xe tự động.

Bài toán nhận dạng khuôn mặt qua ảnh

Bài toán nhận dạng khuôn mặt là quá trình xác định hoặc xác nhận danh tính của một người thông qua khuôn mặt, ứng dụng công nghệ sinh trắc học và thị giác máy tính Công nghệ này sử dụng các thuật toán học sâu để phân tích và so sánh đặc điểm khuôn mặt trong hình ảnh hoặc video Nhận dạng khuôn mặt có nhiều ứng dụng quan trọng trong các lĩnh vực như an ninh, giáo dục, y tế và giải trí.

Để giải quyết bài toán nhận dạng khuôn mặt, cần thực hiện các bước quan trọng như phát hiện khuôn mặt, căn chỉnh khuôn mặt, biểu diễn khuôn mặt và cuối cùng là nhận dạng khuôn mặt.

Bài toán nhận dạng khuôn mặt bắt đầu với đầu vào là hình ảnh chứa một hoặc nhiều khuôn mặt, có thể lấy từ camera, điện thoại hoặc máy tính Đầu ra của quá trình này là kết quả xác định danh tính hoặc xác nhận khuôn mặt, được biểu diễn dưới dạng nhãn, số, mã hoặc biểu tượng Kết quả này có thể được hiển thị trên màn hình và lưu trữ trong cơ sở dữ liệu.

Cụ thể hơn, các bài toán con có chi tiết như sau:

Phát hiện khuôn mặt là quá trình xác định vị trí và kích thước của các khuôn mặt trong hình ảnh, đồng thời xác định 5 điểm mốc quan trọng: hai bên má, mũi và hai bên miệng Đầu vào của quá trình này là hình ảnh có thể chứa một hoặc nhiều khuôn mặt, và đầu ra là thông tin về vị trí, kích thước cùng các điểm mốc trên các khuôn mặt đó.

Căn chỉnh khuôn mặt là quá trình cắt và điều chỉnh các khuôn mặt đã được phát hiện, đảm bảo chúng có cùng góc nghiêng, kích thước và vị trí tương đối của các bộ phận như mắt, mũi và miệng Đầu vào của bước này là hình ảnh khuôn mặt từ bước trước, và đầu ra là hình ảnh khuôn mặt đã được căn chỉnh.

Biểu diễn khuôn mặt là quá trình chuyển đổi các khuôn mặt đã được phân đoạn thành các vector đặc trưng với chiều thấp hơn, giúp phản ánh sự khác biệt giữa các khuôn mặt Đầu vào cho bước này là kết quả từ bước phân đoạn trước đó, và đầu ra sẽ là các vector đặc trưng của từng khuôn mặt.

Xác định danh tính khuôn mặt là bước quan trọng trong quá trình nhận diện, nơi các vector đặc trưng của khuôn mặt được so sánh với các vector trong cơ sở dữ liệu Đầu vào cho quá trình này bao gồm các vector đặc trưng từ bước trước và các vector của khuôn mặt đã biết Kết quả cuối cùng sẽ là danh tính hoặc xác nhận của khuôn mặt trong cơ sở dữ liệu.

Bài toán nhận dạng khuôn mặt là một trong những thách thức quan trọng và thú vị trong lĩnh vực trí tuệ nhân tạo, nhưng cũng đối mặt với nhiều khó khăn Những yếu tố chính ảnh hưởng đến quá trình này bao gồm độ chính xác của thuật toán, chất lượng hình ảnh, điều kiện ánh sáng và sự đa dạng trong khuôn mặt của người dùng.

Ánh sáng đóng vai trò quan trọng trong việc xác định chất lượng hình ảnh khuôn mặt Nếu ánh sáng quá tối hoặc quá sáng, các đặc trưng khuôn mặt có thể bị mất hoặc biến dạng, dẫn đến khó khăn trong việc nhận diện.

Khi khuôn mặt không trực diện với camera, các đặc điểm khuôn mặt sẽ bị biến đổi do góc nhìn, gây khó khăn trong việc so sánh với các dữ liệu tham chiếu.

Kích thước hình ảnh khuôn mặt đóng vai trò quan trọng trong độ chính xác của nhận dạng khuôn mặt Hình ảnh quá nhỏ có thể làm mờ các đặc trưng khuôn mặt, dẫn đến nhiễu thông tin, trong khi hình ảnh quá lớn lại tiêu tốn thời gian và tài nguyên trong quá trình xử lý Do đó, việc lựa chọn kích thước hình ảnh phù hợp là cần thiết để tối ưu hóa hiệu quả nhận dạng.

Diện mạo khuôn mặt có thể thay đổi theo thời gian do nhiều yếu tố như tuổi tác, sức khỏe, trang điểm, kiểu tóc, kính, râu và mũ Những biến đổi này có thể khiến khuôn mặt trở nên khác biệt so với dữ liệu tham chiếu, gây khó khăn trong việc nhận diện.

Biểu hiện cảm xúc trên khuôn mặt đóng vai trò quan trọng trong việc nhận dạng Khi khuôn mặt thể hiện các cảm xúc như cười, khóc, ngạc nhiên hay tức giận, các đặc trưng của nó sẽ thay đổi, dẫn đến sự phức tạp trong việc so sánh và nhận diện khuôn mặt.

Các tham số môi trường như nền ảnh, độ phân giải, định dạng và màu sắc có ảnh hưởng lớn đến khả năng nhận dạng khuôn mặt Nền ảnh phức tạp với nhiều đối tượng khác hoặc màu sắc tương đồng với màu da có thể gây khó khăn trong việc phát hiện khuôn mặt Hơn nữa, nếu độ phân giải, định dạng và màu sắc của hình ảnh không phù hợp, quá trình xử lý hình ảnh sẽ bị sai lệch, ảnh hưởng đến kết quả nhận dạng.

Bài toán nhận dạng khuôn mặt có nhiều ứng dụng đa dạng trong các lĩnh vực như bảo mật, an ninh, giáo dục, y tế và giải trí Các ví dụ cụ thể về ứng dụng này bao gồm việc sử dụng trong hệ thống an ninh, quản lý học sinh trong trường học, xác thực danh tính trong dịch vụ y tế và cải thiện trải nghiệm người dùng trong ngành giải trí.

DẠNG KHUÔN MẶT SỬ DỤNG RETINAFACE VÀ

Phát hiện khuôn mặt

Haar Cascade là một thuật toán phát hiện đối tượng được phát triển bởi Paul Viola và Michael Jones vào năm 2001, nhằm phát hiện nhanh chóng các đặc trưng như khuôn mặt, mắt, tay và nhiều đồ vật khác Thuật toán này ban đầu tập trung vào việc nhận diện khuôn mặt chính diện cùng các đặc điểm như mắt, mũi và miệng Ngoài ra, trên GitHub, có nhiều đặc trưng Haar đã được đào tạo cho các đối tượng khác nhau, bao gồm toàn bộ cơ thể, thân trên, thân dưới và nụ cười Nói một cách đơn giản, Haar Cascade là một mô hình giúp nhận diện khuôn mặt thông qua việc sử dụng các tầng Haar và nhiều đặc trưng qua nhiều lượt, tạo thành một hệ thống nhận diện khuôn mặt hoàn chỉnh.

Trong bài viết của Paul Viola và Michael Jones, tác giả giới thiệu một phương pháp nhanh chóng và hiệu quả để xử lý hình ảnh và phát hiện khuôn mặt, thông qua việc sử dụng các đặc điểm hình chữ nhật Những đặc điểm này được áp dụng để nhận diện các yếu tố khác nhau trên khuôn mặt, như mắt và các nốt, như minh họa trong hình.

Hình 2.1: Các đặc trưng hình chữ nhật

Các đặc trưng hình chữ nhật được áp dụng lần lượt trên hình ảnh, với tổng số pixel trong phần màu trắng được trừ đi tổng số pixel trong phần màu đen Cụ thể, a) các bộ lọc được sử dụng để phát hiện các cạnh trong ảnh, b) xác định các đường thẳng trong ảnh, và c) phân tích các đặc trưng của 4 hình vuông.

Hình minh họa dưới đây mô tả hai đặc điểm hình chữ nhật: đầu tiên tính toán sự khác biệt cường độ giữa vùng mắt và vùng má, trong khi đặc điểm thứ hai đo chênh lệch cường độ giữa hai vùng mắt và sống mũi Bộ lọc Haar chỉ tập trung vào một vùng cụ thể trong cửa sổ để thực hiện nhận diện.

Hình 2.2: Minh hoạ Haar Cascade

Bằng cách áp dụng các đặc điểm hình chữ nhật lên hình ảnh, chúng ta có thể tạo ra hàng nghìn điểm đặc trưng Tuy nhiên, việc tính toán tổng số pixel trong các vùng trắng và đen của toàn bộ ảnh có thể trở nên tốn kém, đặc biệt đối với những hình ảnh có kích thước lớn.

Các tác giả đề xuất một phương pháp mới gọi là ảnh tích phân, cho phép thực hiện các phép toán chỉ với bốn điểm ảnh, từ đó đạt được kết quả tính toán tương tự.

Có thể sử dụng hàng nghìn hình ảnh được gắn nhãn để tạo ra bản đồ đặc trưng tầng HAAR Quá trình này bao gồm việc đào tạo mô hình học máy nhằm phát triển bộ phân loại nhận diện khuôn mặt hiệu quả.

Sau đây là từng bước nhận diện khuôn mặt của Haar Cascade:

Hình 2.3: Cấu trúc tầng cho Haar Cascade

• Bước 1: Hình ảnh (đã được gửi đến bộ phân loại) được chia thành các phần nhỏ (hoặc các cửa sổ con như trong hình minh họa)

Chúng tôi sử dụng phương pháp xếp tầng để đặt N mà không cần bộ dò, trong đó mỗi bộ phát hiện sự kết hợp của các đặc trưng khác nhau từ hình ảnh như đường thẳng, cạnh, hình tròn và hình vuông Khi thực hiện trích xuất đối tượng địa lý, mỗi phần phụ sẽ được gán một giá trị tin cậy.

Trong bước 3, các hình ảnh có độ tin cậy cao nhất, đặc biệt là khuôn mặt, sẽ được phát hiện và gửi đến bộ tích lũy, trong khi những hình ảnh không đạt yêu cầu sẽ bị từ chối Cascade sẽ tiếp tục tìm nạp khung hình hoặc hình ảnh tiếp theo nếu còn lại và khởi động lại quá trình.

Haar cascade là một phương pháp phát hiện đối tượng trong thị giác máy tính Dưới đây là điểm mạnh và điểm yếu của Haar cascade:

Haar cascade là một phương pháp phát hiện đối tượng nhanh chóng, được tối ưu hóa cho các hệ thống tính toán có giới hạn Với các phép toán đơn giản như cộng, trừ và tích chập, Haar cascade giảm thiểu thời gian tính toán so với các phương pháp phức tạp hơn Phương pháp này không chỉ nhanh mà còn có độ chính xác cao, nhờ vào việc sử dụng tập hợp các đặc trưng Haar để phân biệt đối tượng với nền và các bộ phân loại để xác định sự tồn tại của đối tượng Khi được đào tạo đúng cách, Haar cascade có thể đạt được độ chính xác rất cao trong việc phát hiện đối tượng.

Haar cascade có những điểm yếu đáng chú ý, bao gồm hiệu suất kém trong điều kiện ánh sáng yếu và khi đối tượng có màu sắc tương tự với nền, dẫn đến khả năng phát hiện sai hoặc bỏ sót Hơn nữa, phương pháp này không sử dụng học máy mà dựa vào các đặc trưng Haar đã được xác định trước, điều này khiến Haar cascade gặp khó khăn trong việc phát hiện các đối tượng mới hoặc có hình dạng phức tạp mà chưa được đào tạo trước.

Dựa trên những ưu và nhược điểm đã phân tích, chúng tôi quyết định không áp dụng mô hình Haar Cascade làm phương pháp chính trong việc giải quyết bài toán nhận diện khuôn mặt.

MTCNN (Multi-task cascaded convolutional neural networks) là một trong những công cụ phát hiện khuôn mặt chính xác và phổ biến nhất hiện nay Hệ thống này bao gồm ba mạng kết nối theo kiểu tầng, mỗi mạng thực hiện một tác vụ cụ thể trong quá trình nhận diện khuôn mặt.

MTCNN hoạt động qua ba bước chính, mỗi bước sử dụng một mạng neural riêng biệt: P-Net, R-Net và O-Net Đối với mỗi bức ảnh đầu vào, MTCNN tạo ra nhiều phiên bản của hình ảnh với các kích thước khác nhau.

Tại P-Net, thuật toán áp dụng một kernel 12x12 để phát hiện khuôn mặt trong từng bức hình Mạng được chia thành hai lớp sau convolution thứ ba Convolution 4-1 xác định xác suất xuất hiện của khuôn mặt trong từng bounding box, trong khi Convolution 4-2 cung cấp tọa độ chính xác cho các bounding box.

Căn chỉnh khuôn mặt

Căn chỉnh khuôn mặt là bước đầu tiên trong quy trình nhận dạng khuôn mặt hiện đại, giúp tăng độ chính xác của mô hình FaceNet từ 98,87% lên 99,63% Nghiên cứu này sẽ áp dụng phép xoay ảnh dựa trên vị trí hai mắt để đưa khuôn mặt về góc độ chụp chân dung.

Hình 2.11: Khuôn mặt đã được phát hiện

Trong bức ảnh, nếu mắt phải nằm trên mắt trái, cần xoay ảnh theo chiều ngược kim đồng hồ để hai mắt nằm ngang Ngược lại, nếu mắt trái nằm trên mắt phải, ảnh sẽ được xoay theo chiều kim đồng hồ.

Hình 2.12: Mô tả vị trí hai mắt của bức ảnh ví dụ

Trong giai đoạn căn chỉnh hình ảnh, sau khi phát hiện thành công khuôn mặt, vị trí tâm hai mắt của một hoặc nhiều khuôn mặt sẽ được xác định và lưu trữ dưới dạng tọa độ x và y trên khung hình Giả sử một khuôn mặt đã được phát hiện, vị trí hai mắt được ký hiệu lần lượt là 𝐴 (𝑥₁, 𝑦₁).

Để phân biệt hai điểm 𝐶 (𝑥2, 𝑦2), ta so sánh tọa độ 𝑥; điểm có tọa độ 𝑥 nhỏ hơn sẽ là mắt phải và ngược lại Điểm mới 𝐵 (𝑥1, 𝑦2) có cùng tọa độ 𝑥 với 𝐴 và tọa độ 𝑦 với 𝐶, tạo thành tam giác vuông 𝐴𝐵𝐶 Ba cạnh của tam giác vuông 𝐴𝐵𝐶 được ký hiệu là a, b, c và có thể được tính bằng khoảng cách Euclidean.

Giá trị 𝑐𝑜𝑠(𝛼) được tính áp dụng định lý Cosin:

Cuối cùng, bức ảnh được xoay theo góc 90 − 𝛼 để vị trí hai mắt có thể nằm ngang khung hình

Sau khi thực hiện các bước đã nêu, khuôn mặt sẽ được xoay và cắt lại để loại bỏ những chi tiết không cần thiết bên ngoài, mang lại kết quả cuối cùng như sau:

Hình 2.13: Kết quả căn chỉnh khuôn mặt

Biểu diễn khuôn mặt

Sau khi phát hiện và căn chỉnh khuôn mặt, hình ảnh sẽ được đưa vào mô hình Biểu diễn khuôn mặt để thực hiện quá trình tìm kiếm phần nhúng (embeddings), tương tự như cách hoạt động của autoencoders.

VGGFace là mô hình nhận diện khuôn mặt được phát triển dựa trên kiến trúc VGGNet, một mạng nơ-ron tích chập sâu (CNN) nổi tiếng Mục tiêu chính của VGGFace là nhận dạng và phân loại khuôn mặt trong hình ảnh.

Hình 2.15: Kiến trúc mô hình VGGFace

Cách hoạt động của VGGFace bao gồm các bước sau:

• Đầu tiên, ảnh đầu vào được đưa qua các lớp tích chập để trích xuất các đặc trưng của khuôn mặt

• Sau đó, các đặc trưng được đưa qua các lớp kết nối đầy đủ để trích xuất thông tin chi tiết hơn về các đặc trưng này

• Cuối cùng, mô hình áp dụng một lớp softmax để phân loại khuôn mặt vào các danh mục đã được đào tạo trước

VGGFace có một số điểm mạnh và điểm yếu như sau:

VGGFace nổi bật với kiến trúc CNN sâu, bao gồm nhiều lớp tích chập và kết nối đầy đủ, giúp nó học được các đặc trưng phức tạp từ khuôn mặt Được huấn luyện trên một tập dữ liệu lớn và đa dạng, VGGFace có khả năng nhận diện và phân loại khuôn mặt với độ chính xác cao Ngoài ra, VGGFace còn có thể trích xuất đặc trưng khuôn mặt và áp dụng cho các tác vụ khác như nhận dạng khuôn mặt, phân loại tuổi và giới tính.

VGGFace có điểm yếu là yêu cầu nhiều tài nguyên tính toán do kiến trúc sâu, gây khó khăn khi áp dụng trên các thiết bị hạn chế như điện thoại di động Hệ thống này cũng gặp khó khăn trong việc nhận diện khuôn mặt khi đối tượng bị che khuất, biến dạng hoặc có góc nhìn khác nhau.

Mặc dù mô hình MTCNN có những ưu và nhược điểm riêng, nhưng chúng tôi nhận thấy rằng đây không phải là phương pháp chính để giải quyết bài toán phát hiện khuôn mặt.

Theo tác giả [8], Facenet là một mạng lưới siêu đối xứng (siam network) có khả năng biểu diễn hình ảnh trong không gian n chiều (thường là 128), nhằm tối ưu hóa khoảng cách giữa các véc tơ embedding để tăng cường mức độ tương đồng giữa chúng.

Trong Facenet, mạng convolutional neural network thực hiện quá trình mã hóa bức ảnh thành 128 chiều Những véc tơ này được sử dụng làm đầu vào cho hàm loss function nhằm đánh giá khoảng cách giữa các véc tơ Để áp dụng triple loss, chúng ta cần chọn 3 bức ảnh, trong đó có một bức ảnh được gọi là anchor Ảnh anchor được cố định, trong khi hai ảnh còn lại bao gồm một ảnh negative (thuộc về người khác) và một ảnh positive (thuộc về cùng một người với anchor).

Kí hiệu ảnh Anchor, Positive, Negative lần lượt là A, P, N

Mục tiêu của hàm loss function là giảm thiểu khoảng cách giữa hai ảnh khi chúng thuộc loại negative và tăng cường khoảng cách khi chúng thuộc loại positive Do đó, việc lựa chọn các bộ ba ảnh phù hợp là rất quan trọng để đạt được hiệu quả tối ưu trong quá trình huấn luyện mô hình.

Ảnh Anchor và Positive khác nhau ở chỗ cần đảm bảo khoảng cách d(A, P) lớn Điều này tương tự như việc bạn chọn một bức ảnh hồi nhỏ so với bức ảnh hiện tại, nhằm giúp thuật toán học trở nên khó khăn hơn.

• Ảnh Anchor và Negative giống nhau nhất: cần lựa chọn để khoảng cách d(A, N) nhỏ

Như vậy hàm loss function sẽ là:

Khi áp dụng Triple loss vào các mô hình mạng nơ-ron tích chập (convolutional neural network), chúng ta có thể tạo ra các biểu diễn vectơ tối ưu cho từng bức ảnh Các biểu diễn vectơ này giúp phân biệt rõ ràng giữa các ảnh Negative và Positive, đồng thời làm cho các bức ảnh cùng một nhãn (label) trở nên gần nhau hơn trong không gian Euclidean Ưu điểm nổi bật của FaceNet là khả năng cải thiện độ chính xác trong việc nhận diện và phân loại hình ảnh.

• Độ Chính Xác Cao: FaceNet đạt được độ chính xác cao trong việc nhận dạng khuôn mặt, thậm chí với các dữ liệu phức tạp và đa dạng

Mô hình này tạo ra các vector nhúng 128 chiều mạnh mẽ, giúp biểu diễn thông tin quan trọng và cho phép so sánh khuôn mặt một cách hiệu quả.

FaceNet áp dụng hàm mất mát triplet loss để tối ưu hóa khoảng cách trong không gian vector, đảm bảo rằng các khuôn mặt của cùng một người được nhóm gần nhau, trong khi các khuôn mặt của những người khác được tách biệt xa hơn.

Mô hình hóa không gian Euclidean giúp việc định vị và phân biệt các khuôn mặt trở nên trực quan và dễ dàng hơn, mang lại hiệu quả cao trong các ứng dụng nhận diện.

FaceNet có khả năng mở rộng ấn tượng, cho phép xử lý và nhận dạng một lượng lớn dữ liệu khuôn mặt, thích hợp cho các hệ thống quy mô lớn Tuy nhiên, nó cũng có một số nhược điểm cần được xem xét.

Xác định danh tính khuôn mặt

Danh tính khuôn mặt được xác định bằng cách so sánh khoảng cách giữa các vector đặc trưng của khuôn mặt mới với các vector trong cơ sở dữ liệu Nếu khuôn mặt ghi lại khớp với một hoặc nhiều khuôn mặt đã biết, quá trình xác định sẽ hoàn tất.

Cách đơn giản nhất để so sánh hai vector là tính khoảng cách Euclidean giữa chúng, theo Wikipedia Khoảng cách này được xác định là độ dài đoạn thẳng giữa hai điểm trong không gian Euclide Để tính toán, ta sử dụng tọa độ Cartesian của các điểm dựa trên định lý Pythagorean, vì vậy nó cũng thường được gọi là khoảng cách Pythagorean.

Biểu diễn khuôn mặt dưới dạng các vector n-chiều cho phép áp dụng công thức khoảng cách Euclidean trong không gian này Cụ thể, khoảng cách Euclidean giữa hai vector 𝑝 và 𝑞 có tọa độ Cartesian trong không gian Euclidean n-chiều được xác định bằng công thức khoảng cách tổng quát.

Hình 2.18: Sử dụng định lý Pythagorean để tính khoảng cách Euclidean 2-chiều

Ngoài ra, khoảng cách Euclidean cũng có thể được biểu diễn ngắn gọn hơn dưới dạng chuẩn norm:

Khoảng cách Euclidean có ưu điểm là dễ cài đặt và tính toán nhanh, nhưng nhược điểm lớn là nhạy cảm với các biến đổi trên khuôn mặt, như sẹo hoặc ánh sáng khác nhau Điều này đã được chứng minh qua các thực nghiệm.

Khoảng cách Euclidean không phải là phương pháp duy nhất để so sánh khoảng cách giữa hai vector; độ tương tự Cosine là một trong những phương pháp phổ biến nhất Độ tương tự Cosine đo lường mức độ tương đồng giữa hai vector trong không gian tích trong, được tính bằng cos của góc giữa chúng, giúp xác định xem hai vector có cùng hướng hay không.

Giả sử cho hai vector 𝑎 = (𝑎 1 , 𝑎 2 , , 𝑎 𝑛 ), 𝑏 = (𝑏 1 , 𝑏 2 , , 𝑏 𝑛 ), vậy tích vô hướng của hai vector sẽ là 𝑎 ⋅ 𝑏 = 𝑎 1 𝑏 1 + 𝑎 2 𝑏 2 + +𝑎 𝑛 𝑏 𝑛 Để tối ưu tốc độ xử lý,

𝑎 và 𝑏 sẽ được lưu trữ dưới dạng vector cột sau đó nhân phiên bản chuyển vị của 𝑎 và 𝑏 cũng được kết quả tương tự:

Giả sử 𝜃 là góc giữa hai vector 𝑎 và 𝑏:

Một vector mới 𝑐 được xác định bằng 𝑎 − 𝑏 (hoặc −𝑎 + 𝑏) Có thể thấy các vector

𝑎, 𝑏 và 𝑐 tạo thành một tam giác hợp lệ trong khi vector 𝑐 có thể được biểu thị dưới dạng (𝑎 − 𝑏)

Hình 2.20: Tạo một vector để vẽ một hình tam giác Áp dụng định lý cosine:

||𝑐|| 2 = ||𝑎|| 2 + ||𝑏|| 2 − 2 ||𝑎|| ||𝑏|| 𝑐𝑜𝑠𝜃 (2.12) Trong đó, ||𝑎||, ||𝑏|| và ||𝑐|| biểu thị chiều dài của vector 𝑎, 𝑏 và 𝑐 tương ứng Với vector 𝑐 bằng với vector (𝑎 − 𝑏) nên:

Từ định lý cosine và phương trình trên suy ra:

Rút gọn phương trình trên:

Chiều dài của hai vector n-chiều 𝑎 và 𝑏 được tính sử dụng định lý Pythagorean với công thức, giả sử vector tổng quát n-chiều là 𝑣:

Từ các phương trình (2.15), và (2.16), độ tương tự cosine có công thức được tổng quát hoá: độ 𝑡ươ𝑛𝑔 𝑡ự 𝑐𝑜𝑠𝑖𝑛𝑒 = 𝑐𝑜𝑠𝜃

(2.17) Để tối ưu tốc độ xử lý, phương trình trên có thể được vector hoá: độ 𝑡ươ𝑛𝑔 𝑡ự 𝑐𝑜𝑠𝑖𝑛𝑒 = 𝑎

Giá trị độ tương tự cosine tăng khi hai vector trở nên tương tự, dẫn đến khoảng cách giữa chúng giảm Ngược lại, khi hai vector khác nhau, khoảng cách cosine sẽ tăng.

Khoảng cách cosine là một phương pháp hiệu quả để đo khoảng cách giữa các vector, đặc biệt khi độ lớn của chúng không quan trọng, như trong trường hợp các vector đặc trưng biểu diễn khuôn mặt Việc áp dụng khoảng cách cosine giúp khắc phục nhược điểm của khoảng cách Euclidean, đặc biệt là sự nhạy cảm với biến đổi trên khuôn mặt Điều này đã được chứng minh qua các thí nghiệm thực tế.

Trong chương 2, chúng tôi đã trình bày các nghiên cứu liên quan nhằm giải quyết từng bài toán con Đồng thời, chúng tôi cũng đã giới thiệu hai phương pháp chính được áp dụng trong đề tài này, đó là mô hình RetinaFace và mô hình ArcFace.

MỘT SỐ KẾT QUẢ THỰC NGHIỆM

Giới thiệu về dữ liệu thực nghiệm

Bộ dữ liệu WIDER FACE, theo nhóm tác giả [12], là một tiêu chuẩn quan trọng trong nhận diện khuôn mặt, bao gồm 32.203 hình ảnh được chọn từ bộ dữ liệu WIDER công khai Nó chứa 393.703 khuôn mặt được gắn nhãn, thể hiện sự đa dạng lớn về tỷ lệ, tư thế và độ che phủ, như minh họa trong các hình mẫu.

Bộ dữ liệu WIDER FACE được tổ chức thành 61 lớp sự kiện, trong đó mỗi lớp sẽ chọn ngẫu nhiên 40% dữ liệu cho tập huấn luyện, 10% cho tập xác thực và 50% cho tập kiểm tra Đây là một trong những tiêu chuẩn quan trọng để thử nghiệm và đánh giá các mô hình nhận dạng khuôn mặt trong điều kiện thực tế.

• Đa Dạng: Chứa hình ảnh với nhiều điều kiện chiếu sáng, biểu cảm và tư thế

• Lớn: Bao gồm hàng chục nghìn hình ảnh với sự đa dạng về môi trường và ngữ cảnh

• Phân Loại: Các hình ảnh được phân loại theo độ khó, từ dễ đến khó

• Đã Gán Nhãn: Mỗi khuôn mặt trong hình ảnh đã được gán nhãn với thông tin vị trí

Hình 3.1: Bộ dữ liệu WIDERFACE

Bộ dữ liệu "LFW" (Labeled Faces in the Wild) là một trong những tập dữ liệu nổi tiếng trong lĩnh vực nhận dạng khuôn mặt và học máy, bao gồm 13.000 hình ảnh của 5.749 người, cả nổi tiếng và không nổi tiếng, được thu thập từ các nguồn trực tuyến Bộ dữ liệu này đã trở thành tiêu chuẩn quan trọng để thử nghiệm và đánh giá các mô hình nhận dạng khuôn mặt trong điều kiện thực tế.

Hình 3.2: Bộ dữ liệu LFW

Một số đặc điểm quan trọng về bộ dữ liệu LFW:

Bộ dữ liệu LFW bao gồm hơn 13.000 hình ảnh của 5.749 cá nhân khác nhau, với mỗi cá nhân có số lượng hình ảnh đa dạng, từ vài bức đến hàng trăm bức.

Chất lượng hình ảnh trong bộ dữ liệu LFW có sự đa dạng do được thu thập từ nhiều nguồn trực tuyến Tuy nhiên, phần lớn các hình ảnh đều tập trung vào khuôn mặt và đã được cắt bỏ nền, đảm bảo rõ nét cho việc phân tích.

Mỗi hình ảnh trong bài viết đều được gán nhãn với tên của người trong ảnh, nếu có, và kèm theo thông tin về mức độ tương đồng giữa các cặp hình ảnh.

Bộ dữ liệu LFW (Labeled Faces in the Wild) là một công cụ quan trọng trong việc kiểm tra và đánh giá hiệu suất của các mô hình nhận dạng khuôn mặt Nó được áp dụng chủ yếu trong các nhiệm vụ nhận dạng khuôn mặt 1:1, nơi so sánh hai hình ảnh để xác định xem chúng có phải là của cùng một người hay không, và trong các nhiệm vụ 1:N, nhằm xác định danh tính của người trong hình ảnh từ một tập hợp lớn các cá nhân.

Quy trình thực nghiệm

Mô hình nhận dạng khuôn mặt hoàn chỉnh bao gồm hai mô hình con: phát hiện khuôn mặt và nhận dạng khuôn mặt Quy trình thực nghiệm bao gồm ba bước chính: chuẩn bị bộ dữ liệu, huấn luyện mô hình và đánh giá mô hình.

3.2.1 Mô hình phát hiện khuôn mặt

Quy trình thực nghiệm mô hình cụ thể như sau:

Bài báo RetinaFace cho biết mô hình được huấn luyện trên tập dữ liệu WIDER FACE, bao gồm 32.203 hình ảnh với 393.703 khuôn mặt được gán nhãn, thể hiện sự đa dạng về tỷ lệ, tư thế và độ che phủ WIDER FACE được phân loại thành 61 lớp sự kiện, với việc đánh giá ảnh hưởng của từng sự kiện đến nhận diện khuôn mặt thông qua ba yếu tố: tỷ lệ, độ tắc và tư thế Tác giả đã tính toán tỷ lệ nhận diện cho từng loại sự kiện và phân chia chúng thành ba mức độ: dễ, trung bình và khó Dữ liệu cho từng lớp sự kiện được chia thành 40% cho huấn luyện, 10% cho xác thực và 50% cho kiểm tra Để chuẩn bị cho việc huấn luyện, mỗi khuôn mặt sẽ được gán nhãn 5 điểm landmark và tất cả hình ảnh sẽ được thay đổi kích thước về 640x640, đảm bảo tương thích với phần cứng hiện có của nhóm.

Hình 3.3: Biểu đồ tỷ lệ nhận diện khuôn mặt cho các loại sự kiện khác nhau

Các danh mục sự kiện được sắp xếp theo thứ tự tăng dần dựa trên tỷ lệ nhận diện, với số lượng đề xuất cố định ở mức 10.000 Danh mục sự kiện hàng đầu là Top 1.

− 20, 21 − 40, 41 − 60 lần lượt được biểu thị bằng màu xanh lam, đỏ và xanh lục Trục Y biểu thị tỷ lệ nhận diện khuôn mặt Trục X biểu thị tên lớp sự kiện

Mô hình RetinaFace, được huấn luyện bởi tác giả bài báo, sẽ được áp dụng và tối ưu hóa để đạt hiệu suất cao Trong quá trình huấn luyện, hàm chi phí được tính toán nhằm đánh giá chất lượng của mô hình.

Mô hình phát hiện khuôn mặt sẽ được đánh giá thông qua chỉ số mAP (mean Average Precision) để phân tích độ chính xác của nó.

3.2.2 Mô hình nhận dạng khuôn mặt

Quy trình thực nghiệm mô hình cụ thể như sau:

Để chuẩn bị bộ dữ liệu, chúng tôi sử dụng tập thử nghiệm từ bộ dữ liệu Labeled Faces in the Wild (LFW) do thư viện Sklearn cung cấp, với 1000 cặp mẫu có kích thước 5828 chiều Các hình ảnh có kích thước 62x47 pixels, chứa các giá trị thực từ 0 đến 255, và được gán hai nhãn “Different persons” và “Same person” Tất cả cặp ảnh sẽ được thay đổi kích thước thành 112x112, chuyển đổi hệ màu từ RGB sang BGR, và chuẩn hóa giá trị về khoảng từ 0 đến 1 để phù hợp với đầu vào của mô hình ArcFace.

• Huấn luyện mô hình: mô hình ArcFace đã được huấn luyện của nhóm tác giả được sử dụng để thay thế quá trình huấn luyện

Các siêu tham số được thiết lập và môi trường

Tất cả quy trình thực nghiệm, bao gồm huấn luyện và đánh giá, được thực hiện trong môi trường máy ảo trên hệ điều hành Ubuntu Linux, sử dụng phần cứng từ Google Colab Cụ thể, phần cứng bao gồm 02 CPU Intel(R) Xeon(R) @ 2.20GHz, 12.7 GB RAM và 01 NVIDIA TESLA T4.

3.3.1 Mô hình phát hiện khuôn mặt

Mô hình phát hiện khuôn mặt được huấn luyện sử dụng RetinaFace với backbone là ResNet50 Dữ liệu được chia thành các batch size 16, ngoại trừ batch cuối có thể nhỏ hơn, nhằm tối ưu hóa hiệu suất huấn luyện trên phần cứng Thuật toán tối ưu SGD được áp dụng với các siêu tham số: learning rate 0.001, momentum 0.9, weight decay 0.0005, gamma 0.1 và epoch 1.

Việc đánh giá mô hình sử dụng độ đo mAP (mean Average Precision) với các siêu tham số là độ tin cậy 𝑐𝑜𝑛𝑓𝑖𝑑𝑒𝑛𝑐𝑒_𝑡ℎ𝑟𝑒𝑠ℎ𝑜𝑙𝑑 = 0.02 và 𝑁𝑜𝑛 − 𝑀𝑎𝑥𝑖𝑚𝑢𝑚 𝑆𝑢𝑝𝑝𝑟𝑒𝑠𝑠𝑖𝑜𝑛 = 0.4

3.3.2 Mô hình nhận dạng khuôn mặt

Mô hình ArcFace được đánh giá thông qua việc dự đoán các cặp khuôn mặt trong tập thử nghiệm, xác định xem chúng có phải là cùng một người hay không, với ngưỡng thiết lập là 0.68 Khoảng cách giữa các vector đặc trưng khuôn mặt được đo bằng khoảng cách Cosine; nếu giá trị này nhỏ hơn hoặc bằng ngưỡng, kết quả là True, ngược lại là False Nhãn dự đoán sẽ được so sánh với nhãn thực tế bằng các phương pháp như accuracy, precision, recall, và f1 score, đồng thời được trực quan hóa qua confusion matrix.

Một số kết quả

3.4.1 Mô hình phát hiện khuôn mặt

Hình 3.4: Kết quả huấn luyện mô hình RetinaFace với backbone ResNet50

Kết quả huấn luyện cho thấy mô hình phát hiện khuôn mặt đạt tốc độ hội tụ tốt nhờ vào việc sử dụng thuật toán tối ưu SGD, cho phép các tham số được cập nhật ngay sau mỗi lần lặp.

Bảng 3.1: Kết quả đánh giá mô hình phát hiện khuôn mặt

Bộ dữ liệu Điểm mAP của nhóm Điểm mAP của tác giả [1]

Sau khi huấn luyện, mô hình đạt được điểm số đánh giá khá tốt, cao nhất là 87,97% mAP trên tập WIDER FACE (VAL EASY), tiếp theo là 84,62% mAP trên tập WIDER FACE (VAL MEDIUM), và thấp nhất là 65,88% mAP trên tập WIDER FACE (VAL HARD) Tuy nhiên, các chỉ số này vẫn còn thấp so với nhóm tác giả đã công bố trước đó trên tập WIDER FACE.

The accuracy rates for VAL EASY, VAL MEDIUM, and VAL HARD are 96.9%, 96.1%, and 91.8%, respectively These variations in performance may be attributed to an insufficient training group and the customization of hyperparameters.

Hình 3.5: Kết quả dự đoán của mô hình phát hiện khuôn mặt

Mô hình phát hiện khuôn mặt của nhóm đã đạt hiệu suất tốt trong nhiều điều kiện dữ liệu đầu vào khác nhau Tuy nhiên, để cải thiện hơn nữa, mô hình có thể được nâng cao thông qua việc huấn luyện thêm, áp dụng các kỹ thuật làm giàu dữ liệu huấn luyện, hoặc sử dụng các mô hình đã được huấn luyện sẵn và công khai.

3.4.2 Mô hình nhận dạng khuôn mặt

Hình 3.6: So sánh giá trị dự đoán và giá trị thực tế

Ma trận nhầm lẫn cho thấy mô hình dự đoán hoạt động hiệu quả với tỷ lệ chính xác cao, khi 457/500 trường hợp được dự đoán đúng cho nhãn "Different persons" và 461/500 trường hợp cho nhãn "Same person".

Bảng 3.2: Kết quả đánh giá mô hình sử dụng các phương pháp khác nhau Độ đo Điểm số

Tất cả bốn phương pháp đánh giá mô hình đều đạt kết quả ấn tượng với tỷ lệ ≥ 91,5%, cho thấy mô hình đang hoạt động hiệu quả trong việc nhận dạng khuôn mặt.

Hình 3.7: Một số kết quả nhận dạng khuôn mặt

Trong chương 3, nhóm đã tiến hành quy trình thực nghiệm cho hai mô hình RetinaFace và ArcFace, bao gồm ba bước chính: chuẩn bị bộ dữ liệu, huấn luyện mô hình và đánh giá mô hình Kết quả thực nghiệm cho thấy, sự kết hợp giữa hai mô hình này đã tạo ra một hệ thống nhận dạng khuôn mặt hiệu quả, đủ khả năng xây dựng một hệ thống nhận dạng bằng khuôn mặt hoàn chỉnh.

DỰNG HỆ THỐNG NHẬN DẠNG BẰNG KHUÔN MẶT

Các công cụ được sử dụng

Streamlit là một framework mã nguồn mở giúp phát triển ứng dụng web nhanh chóng và trực quan Nó được thiết kế để tạo ra các ứng dụng trực tuyến tương tác, cho phép người dùng làm việc với dữ liệu và mô hình máy học một cách dễ dàng.

Streamlit có rất nhiều điểm mạnh như:

Streamlit sử dụng ngôn ngữ lập trình Python làm nền tảng chính để phát triển ứng dụng, giúp người dùng dễ dàng học và áp dụng, đặc biệt là những ai đã quen thuộc với Python.

Streamlit cho phép người dùng tương tác nhanh chóng với dữ liệu, giúp họ thay đổi các tham số và nhận kết quả ngay lập tức trong ứng dụng Điều này làm cho việc phân tích dữ liệu và kiểm tra mô hình trở nên dễ dàng và hiệu quả hơn.

Streamlit cung cấp API đơn giản cho việc hiển thị dữ liệu trực quan, cho phép người dùng tạo ra biểu đồ, bảng, hình ảnh và video, giúp trình bày dữ liệu một cách rõ ràng và dễ hiểu.

Streamlit cho phép tích hợp dễ dàng với các thư viện và công cụ phổ biến trong lĩnh vực khoa học dữ liệu và máy học như Pandas, NumPy và Scikit-learn Sự kết hợp này mang lại sự thuận tiện và linh hoạt cho việc phân tích dữ liệu và xây dựng mô hình.

Streamlit cho phép người dùng dễ dàng chia sẻ ứng dụng trực tuyến thông qua các liên kết chia sẻ, hoặc tích hợp trực tiếp vào các nền tảng như Heroku và AWS.

Streamlit mang lại tính linh hoạt và khả năng mở rộng cho người dùng, cho phép họ tùy chỉnh ứng dụng theo nhu cầu riêng Với các API và thành phần giao diện người dùng đa dạng, người dùng có thể phát triển các ứng dụng độc đáo, phù hợp với mục đích sử dụng cá nhân.

Với những đặc điểm nổi bật, Streamlit là sự lựa chọn lý tưởng để tôi phát triển một trang web trực tuyến, trực quan và dễ dàng tương tác cho dự án của mình.

Nhóm đã tận dụng mã nguồn mở DeepFace để tải và nạp mô hình RetinaFace và ArcFace đã được huấn luyện, đồng thời thực hiện các hàm liên quan.

PyCharm là một IDE mạnh mẽ dành cho ngôn ngữ lập trình Python, được phát triển bởi JetBrains, cung cấp nhiều tính năng hỗ trợ hiệu quả trong việc phát triển ứng dụng Python.

PyCharm là một môi trường phát triển Python toàn diện, cung cấp nhiều tính năng hữu ích như gỡ lỗi, kiểm tra cú pháp, tự động hoàn thành mã và gợi ý mã, giúp tăng năng suất và rút ngắn thời gian phát triển.

PyCharm là một công cụ phát triển Python đa nền tảng, hỗ trợ các hệ điều hành phổ biến như Windows, macOS và Linux, mang lại sự linh hoạt cho việc phát triển ứng dụng Python trong nhiều môi trường khác nhau.

PyCharm cung cấp tính năng tích hợp mạnh mẽ với các công cụ phát triển phổ biến như Git, Mercurial và SVN, giúp quản lý phiên bản mã nguồn hiệu quả.

Nó cũng hỗ trợ công cụ kiểm thử, phân tích mã nguồn và quản lý môi trường ảo (virtual environment) cho dự án Python

PyCharm là một công cụ hỗ trợ mã hóa và gỡ lỗi hiệu quả cho Python, cung cấp giao diện thân thiện giúp lập trình viên dễ dàng đặt điểm dừng, kiểm tra giá trị biến và theo dõi luồng thực thi Với tính năng gỡ lỗi từng bước, PyCharm giúp tìm và khắc phục lỗi một cách nhanh chóng và hiệu quả.

PyCharm là một công cụ mạnh mẽ trong quản lý dự án, cung cấp tính năng tạo và sắp xếp tập tin, quản lý thư viện và phụ thuộc, cùng với khả năng tạo tài liệu tự động Nó còn tích hợp với các công cụ hữu ích như Terminal, Database, Docker và hỗ trợ việc triển khai ứng dụng lên máy chủ từ xa, giúp tối ưu hóa quy trình phát triển phần mềm.

Các bước xây dựng phần mềm

Phần mềm nhận dạng khuôn mặt cho phép người dùng nhập ảnh hoặc chụp ảnh khuôn mặt để tìm kiếm thông tin liên quan Nếu khuôn mặt có trong hệ thống, phần mềm sẽ cung cấp thông tin chi tiết; nếu không, thông báo “This person is not found in database” sẽ hiển thị Hệ thống bao gồm hai tính năng chính: “Tìm kiếm thông tin bằng khuôn mặt” giúp tra cứu thông tin từ cơ sở dữ liệu và “Đăng ký thông tin nhận dạng” cho phép đăng ký hoặc cập nhật thông tin cho các khuôn mặt mới và đã có Ngoài ra, còn có một trang hướng dẫn sử dụng phần mềm để người dùng dễ dàng tiếp cận.

4.2.2 Thu thập và chuẩn bị dữ liệu

Dữ liệu về công nghệ nhận dạng khuôn mặt được thu thập từ nhiều nguồn khác nhau, bao gồm các bài báo chuyên ngành Một số bộ dữ liệu tiêu biểu được sử dụng trong nghiên cứu và phát triển trong lĩnh vực này.

Bộ dữ liệu "WIDER FACE" và "LFW" đều được đảm bảo tính đa dạng và chất lượng cao, với phân loại rõ ràng và đã được xử lý kỹ lưỡng trước khi sử dụng trong mô hình huấn luyện.

4.2.3 Xây dựng mô hình nhận diện khuôn mặt

Mô hình nhận diện khuôn mặt hiện nay được phát triển dựa trên hai công nghệ chính: RetinaFace và ArcFace RetinaFace chuyên huấn luyện dữ liệu để phát hiện khuôn mặt, sử dụng bộ dữ liệu WIDER FACE, trong khi ArcFace tập trung vào việc nhận dạng khuôn mặt với bộ dữ liệu LFW Cả hai mô hình này đều được công nhận là những công nghệ hàng đầu trong lĩnh vực nhận diện khuôn mặt, giúp nâng cao độ chính xác và hiệu suất trong quá trình nhận dạng.

4.2.4 Thiết kế giao diện người dùng và logic ứng dụng

Giao diện người dùng phải đáp ứng được một số yêu cầu sau:

• Tính Trực Quan và Dễ Sử Dụng: Giao diện cần dễ hiểu, trực quan, và dễ điều hướng

• Tính Nhất Quán: Màu sắc, font chữ, và layout nên nhất quán trên toàn bộ ứng dụng

• Phản Hồi Nhanh: Hệ thống nên cung cấp phản hồi nhanh chóng và rõ ràng đối với mọi hành động của người dùng

• Tối Ưu Hóa cho Các Thiết Bị: Giao diện nên phù hợp với nhiều loại màn hình và thiết bị

• Thân Thiện với Người Dùng: Cung cấp các hướng dẫn sử dụng, thông báo lỗi rõ ràng và trợ giúp khi cần thiết

Giao diện người dùng được kết nối một cách logic với ứng dụng thông qua Streamlit, đảm bảo rằng dữ liệu ảnh được truyền tải từ giao diện vào mô hình và kết quả được xử lý và trả về hiệu quả.

4.2.5 Kiểm thử phần và triển khai phần mềm

4.2.6 Bảo trì và cập nhật

Sau khi triển khai phần mềm, ta cần thường xuyên bảo trì và cập nhật hệ thống giúp phần mềm luôn được hoạt động bình thường.

Phân tích/ thiết kế phần mềm

Hình 4.1: Biểu đồ use case

4.3.2 Mô tả chi tiết use case nhận dạng

Bảng 4.1: Mô tả chi tiết use case nhận dạng

Tên use case Tìm kiếm thông tin bằng khuôn mặt

Tóm tắt Use case cho phép người dùng tìm kiếm thông tin dựa trên ảnh cho trước

Actor Người dùng Đảm bảo thành công Phải có ảnh và thông tin đã có trong cơ sở dữ liệu

Kích hoạt Người dùng nhấn vào nút ‘Find’

• Người dùng nhấp chọn “Browse files” hoặc “chụp ảnh” trên trang chủ để thực hiện hiển thị ảnh lên màn hình

Người dùng cần tích vào mục “Show advanced settings” để hiển thị các cài đặt mô hình Tại đây, họ có thể tùy chỉnh các thông số như “Align Face” để tối ưu hóa trải nghiệm sử dụng.

• Người dùng tích vào mục “Show json output” để hiển thị kết quả dạng file json

Người dùng chỉ cần nhấp vào nút “Find” để hệ thống tiến hành nhận diện khuôn mặt và truy xuất thông tin từ cơ sở dữ liệu Nếu khuôn mặt được tìm thấy trong cơ sở dữ liệu, thông tin chi tiết sẽ được hiển thị Ngược lại, nếu không có dữ liệu tương ứng, hệ thống sẽ thông báo: “This person is not found in database ”.

4.3.3 Mô tả chi tiết use case đăng ký

Bảng 4.2: Mô tả chi tiết use case đăng ký thông tin

Tên use case Đăng ký thông tin

Tóm tắt Use case cho phép người dùng điền các thông tin và ảnh để đăng ký thông tin mới

Actor Người dùng Đảm bảo thành công phải có ảnh và các thông tin cần được điền đầy đủ

Kích hoạt người dùng nhấp chọn nút “Đăng ký”

• Người dùng nhấp chọn “Browse files” trên trang chủ để thực hiện hiển thị ảnh lên màn hình:

Người dùng chỉ cần nhấp vào “Browse files” trên trang chủ, sau đó cửa sổ “Browse files” sẽ xuất hiện, cho phép họ chọn một hoặc nhiều ảnh và hiển thị chúng trên màn hình.

Người dùng điền thông tin cần thiết và nhấn nút “Đăng ký”, hệ thống sẽ gửi dữ liệu lên server và hiển thị thông báo “Đăng ký thông tin thành công” hoặc “Thông tin đăng ký đã có trong cơ sở dữ liệu Bạn có muốn cập nhật hay không?” Nếu người dùng chọn “Cập nhật”, hệ thống sẽ cập nhật thông tin và hiển thị thông báo “Cập nhật thông tin thành công” Ngược lại, nếu chọn “Không”, hệ thống sẽ không thực hiện cập nhật và hiển thị thông báo “Không cập nhật”.

4.3.4 Thiết kế giao diện a Giao diện trang nhận dạng khuôn mặt

Hình 4.2: Thiết kế giao diện trang nhận dạng khuôn mặt b Giao diện trang đăng ký thông tin nhận dạng

Hình 4.3: Thiết kế giao diện trang đăng ký nhận dạng

Kết quả đạt được

4.4.1 Trang nhận dạng khuôn mặt

Hình 4.4: Trang nhận dạng khuôn mặt

Khi sử dụng tính năng nhận dạng khuôn mặt, người dùng có hai lựa chọn để tải ảnh đầu vào: tải ảnh từ máy tính (hỗ trợ định dạng PNG, JPG, và JPEG) hoặc chụp ảnh trực tiếp từ camera Lưu ý rằng tính năng này chỉ cho phép một ảnh đầu vào.

Hình 4.5: Trang nhận dạng khuôn mặt

Sau khi ảnh đã được tải lên thành công, ảnh đầu vào sẽ được hiển thị

Trước khi thực hiện tìm kiếm thông tin trên trang nhận dạng khuôn mặt, người dùng có thể chọn ô “Hiển thị cài đặt nâng cao” để tùy chỉnh các cài đặt Người dùng có thể lựa chọn phép đo khoảng cách với ba tùy chọn: “cosine”, “euclidean” và “euclidean_l2”, cùng với việc thiết lập khoảng cách tối đa trong khoảng từ 0,1 đến 2.

Để hiển thị kết quả dưới dạng file JSON, người dùng cần chọn tùy chọn "Hiển thị đầu ra dạng json" Sau khi hoàn tất cài đặt hoặc để ở chế độ mặc định, người dùng chỉ cần nhấn nút "Find" để bắt đầu quá trình tìm kiếm.

Hình 4.7: Trang nhận dạng khuôn mặt

Khi tìm kiếm thành công, kết quả nhận dạng sẽ hiển thị dưới dạng hai cột: cột đầu tiên là hình ảnh khuôn mặt và cột thứ hai là thông tin của người liên quan Nếu trong khung hình có nhiều khuôn mặt, tất cả các khuôn mặt được phát hiện và nhận dạng sẽ được in ra lần lượt như trên.

Hình 4.8: Trang nhận dạng khuôn mặt

Khi người dùng chọn ô “Hiển thị đầu ra dạng json”, kết quả sẽ được hiển thị kèm theo thông tin dạng json ở đầu, bao gồm các dữ liệu quan trọng.

● x: toạ độ x của khung chứa khuôn mặt

● y: toạ độ y của khung chứa khuôn mặt

● w: độ rộng của khung chứa khuôn mặt

● h: độ dài của khung chứa khuôn mặt

● found: có hai giá trị True hoặc False, đã tìm thấy thông tin

● Full name: tên đầy đủ

● Date of birth: ngày sinh

● Place of origin: quê quán

● Place of residence: nơi thường trú

Nếu tìm kiếm thông tin không thành công, kết quả sẽ hiển thị thông báo "Không tìm thấy thông tin người này" thay vì thông tin cần thiết.

Hình 4.9: Trang nhận dạng khuôn mặt

4.4.2 Trang đăng ký thông tin nhận dạng

Hình 4.10: Trang đăng ký thông tin nhận dạng

Khi vào trang đăng ký thông tin nhận dạng, người dùng có thể tải lên một hoặc nhiều ảnh từ máy tính để làm ảnh đầu vào

Hình 4.11: Trang đăng ký thông tin nhận dạng

Sau khi tải lên, các ảnh sẽ được đưa vào mô hình phát hiện khuôn mặt, yêu cầu mỗi ảnh chỉ chứa một khuôn mặt duy nhất Những trường hợp không đáp ứng tiêu chí này sẽ nhận thông báo lỗi và không được chấp nhận làm ảnh đầu vào.

Hình 4.12: Trang đăng ký thông tin nhận dạng

Các trường hợp ảnh tải lên hợp lệ sẽ được hiển thị và coi như ảnh đầu vào của bước tiếp theo

Hình 4.13: Trang đăng ký thông tin nhận dạng

Khi người dùng có ít nhất một ảnh đầu vào, một form sẽ xuất hiện để họ điền thông tin đăng ký Sau khi hoàn tất việc nhập liệu, người dùng chỉ cần nhấn “Đăng ký” để lưu trữ thông tin vào hệ thống.

Hình 4.14: Trang đăng ký thông tin nhận dạng

Trường hợp thông tin còn thiếu, thông báo sẽ được hiện lên

Hình 4.15: Trang đăng ký thông tin nhận dạng

Khi thông tin đã được điền đầy đủ, hệ thống sẽ kiểm tra trong cơ sở dữ liệu xem thông tin của người dùng có tồn tại hay không dựa trên “mã định danh” Nếu chưa có, dữ liệu mới sẽ được thêm vào, bao gồm tất cả ảnh đầu vào hợp lệ và thông tin nhận dạng, kèm theo thông báo xác nhận.

Hình 4.16: Trang đăng ký thông tin nhận dạng

Nếu thông tin đã tồn tại, thông báo và hai lựa chọn sẽ được hiện lên

Hình 4.17: Trang đăng ký thông tin nhận dạng

Người dùng có thể chọn “Cập nhật” để ghi đè thông tin mới vào thông tin cũ trong database

Hình 4.18: Trang đăng ký thông tin nhận dạng

Với lựa chọn “Huỷ bỏ”, người dùng có thể bỏ qua cập nhật thông tin

Trong chương 4, nhóm đã hoàn thành việc phát triển hệ thống nhận dạng khuôn mặt trên nền tảng web bằng cách áp dụng các công cụ phù hợp và tuân thủ quy trình xây dựng phần mềm, cùng với việc phân tích và thiết kế phần mềm Hệ thống này được hình thành dựa trên những kiến thức và kinh nghiệm đã tích lũy được.

Ngày đăng: 12/01/2024, 21:39

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN