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

NHẬN DIỆN TUỔI VÀ GIỚI TÍNH QUA KHUÔN MẶT SỬ DỤNG MẠNG NƠRON TÍCH CHẬP

58 7 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 đề Nhận Diện Tuổi Và Giới Tính Qua Khuôn Mặt Sử Dụng Mạng Nơ-Ron Tích Chập
Tác giả Đinh Minh Đại, Hứa Như Duy
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 Đồ Án Chuyên Ngành
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 58
Dung lượng 2,3 MB

Cấu trúc

  • CHƯƠNG 1. TỔNG QUAN VỀ BÀI TOÁN (11)
    • 1.1. Giới thiệu về thị giác máy tính (11)
    • 1.2. Giới thiệu bài toán (14)
      • 1.2.1. Giới thiệu chung (14)
      • 1.2.2. Mô tả (15)
      • 1.2.3. Ứng dụng (17)
  • CHƯƠNG 2. MỘT SỐ KỸ THUẬT HIỆN CÓ CHO BÀI TOÁN NHẬN DẠNG GIỚI TÍNH VÀ TUỔI (19)
    • 2.1. Phương pháp học máy (19)
      • 2.1.1. Các kỹ thuật trích chọn đặc trưng (19)
      • 2.1.2. Các kỹ thuật phân lớp (22)
      • 2.1.3. Nhận xét (24)
    • 2.2. Phương pháp học sâu (CNN) (25)
      • 2.2.1. Nguồn gốc (26)
      • 2.2.2. Cấu trúc (26)
      • 2.2.3. Một số kiến trúc mạng CNN phổ biến (28)
      • 2.2.4. Ưu nhược điểm của mạng CNN trong bài toán nhận diện (32)
    • 2.3. Mô hình đề xuất cho bài toán (33)
      • 2.3.1. Sử dụng mạng Multi-label Resnet50V2 (34)
      • 2.3.2. Mô hình Multi-label CNN (34)
      • 2.3.3. Mô hình CNN có hai output (36)
  • CHƯƠNG 3. KẾT QUẢ THỰC NGHIỆM (37)
    • 3.1. Dữ liệu thực nghiệm (37)
    • 3.2. Chuẩn bị cho quá trình huấn luyện mô hình (38)
    • 3.3. Kết quả huấn luyện (40)
      • 3.3.1. Kết quả của mô hình Multi-label Resnet50V2 (40)
      • 3.3.2. Mô hình CNN có hai output (42)
      • 3.3.3. Mô hình CNN Multi-Label (45)
    • 3.4. Nhận xét chi tiết (47)
  • CHƯƠNG 4. SẢN PHẨM DEMO (49)
    • 4.1. Giới thiệu về công cụ Tkinter (49)
    • 4.2. Phân tích thiết kế hệ thống (51)
      • 4.2.1. Biểu đồ use case (51)
      • 4.2.2. Mô tả chi tiết các use case (51)
    • 4.3. Giao diện ứng dụng (53)
  • KẾT LUẬN (57)
  • TÀI LIỆU THAM KHẢO (58)

Nội dung

Thị giác máy tính và trí tuệ nhân tạo là hai lĩnh vực công nghệ đang trải qua sự biến đổi đột phá, đặc biệt trong thời kỳ số hóa mạnh mẽ và sự phát triển không ngừng của công nghệ thông tin. Sự hình thành của hai lĩnh vực đã mở ra một loạt các cơ hội mới và thách thức thú vị, ảnh hưởng mạnh mẽ đến nhiều khía cạnh của cuộc sống hàng ngày. Tính đến hiện nay, lĩnh vực thị giác máy tính đã tiến xa hơn bao giờ hết trong giải quyết các tác vụ, yêu cầu khác nhau như nhận diện người, nhận diện xe cộc, v.v. Không dừng lại ở đó, các công nghệ, kỹ thuật ngày càng được hoàn thiện nhằm cải tiến, giải quyết các yêu cầu của bài toán. Việc tiếp tục phát triển công nghệ tạo ra một cơ hội đột phá trong việc cải thiện cuộc sống và công việc, từ tăng cường an ninh cá nhân đến cải thiện quy trình sản xuất và loại bỏ công việc lặp đi lặp lại. Bài toán nhận diện tuổi và giới tính thông qua khuôn mặt là một bài toán không mới trong lĩnh vực thị giác máy tính. Bài toán xuất hiện và được nghiên cứu từ khá lâu, nhưng tiến bộ lớn của lĩnh vực thị giác máy tính trong những năm gần đây, đặc biệt sau sự phát triển của học sâu (deep learning) và đặc biệt là mạng nơron tích chập (CNN) đã mang lại kết quả vượt trội so với các phương pháp cũ. Điều này mở ra khả năng phát triển, ứng dụng rộng rãi hơn cho bài toán vào cuộc sống và cùng là trọng tâm của bảo bán cáo này

TỔNG QUAN VỀ BÀI TOÁN

Giới thiệu về thị giác máy tính

Thị giác máy tính tương tự như thị giác của con người, với việc tiếp nhận thông tin hình ảnh qua cảm biến và xử lý tại bộ phận trung tâm Tuy nhiên, thị giác con người có lợi thế nhờ tiến hóa sinh học và kinh nghiệm sống, giúp nhận diện và phân tích ngữ cảnh tốt hơn Mặc dù thị giác máy tính chưa đạt được độ nhạy bén như con người, nhưng nó lại vượt trội trong việc xử lý nhanh chóng và đếm đối tượng trong ảnh Sự phát triển của thị giác máy tính dựa trên những hiểu biết về thị giác con người, cho thấy rằng mặc dù còn hạn chế, nhưng máy tính có thể thực hiện một số tác vụ tốt hơn con người.

Hình ảnh 1.1 So sánh giữa thị giác máy tính và con người

Trong lĩnh vực thị giác máy tính, nhiều tác vụ được phát triển để đáp ứng các yêu cầu cụ thể, bao gồm phân loại ảnh, chọn vùng đối tượng, phát hiện đối tượng, phân đoạn ảnh và theo dõi Những tác vụ này có thể được thực hiện bằng nhiều kỹ thuật khác nhau, trong đó học sâu và mạng nơ-ron tích chập (CNNs) là hai phương pháp quan trọng nhất.

Hình ảnh 1.2 Một số tác vụ của thị giác máy tính

Tính đến nay, thị giác máy tính đã có những bước tiến vượt bậc và được ứng dụng rộng rãi trong nhiều lĩnh vực khác nhau Trong sản xuất, nó hỗ trợ giám sát chất lượng, quản lý từ xa và tự động hóa hệ thống Trong y tế, thị giác máy tính giúp phân tích hình ảnh X-ray và MRI một cách tự động, nâng cao độ chính xác trong chẩn đoán Trong lĩnh vực bảo mật, các hệ thống nhận dạng và phát hiện xâm nhập trở nên khả thi nhờ vào công nghệ này Hơn nữa, thị giác máy tính còn có vô số ứng dụng khác trong đời sống hàng ngày, góp phần cải thiện và nâng cao chất lượng cuộc sống.

Hình ảnh 1.3 Ví dụ về thị giác máy tính trong chẩn đoán

Mặc dù thị giác máy tính đã có những bước tiến đáng kể và được ứng dụng rộng rãi trong đời sống, nhưng vẫn còn nhiều thách thức cần giải quyết Hiện nay, giới hạn về chất bán dẫn đang trở nên rõ rệt, khiến hiệu năng của các vi xử lý thế hệ mới không tăng nhiều so với thế hệ cũ Thêm vào đó, việc thiếu hụt nguồn dữ liệu huấn luyện cả về chất lượng lẫn số lượng là một khó khăn lớn, vì thị giác máy tính cần rất nhiều dữ liệu để học tập hiệu quả Ngoài ra, còn tồn tại nhiều vấn đề khác liên quan đến tối ưu hóa thuật toán thu thập, lưu trữ và xử lý dữ liệu phục vụ cho quá trình huấn luyện Tóm lại, thị giác máy tính vẫn đối mặt với nhiều thách thức và cần những giải pháp toàn diện để phát triển.

Thị giác máy tính đang phát triển nhanh chóng với nhiều ứng dụng trong cuộc sống, mở ra cơ hội cải tiến và thúc đẩy công nghệ Sự nghiên cứu và phát triển liên tục hứa hẹn sẽ mang đến những ứng dụng thú vị hơn trong tương lai.

Giới thiệu bài toán

Bài toán nhận diện giới tính và tuổi qua hình ảnh khuôn mặt là một thách thức quan trọng trong lĩnh vực thị giác máy tính và trí tuệ nhân tạo Hệ thống nhận dạng cần xác định giới tính (nam hoặc nữ) và khoảng tuổi của cá nhân dựa trên đặc điểm khuôn mặt.

Tuổi và giới tính là hai yếu tố quan trọng trong giao tiếp xã hội và trải nghiệm cá nhân Việc xác định tuổi và giới tính từ hình ảnh khuôn mặt có nhiều ứng dụng tiềm năng, bao gồm việc đảm bảo độ tuổi phù hợp cho nội dung truyền hình và cung cấp dịch vụ cá nhân hóa trong mua sắm trực tuyến.

Việc tự động xác định giới tính và tuổi tác qua hình ảnh khuôn mặt có thể nâng cao an ninh tại sân bay, ngân hàng và cơ sở sản xuất Bên cạnh đó, ứng dụng này còn hỗ trợ trong lĩnh vực quảng cáo và tối ưu hóa trải nghiệm người dùng Cụ thể, việc nhận diện đối tượng là nam hay nữ và độ tuổi của họ giúp cá nhân hóa nội dung quảng cáo trực tuyến, từ đó tạo ra trải nghiệm mua sắm tốt hơn cho người tiêu dùng.

Hiện nay, nhận dạng giới tính và tuổi đã trở thành một chủ đề thu hút sự quan tâm lớn trong cộng đồng nghiên cứu Sự phát triển của công nghệ học máy và xử lý hình ảnh, đặc biệt là sự gia tăng của mạng neural tích chập (CNN) và Vision Transformer, đã làm cho việc giải quyết bài toán này trở nên khả thi hơn.

Các mô hình CNN được thiết kế đặc biệt để nhận diện các đặc điểm quan trọng trong hình ảnh khuôn mặt, giúp tự động học cách phân loại giới tính và độ tuổi.

Bảng 1-1 Kết quả của một vài mô hình cho bài toán

Mô hình Độ chính xác (5-fold) Năm

Quyền riêng tư là một yếu tố quan trọng cần được xem xét trong việc thu thập và sử dụng thông tin về giới tính và tuổi của người dùng Việc sử dụng thông tin này mà không có sự đồng ý có thể dẫn đến những vấn đề nghiêm trọng về bảo mật và quyền riêng tư của người dùng.

1.2.2 Mô tả Đối với các bài toán phân lớp, dữ liệu đầu vào phục vụ cho mục đích phân lớp là đặc trưng của đối tượng và kết quả của bài toán phân lớp phải thuộc vào một trong các lớp đã được định nghĩa trước được định nghĩa trước Các đặc trưng được sử dụng để phân biệt giữa các đối tượng với nhau phải là các đặc trưng mang nhiều thông tin quan trọng trong quá trình phân lớp Các lớp cần được phân lớp phải rõ ràng và không chồng chéo, điều này đảm bảo rằng một mẫu dữ liệu cụ thể chỉ thuộc vào một lớp duy nhất

Bài toán nhận dạng giới tính và tuổi nhằm mục đích xác định chính xác giới tính và dự đoán tuổi của một người dựa trên hình ảnh khuôn mặt Cụ thể, khi đầu vào là một bức ảnh khuôn mặt, mô hình sẽ cung cấp kết quả đầu ra là giới tính và độ tuổi của người trong ảnh.

Hình ảnh 1.4 Ví dụ về mô hình CNN được dùng vào bài toán

Mô hình sử dụng ảnh màu kích thước 128x128 chứa gương mặt của một người Nếu ảnh không đạt kích thước này, cần điều chỉnh kích thước, nhưng việc này có thể làm mất thông tin quan trọng về đối tượng, ảnh hưởng đến kết quả phân lớp.

Mô hình đầu ra cung cấp một vector thể hiện xác suất dự đoán, trong đó giá trị 𝑦 𝑔𝑒𝑛𝑑𝑒𝑟 chỉ ra khả năng một người là nam hoặc nữ, với 0 tương ứng với nam và 1 tương ứng với nữ Bên cạnh đó, có 5 giá trị 𝑦 𝑎𝑔𝑒, mỗi giá trị 𝑦 𝑎𝑔𝑒,𝑖 phản ánh xác suất người trong ảnh thuộc vào các nhóm tuổi cụ thể: 0-15, 16-30, 31-45, 46-60 và trên 60.

Việc ứng dụng nhận diện tuổi và giới tính thông qua khuôn mặt có thể được ứng dụng trong các quá trình liên quan đến:

Quản lý biên giới hiệu quả có thể được cải thiện nhờ việc sử dụng công nghệ nhận diện khuôn mặt để dự đoán giới tính và tuổi của người dân Các cơ quan an ninh và thực thi pháp luật có thể áp dụng công nghệ này trong các tình huống như kiểm tra an ninh sân bay và xác định danh tính tại các điểm biên giới.

Khi mua hàng có độ tuổi hạn chế, như rượu và thuốc lá, việc xác minh tuổi tác của người mua trở nên cần thiết Trong trường hợp này, hệ thống dự đoán tuổi từ hình ảnh gương mặt có thể được sử dụng để kiểm tra tuổi tác của người mua, giúp đảm bảo tuân thủ các quy định về độ tuổi.

Quản lý sự kiện và giải trí là yếu tố quan trọng trong các sự kiện lớn như hội chợ và concert Hệ thống dự đoán tuổi và giới tính có thể tối ưu hóa trải nghiệm tham gia của khách hàng bằng cách dự đoán sở thích và mục tiêu quảng cáo, từ đó nâng cao sự hài lòng và hiệu quả của sự kiện.

Doanh nghiệp và nhà quảng cáo có thể khai thác thông tin về giới tính và độ tuổi của người tiêu dùng để thiết kế các chiến dịch tiếp thị và sản phẩm phù hợp, dựa trên những dự đoán về nhu cầu và sở thích của họ.

MỘT SỐ KỸ THUẬT HIỆN CÓ CHO BÀI TOÁN NHẬN DẠNG GIỚI TÍNH VÀ TUỔI

Phương pháp học máy

Các phương pháp học máy truyền thống thường bao gồm hai bước chính: trích chọn đặc trưng và thiết kế bộ phân lớp Trích chọn đặc trưng là quá trình lấy ra các thông tin quan trọng và có khả năng phân loại cao từ dữ liệu Trong khi đó, thiết kế bộ phân lớp liên quan đến việc chọn lựa thuật toán phân lớp phù hợp cho từng bài toán cụ thể.

2.1.1 Các kỹ thuật trích chọn đặc trưng

Trong học máy, có nhiều kỹ thuật trích chọn đặc trưng từ ảnh, mỗi kỹ thuật sẽ thu được những đặc trưng khác nhau Việc lựa chọn kỹ thuật trích chọn đặc trưng phù hợp là rất quan trọng để đạt được kết quả tốt trong quá trình phân tích Dưới đây là một số kỹ thuật trích chọn đặc trưng hiệu quả.

• Histogram of Oriented Gradients (HOG)

HOG (Histogram of Oriented Gradients) là một kỹ thuật trích xuất đặc trưng từ ảnh, thường được áp dụng trong nhận dạng đối tượng trong lĩnh vực thị giác máy tính và xử lý hình ảnh Phương pháp này đếm số lần xuất hiện của các hướng cạnh trong các vùng nhỏ của ảnh, giúp nhận diện các cạnh và hình dạng HOG sử dụng thông tin về sự phân bố của cường độ gradient và hướng biên để mô tả các đối tượng cục bộ, từ đó nâng cao khả năng nhận diện trong các bài toán hình ảnh.

Hình ảnh 2.1 Minh họa thuật toán HOG

HOG (Histogram of Oriented Gradients) là một phương pháp mạnh mẽ trong việc mô tả các đặc trưng hình dạng và cạnh của hình ảnh Phương pháp này không yêu cầu dữ liệu huấn luyện, giúp nó có khả năng tổng quát hóa tốt trong việc nhận dạng đối tượng.

HOG có nhược điểm trong việc hoạt động hiệu quả ở môi trường có sự biến đổi ánh sáng mạnh hoặc nhiễu cao, đồng thời không thể xử lý các biến đổi phi tuyến tính lớn của hình ảnh.

Local Binary Patterns (LBP) là một phương pháp rút trích đặc trưng trong xử lý ảnh, cho phép nhận diện các đặc điểm như cạnh, vùng kết cấu và đối tượng trong hình ảnh Sau khi rút trích, các đặc trưng sẽ được chọn lọc và thu gọn thành vector đặc trưng Vector này có thể được sử dụng trong các mô hình học máy để thực hiện các nhiệm vụ học tập và phân loại.

Hình ảnh 2.2 Minh họa LBP

LBP (Local Binary Patterns) là một phương pháp mạnh mẽ để mô tả các đặc trưng textura trong hình ảnh, giúp nhận diện đối tượng dựa trên textura một cách hiệu quả Phương pháp này không cần dữ liệu huấn luyện, cho phép nó tổng quát hóa tốt trong việc nhận dạng các đối tượng khác nhau.

Nhược điểm của LBP là nó không thể mô tả các đặc trưng hình dạng và cạnh của đối tượng, mà chủ yếu tập trung vào textura Bên cạnh đó, các tham số như kích thước ô và số điểm ảnh lân cận cần được điều chỉnh để phù hợp với từng ứng dụng cụ thể.

Eigenfaces là kỹ thuật trích xuất đặc trưng từ ảnh khuôn mặt, ứng dụng trong nhận dạng khuôn mặt trong thị giác máy tính và xử lý hình ảnh Kỹ thuật này sử dụng phân tích thành phần chính (PCA) để giảm kích thước dữ liệu ảnh, tạo ra không gian đặc trưng mới với mỗi đặc trưng là tổ hợp tuyến tính của các ảnh khuôn mặt gốc.

Hình ảnh 2.3 Minh họa Eignfaces

Eigenfaces là một phương pháp mạnh mẽ và hiệu quả trong nhận dạng khuôn mặt, giúp tối ưu hóa quá trình nhận diện Phương pháp này giảm chiều dữ liệu và loại bỏ thông tin không cần thiết, từ đó nâng cao hiệu suất nhận dạng.

Eigenfaces có một số nhược điểm, bao gồm việc không phân biệt được các chi tiết nhỏ trên khuôn mặt như mắt, miệng và mũi Phương pháp này cũng yêu cầu một tập dữ liệu huấn luyện lớn và đa dạng để đạt hiệu suất tốt nhất Ngoài ra, Eigenfaces rất nhạy cảm với sự thay đổi ánh sáng và góc nhìn, điều này có thể ảnh hưởng đến độ chính xác của nhận diện khuôn mặt.

Kết quả đầu ra của các kỹ thuật sẽ bao gồm các đặc trưng có trong ảnh, với mỗi kỹ thuật cung cấp những đặc trưng riêng biệt Những đặc trưng này sẽ được sử dụng làm dữ liệu đầu vào cho các kỹ thuật phân lớp.

2.1.2 Các kỹ thuật phân lớp

SVM (Support Vector Machine) là một kỹ thuật học máy nổi bật được phát triển bởi Vapnik và các cộng sự vào những năm 1990, chuyên về phân loại tuyến tính Phương pháp này tìm kiếm siêu mặt phẳng tối ưu để phân chia hai lớp dữ liệu, tối đa hóa khoảng cách đến các điểm dữ liệu gần nhất, gọi là vector hỗ trợ Để giải quyết các bài toán phân loại phi tuyến, SVM sử dụng hàm nhân (kernel) nhằm ánh xạ dữ liệu vào không gian nhiều chiều hơn Ưu điểm của SVM bao gồm khả năng xử lý tốt với dữ liệu nhiễu, ít bị ảnh hưởng bởi số chiều của dữ liệu, và khả năng tùy biến hàm nhân theo nhu cầu Tuy nhiên, SVM cũng gặp phải một số nhược điểm như khó khăn trong việc chọn tham số tối ưu cho hàm nhân, hạn chế trong việc mở rộng cho các bài toán phân loại nhiều lớp, cùng với yêu cầu cao về tài nguyên tính toán và bộ nhớ.

Hình ảnh 2.4 Minh họa SVM

KNN (K-Nearest Neighbors) là một thuật toán học máy phân loại dựa trên khoảng cách, được phát triển bởi Thomas Cover và Peter Hart vào năm 1968 Thuật toán này không yêu cầu huấn luyện mô hình trước, mà chỉ cần lưu trữ tập dữ liệu huấn luyện để so sánh với dữ liệu mới, từ đó đưa ra nhãn KNN có nhiều ưu điểm như tính đơn giản, dễ hiểu, linh hoạt và khả năng mở rộng số lớp, phù hợp với nhiều loại dữ liệu Tuy nhiên, KNN cũng có nhược điểm như tiêu tốn nhiều bộ nhớ và thời gian, khó xác định giá trị K phù hợp, và nhạy cảm với nhiễu cũng như dữ liệu không cân bằng.

Hình ảnh 2.5 Minh họa KNN

Phương pháp học sâu (CNN)

Học sâu là một phương pháp tiên tiến hơn so với học máy truyền thống, thông qua việc bổ sung các lớp trong mô hình Phương pháp này ra đời nhằm khắc phục những hạn chế của việc trích chọn đặc trưng thủ công trong học máy.

Cụ thể hơn, các đặc trưng sẽ được trích chọn một cách tự động tại các lớp trong mô hình học sâu, không giống như phương pháp học máy

Kỹ thuật tích chập là một phương pháp điển hình để trích chọn đặc trưng trong ảnh Mô hình học sâu sử dụng lớp tích chập được gọi là mạng nơ-ron tích chập (CNN).

Mạng nơ-ron tích chập (CNN) là một trong những mô hình học sâu phổ biến và có ảnh hưởng lớn trong lĩnh vực thị giác máy tính CNN được áp dụng rộng rãi trong các bài toán như nhận diện hình ảnh, phân tích video, hình ảnh MRI, cũng như trong lĩnh vực xử lý ngôn ngữ tự nhiên, và hầu hết các ứng dụng này đều đạt hiệu quả cao.

CNN có một lịch sử lâu dài, bắt đầu từ khi mô hình được giới thiệu bởi một nhà khoa học máy tính Nhật Bản vào năm 1980 Đến năm 1998, Yan LeCun đã lần đầu tiên huấn luyện mô hình CNN sử dụng thuật toán backpropagation để giải quyết bài toán nhận dạng chữ viết tay.

Năm 2012, nhà khoa học máy tính người Ukraine Alex Krizhevsky đã phát triển mô hình CNN (AlexNet) và ứng dụng GPU để tăng tốc quá trình huấn luyện deep nets, đạt được vị trí top 1 trong cuộc thi Computer Vision ImageNet, với độ lỗi phân lớp top 5 giảm hơn 10% so với các mô hình truyền thống trước đó Sự kiện này đã tạo ra một làn sóng mạnh mẽ trong việc áp dụng deep CNN cùng với GPU để giải quyết nhiều vấn đề trong lĩnh vực Computer Vision.

Mạng CNN là một mô hình phổ biến trong việc nhận dạng và phân loại hình ảnh, đặc biệt là trong lĩnh vực xác định và nhận dạng khuôn mặt CNN được thiết kế để giúp các mô hình học máy tự động trích xuất và hiểu các đặc trưng từ dữ liệu hình ảnh một cách hiệu quả.

Hình ảnh 2.6 Minh họa mô hình CNN

Mạng CNN bao gồm ba loại lớp chính: lớp tích chập, lớp gộp và lớp kết nối đầy đủ Các lớp này được sắp xếp theo một thứ tự nhất định, tạo thành kiến trúc mạng CNN hiệu quả.

Lớp tích chập (convolutional layer) là thành phần quan trọng nhất trong mạng CNN, chịu trách nhiệm trích xuất đặc trưng từ hình ảnh Lớp này sử dụng bộ lọc (filter) hay kernel để quét qua toàn bộ hoặc một vùng nhỏ của ảnh, thực hiện phép tích chập (convolution) giữa bộ lọc và ảnh Kết quả của quá trình này là ma trận mới gọi là feature map, phản ánh các đặc trưng được phát hiện bởi bộ lọc.

Lớp gộp (pooling layer) là thành phần quan trọng trong mạng nơ-ron, giúp giảm kích thước của các feature map, từ đó giảm số lượng tham số và ngăn ngừa hiện tượng quá khớp Lớp này sử dụng hàm gộp để tổng hợp thông tin từ một vùng nhỏ của feature map thành một giá trị duy nhất Trong số các loại hàm gộp, max pooling là một trong những phương pháp phổ biến nhất, lấy giá trị lớn nhất trong một vùng nhỏ Các tham số quan trọng của lớp gộp bao gồm kích thước vùng gộp, bước nhảy và đệm.

Lớp kết nối đầy đủ (fully connected layer) là lớp cuối cùng trong mạng CNN, nơi thực hiện phân lớp hoặc hồi quy dựa trên các đặc trưng đã được trích xuất Lớp này sử dụng mạng nơ-ron truyền thống, với mỗi nơ-ron kết nối với tất cả nơ-ron của lớp trước Nó có thể bao gồm nhiều lớp ẩn và một lớp đầu ra, với số lượng nơ-ron ở lớp đầu ra tương ứng với số lớp hoặc giá trị cần dự đoán Các hàm kích hoạt như sigmoid, tanh, ReLU và softmax được áp dụng để tính toán giá trị đầu ra của các nơ-ron.

2.2.3 Một số kiến trúc mạng CNN phổ biến a Mạng nơ ron tích chập sâu AlexNet (Deep Convolutional Neural Networks)

Mạng AlexNet, được giới thiệu vào năm 2012 và đặt theo tên Alex Krizhevsky, là một bước đột phá trong phân loại hình ảnh ImageNet Với cấu trúc gồm 8 tầng mạng nơ-ron tích chập, AlexNet đã giành chiến thắng ấn tượng tại cuộc thi ImageNet Large Scale Visual Recognition Challenge cùng năm Mạng này đã chứng minh rằng các đặc trưng học được có thể vượt trội hơn so với các đặc trưng thiết kế thủ công, thay đổi quan niệm trong nghiên cứu thị giác máy tính Cấu trúc của AlexNet bao gồm năm tầng tích chập, hai tầng ẩn kết nối đầy đủ và một tầng đầu ra kết nối đầy đủ, sử dụng hàm kích hoạt ReLU thay vì sigmoid.

Cấu trúc của mạng AlexNet được minh họa thông qua hình dưới đây:

Hình ảnh 2.7 Kiến trục mạng AlaxNet (Nguồn: https://www.mdpi.com/2072-4292/9/8/848)

Mặc dù AlexNet đã bị các kiến trúc tiên tiến hơn vượt qua, nó vẫn đóng vai trò quan trọng trong sự phát triển của mạng nơ-ron sâu hiện nay Ý tưởng sử dụng các khối trong mạng VGG, được đặt theo tên nhóm VGG thuộc Đại học Oxford, đã cách mạng hóa cách xây dựng các mạng này Việc áp dụng các framework học sâu hiện đại để tạo ra các cấu trúc lặp lại trở nên dễ dàng hơn Khối cơ bản của mạng tích chập cổ điển bao gồm một chuỗi các tầng tích chập với phần đệm để duy trì độ phân giải, một tầng phi tuyến như ReLU, và một tầng gộp cực đại Mỗi khối VGG bao gồm các tầng tích chập liên tiếp, kết thúc bằng một tầng gộp cực đại để giảm chiều không gian.

Hình ảnh 2.8 Kiến trúc mạng VGG (Nguồn: Hình ảnh được trích trong tài liệu tham khảo [1])

Việc áp dụng các khối trong thiết kế mạng giúp định nghĩa mạng bằng mã nguồn ngắn gọn và tối ưu hóa quá trình xây dựng các mạng phức tạp Mạng phần dư ResNet (Residual Networks) là một ví dụ điển hình cho phương pháp này.

Hình ảnh 2.9 Kiến trúc mạng ResNet (Nguồn: https://trituenhantao.io/kien-thuc/resnet-mang-hoc-sau-dung-nghia/)

ResNet, hay mạng nơ ron dư, đã thu hút sự chú ý từ năm 2012 sau cuộc thi LSVRC2012 và nhanh chóng trở thành một công nghệ phổ biến trong lĩnh vực thị giác máy Với khả năng huấn luyện hiệu quả hàng trăm đến hàng nghìn lớp nơ ron, ResNet đã mở ra những khả năng mới cho nghiên cứu và ứng dụng trong học sâu.

Nhờ vào khả năng biểu diễn mạnh mẽ của ResNet, hiệu suất của nhiều ứng dụng thị giác máy, bao gồm cả phân loại hình ảnh, đã được cải thiện đáng kể Các ứng dụng phát hiện đồ vật và nhận dạng khuôn mặt là những ví dụ tiêu biểu Ý tưởng cốt lõi của ResNet là sử dụng kết nối tắt đồng nhất để vượt qua một hoặc nhiều lớp, với mỗi khối như vậy được gọi là residual block.

Hình ảnh 2.10 Kiến trúc Residual

Mô hình đề xuất cho bài toán

Như đã trình bày trong phần mô tả dữ liệu đầu vào và đầu ra thuộc chương

Bản báo cáo đầu ra mong muốn là một vector, trong đó giá trị đầu tiên thể hiện giới tính của người trong ảnh, và các giá trị tiếp theo biểu thị khoảng tuổi Do đó, thiết kế mô hình sẽ có hai lựa chọn.

₋ Sử dụng 2 mô hình xử lý 2 vấn đề riêng

₋ Sử dụng 1 mô hình để xử lý 2 vấn đề

Khi lựa chọn phương án đầu tiên, kết quả của hai mô hình sẽ được kết hợp để tạo thành một vector kết quả Ngược lại, nếu chọn phương án thứ hai, mô hình sẽ xử lý bài toán theo dạng phân loại đa nhãn (multi-label classification).

2.3.1 Sử dụng mạng Multi-label Resnet50V2

Mạng ResNet50 là một kiến trúc mạng nơ-ron với 50 lớp So với ResNet50, phiên bản ResNet50V2 được cải tiến với việc thêm lớp Batch Normalization, giúp nâng cao hiệu suất và rút ngắn thời gian huấn luyện mô hình.

Bắt đầu từ mô hình ResNet gốc, chúng tôi loại bỏ lớp Fully Connected, đồng thời giữ lại các lớp trích chọn đặc trưng trong mô hình Sau đó, chúng tôi bổ sung lớp Fully Connected cùng với các lớp khác như Dropout và Global Average Pooling để giải quyết bài toán một cách hiệu quả.

Mô hình Multi-label Resnet, như được minh họa trong hình ảnh 2.11, là một ví dụ điển hình của việc áp dụng kỹ thuật transfer learning, giúp tiết kiệm thời gian trong quá trình thiết kế mô hình.

2.3.2 Mô hình Multi-label CNN

Việc áp dụng một mô hình đã có và điều chỉnh nó để phù hợp với nhu cầu cụ thể là giải pháp hiệu quả cho vấn đề hiện tại Mô hình gốc được đề xuất đã được trình bày trong bài báo.

[1], được minh họa như hình bên dưới:

Hình ảnh 2.12 Mô hình CNN tham khảo (Nguồn: Hình ảnh được trích dẫn từ tài liệu tham khảo [1])

Trong Hình 2.12, các ô trong từng khôi có nghĩa là:

- ACT: Lớp Activation – hàm kịch hoạt

Trong đó, các lớp Activation trong mô hình trên đề sử dụng hàm ReLu, Max pooling với size là 2x2, stride là (2,2), Dropout với tỉ lệ 0.5

Mô hình ban đầu đã được điều chỉnh bằng cách loại bỏ một số lớp Dropout và thêm lớp Global Average Pooling (GAP) vào khối Conv4 Đối với lớp Fully Connected, nó đã được thay thế bằng một lớp Fully Connected với 6 nơ-ron và sử dụng hàm kích hoạt sigmoid.

Lớp GAP giúp giảm chiều dữ liệu và độ phức tạp của mô hình, đồng thời vẫn giữ được các đặc trưng quan trọng và ngăn ngừa hiện tượng over-fitting.

Hình ảnh 2.13 Minh họa mô hình Multi-label CNN

2.3.3 Mô hình CNN có hai output

Dựa trên mô hình CNN Multi-label, mô hình này sẽ cung cấp hai kết quả đầu ra: một giá trị dự đoán tuổi và một vector thể hiện khoảng tuổi.

Hình ảnh 2.14 Minh họa mô hình CNN có hai output

Khi đã có các mô hình đề xuất ở trên, tiến hành quá trình huấn luyện mô hình và đánh giá mô hình nhằm chọn ra mô hình tốt nhất.

KẾT QUẢ THỰC NGHIỆM

Dữ liệu thực nghiệm

Bộ dữ liệu UTKFace là một tập hợp lớn về mặt người, bao gồm hơn 23,000 ảnh màu kích thước 200x200 Mỗi ảnh trong bộ dữ liệu này chứa một khuôn mặt người và được chụp từ nhiều góc độ, với các biểu cảm và độ sáng khác nhau Nhãn của từng ảnh được thể hiện ngay trong tên file, theo định dạng (tuổi)_(giới tính)_(chủng tộc)_(ngày tháng).jpg.

Hình ảnh 3.2 Biểu đồ cột thể hiện số mẫu theo giới tính

Hình ảnh 3.3 Biểu đồ cột thể hiện số mẫu theo tuổi

Chuẩn bị cho quá trình huấn luyện mô hình

Để sử dụng bộ dữ liệu cho bài toán, việc xử lý nhãn là rất quan trọng Bộ dữ liệu ban đầu có nhãn tuổi cụ thể, nhưng cần được điều chỉnh để phù hợp với khoảng tuổi đã định sẵn.

Hình ảnh 3.4 Biểu đồ cột thể hiện số mẫu theo khoảng tuổi

Trong bộ dữ liệu, số mẫu ở các khoảng tuổi 16 – 30 và 31 – 45 chiếm ưu thế, dẫn đến mất cân bằng dữ liệu Để khắc phục, cần áp dụng trọng số cho các lớp, giúp mô hình chú ý hơn đến các lớp có trọng số lớn Cụ thể, trọng số cho từng lớp có thể là (2, 1, 1.5, 2, 2.5), dựa trên tỷ lệ giữa tổng số mẫu và số mẫu trong từng lớp Để đảm bảo kết quả khách quan, kỹ thuật K-Fold sẽ được sử dụng, chia tập huấn luyện thành K tập và lần lượt chọn một tập để kiểm định mô hình Với 23,708 mẫu dữ liệu ban đầu, tập dữ liệu sẽ được chia thành tập train và tập test theo tỷ lệ 0.2 Tập train sẽ được chia thành 5 tập nhỏ hơn, trong đó 1 tập được dùng để kiểm định Kết quả là tập test có 4,741 mẫu, tổng tập train có 18,967 mẫu và mỗi fold có 3,793 mẫu.

Để xử lý vấn đề tràn RAM khi làm việc với tập dữ liệu UTKFace lớn, cần áp dụng kỹ thuật generator trong quá trình huấn luyện và kiểm tra mô hình.

Kết quả huấn luyện

Kết quả huấn luyện của các mô hình sẽ được đánh giá dựa trên các chỉ số loss và accuracy trong cả quá trình train và validate, với các tham số được thiết lập là epoch = 50 và batch_size = 32.

Sau khi hoàn thành quá trình kiểm định Kfold, các mô hình sẽ được huấn luyện lại trên toàn bộ tập dữ liệu huấn luyện với các tham số tương tự như trong quá trình Kfold Điều này giúp đánh giá các chỉ số hiệu suất như accuracy, precision, f1-score và nhiều độ đo khác.

3.3.1 Kết quả của mô hình Multi-label Resnet50V2

Hình ảnh 3.5 Kết quả loss trong quá trình huấn luyện của Resnet

Hình ảnh 3.6 Kết quả accuracy trong quá trình huấn luyện của mô hình Resnet

Mô hình Multi-label Resnet thể hiện sự không ổn định trong bài toán, như được minh chứng qua Hình 3.5 và Hình 3.6 Mặc dù giá trị loss có xu hướng giảm dần trong quá trình huấn luyện, nhưng lại bắt đầu tăng từ epoch 20 trong tập validate Đồng thời, giá trị accuracy cũng không cải thiện so với giá trị loss, với sự dao động hỗn loạn trong tập validate.

3.3.2 Mô hình CNN có hai output

Hình ảnh 3.7 Kết quả loss trong quá trình huấn luyện của mô hình CNN có hai output

Dựa vào Hình 3.8, mô hình cho thấy xu hướng giảm ổn định mà không gặp hiện tượng over-fitting Đặc biệt, fold 1 có giá trị loss thấp hơn trong tập validate so với các fold khác, cho thấy fold 1 chứa dữ liệu không tốt, gây nhiễu cho mô hình.

Hình ảnh 3.8 Kết quả accuracy cho thuộc tính giới tính trong quá trình huấn luyện của mô hình CNN có hai output

Mô hình đã thể hiện sự ổn định trong việc dự đoán giới tính, với kết quả từ Hình 3.9 cho thấy cần 25 epoch để đạt được trung bình 85% trên tập validate.

Hình ảnh 3.9 Kết quả accuracy cho thuộc tính khoảng tuổi trong quá trình huấn luyện của mô hình CNN có hai output

Kết quả dự đoán khoảng tuổi của mô hình CNN cho thấy hai đầu ra có xu hướng tăng, mặc dù có sự dao động mạnh Hiện tượng này được quan sát thấy ở tất cả các fold trong quá trình huấn luyện mô hình.

3.3.3 Mô hình CNN Multi-Label

Hình ảnh 3.10 Kết quả loss trong quá trình huấn luyện của mô hình Multi-label CNN

Hình ảnh 3.11 Kết quả accuracy trong quá trình huấn luyện của mô hình Multi-label

Từ Hình 3.10 và Hình 3.11, có thể thấy mô hình Multi-label CNN có xu hướng tăng và ổn định sơ với mô hình Multi-label Resnet.

Nhận xét chi tiết

Quá trình đánh giá mô hình dựa trên các tiêu chí như accuracy, precision, recall, f1-score và số tham số của mô hình Đây là những tiêu chí cơ bản để đánh giá và so sánh hiệu suất giữa các mô hình Mô hình có kết quả tốt nhất sẽ được lựa chọn để phát triển sản phẩm demo.

Bảng 3-1 Bảng kết quả accuracy cho các mô hình

Mô hình Độ chính xác giới tính (%) Độ chính xác khoảng tuổi (%) Training set Testing set Training set Testing set

Dựa vào bảng 3-1, mô hình multi-label cho thấy hiệu suất kém hơn so với mô hình multi-output Điều này không gây ngạc nhiên, vì mô hình multi-output có các lớp Fully connected độc lập, giúp giảm thiểu sự ảnh hưởng lẫn nhau giữa các giá trị đầu ra.

Bảng 3-2 Bảng kết quả micro precision, recall, f1-score cho các mô hình trên tập test

Precision Recall F1-score Precision Recall F1-score

Kết hợp với kết quả của Bảng 3-1 và Bảng 3-2, kết quả của mô hình CNN

Hai mô hình đầu ra nổi bật hơn so với các mô hình khác Kết quả về thuộc tính giới tính chỉ cao hơn một chút so với các mô hình khác, nhưng kết quả về độ tuổi lại vượt trội hơn hẳn.

Bảng 3-3 Bảng các tham số mô hình

Mô hình Số tham số

Dựa vào Bảng 3-3, mô hình CNN 2 output là lựa chọn hợp lý do kết quả cao hơn so với các mô hình khác, đặc biệt trong việc dự đoán khoảng tuổi Hơn nữa, số tham số của mô hình này ít hơn nhiều so với mô hình Multi-label Resnet và chỉ chênh lệch không đáng kể so với mô hình Multi-label CNN.

SẢN PHẨM DEMO

Giới thiệu về công cụ Tkinter

Tkinter là thư viện tích hợp sẵn trong Python, chuyên phát triển giao diện người dùng đồ họa (GUI) Dựa trên toolkit đồ họa Tk, Tkinter mang đến phương pháp đơn giản và hiệu quả để tạo ra các ứng dụng với giao diện đồ họa trực quan và dễ sử dụng.

Dù đã được phát hành vào nhiều năm trước, nhưng tkinter đã sớm trở nên nổi tiếng nhờ những điểm mạnh của mình:

Tkinter là một thư viện lập trình dễ học và sử dụng, nổi bật với cú pháp đơn giản, điều này khiến nó trở thành lựa chọn lý tưởng cho những người mới bắt đầu trong lĩnh vực lập trình.

Tkinter là một thư viện tích hợp sẵn trong Python, thuộc bộ thư viện tiêu chuẩn, không cần cài đặt bổ sung Điều này giúp giảm độ phức tạp và đảm bảo mã nguồn có thể chạy trên nhiều nền tảng mà không cần thay đổi.

Tkinter cung cấp sự đa dạng trong việc xây dựng giao diện người dùng với nhiều loại widget như nút, ô văn bản, hộp thoại và menu Điều này cho phép người dùng tạo ra những giao diện phong phú và đa dạng, đáp ứng nhiều nhu cầu khác nhau.

Ứng dụng sử dụng Tkinter có khả năng tương thích đa nền tảng, cho phép chạy trên nhiều hệ điều hành khác nhau mà không cần thay đổi mã nguồn, từ đó nâng cao tính di động và linh hoạt cho người dùng.

Lợi ích của việc sử dụng Tkinter trong python:

• Phát triển nhanh chóng: Tkinter giúp người phát triển nhanh chóng xây dựng giao diện người dùng mà không cần nhiều đoạn mã phức tạp

Tkinter là giải pháp lý tưởng cho các ứng dụng nhỏ và trung bình, mang đến khả năng tạo giao diện người dùng thân thiện một cách hiệu quả và mạnh mẽ.

Tkinter được hỗ trợ bởi một cộng đồng lớn các nhà phát triển Python, mang lại nhiều tài nguyên phong phú như tài liệu, ví dụ và hỗ trợ trực tuyến.

• Sự kết hợp với python: Tkinter tích hợp tốt với Python, cho phép bạn kết hợp lập trình hàm và lập trình hướng đối tượng một cách linh hoạt

Tkinter là một thư viện mạnh mẽ và linh hoạt, phù hợp cho việc phát triển nhiều loại ứng dụng khác nhau, từ các ứng dụng desktop đơn giản đến các công cụ quản lý dự án và biểu đồ phức tạp.

Các bước xây dựng phần mềm nhận diện giới tính và tuổi qua khuôn mặt

1 Đầu tiên, cài đặt thư viện Tkinter bằng lệnh pip install tkinter và import tkinter

2 Tạo cửa sổ chính của ứng dụng GUI bao gồm các nút chức năng và giao diện tương tích

3 Tạo các màn hình con tương ứng với từng chức năng để thực hiện một chức năng cụ thể

4 Gọi các màn hình con để liên kết với các chức năng của màn hình chính để tạo thành một ứng dụng hoàn chỉnh.

Phân tích thiết kế hệ thống

4.2.1.1 Biểu đồ use case tổng quát

Hình 4.1: Biểu đồ use case tổng quát

4.2.1.2 Phân rã use case xem kết quả chuẩn đoán

Hình 4.2: Phân rã use case Xem kết quả chẩn đoán

4.2.2 Mô tả chi tiết các use case

4.2.2.1 Mô tả use case Nhận dạng qua hình ảnh

Tên use case: Nhận dạng qua hình ảnh

Mô tả tóm tắt: Use case cho phép người dùng nhận dạng tuổi và giới tính của khuôn mặt trong hình ảnh

1 Người dùng có thể nhấp chọn nút “Chọn ảnh” hoặc “Chụp ảnh từ camera” trên giao diện trang chủ để thực hiện nhận dạng:

1.1 Người dùng nhấp chọn nút “Chọn ảnh” trên giao diện trang chủ, hệ thống sẽ truy cập tới bộ sưu tập ảnh trên thiết bị của người dùng.

1.1.1 Trường hợp người dùng không chọn ảnh và bấm nút cancel từ bộ sưu tập ảnh của hệ thống, ứng dụng tự động quay về giao diện trang chủ

1.1.2 Trường hợp người dùng chọn ảnh từ bộ sưu tập ảnh của hệ thống, ảnh được chọn sẽ được hiển thị trên màn hình mới.

1.2 Người dùng nhấp chọn nút “Chọn ảnh từ camera” trên trang chủ, hệ thống sẽ tới máy ảnh trên thiết bị của người dùng:

1.2.1 Trường hợp người dùng bấm nút cancel từ máy ảnh của hệ thống, ứng dụng tự động quay về giao diện trang chủ

1.2.2 Trường hợp người dùng không nhấn nút cancel, ảnh sẽ được giữ lại cho việc nhận dạng

2 Sau khi tiến hành nhận diện tuổi và khuôn mặt từ ảnh người dùng chọn, hệ thống sẽ trả về kết quả cho người dùng trên chính chiếc ảnh người dùng chọn hoặc trên chính camera của người dùng

- Luồng rẽ nhánh: Không có

Các yêu cầu đặc biệt: Không có

Tiền điều kiện: Người dùng đã chọn hình ảnh

Hậu điều kiện: Không có

Các điểm mở rộng: Không có

4.2.2.2 Mô tả use case Nhận dạng qua video

Tên use case: Nhận dạng qua video

Mô tả tóm tắt: Use case cho phép người dùng nhận dạng tuổi và giới tính của khuôn mặt trong qua video theo thời gian thực

1 Người dùng có thể nhấp chọn nút “Chọn video” trên giao diện trang chủ để thực hiện nhận dạng:

1.1 Người dùng nhấp chọn nút “Chọn video ” trên giao diện trang chủ, hệ thống sẽ truy cập tới bộ sưu tập video trên thiết bị của người dùng.

1.1.1 Trường hợp người dùng không chọn video và bấm nút cancel từ bộ sưu tập video của hệ thống, ứng dụng tự động quay về giao diện trang chủ

1.1.2 Trường hợp người dùng chọn video từ bộ sưu tập video của hệ thống, vidoe được chọn sẽ được hiển thị trên màn hình mới.

2 Sau khi video được hiển thị lên, hệ thống sẽ tự động lựa chọn khuôn mặt và tự nhận diện tuổi và giới tính theo thời gian thực trên màn hình video

- Luồng rẽ nhánh: Không có

Các yêu cầu đặc biệt: Không có

Tiền điều kiện: Người dùng đã chọn video

Hậu điều kiện: Không có

Các điểm mở rộng: Không có

Giao diện ứng dụng

Giao diện ứng dụng được thiết kế đơn giản hợp với các ứng dụng nhỏ có ít chức năng Chi tiết giao diện được trình bày như dưới đây:

Hình 4.3: Giao diện chức năng chính của ứng dụng

Hệ thống cung cấp các chức năng chính như nhận dạng tuổi và giới tính của con người thông qua ảnh chụp và video, với các tính năng này được đặt ngay trên trang chủ để thuận tiện cho người dùng Cuối trang chủ, có nút Thoát giúp người dùng dễ dàng rời khỏi ứng dụng khi không cần sử dụng nữa.

Hình 4.4: Giao diện của hình ảnh sau khi được nhận diện

Người sử dụng có thể dễ dàng nhận dạng tuổi và giới tính của người trong ảnh từ bộ sưu tập hoặc camera, dựa trên khoảng tuổi đã được định sẵn Sau khi nhận dạng, họ có thể lưu ảnh vào thiết bị cá nhân để theo dõi và xem lại dễ dàng, hoặc chọn hủy để thực hiện các chức năng khác nếu không muốn lưu lại.

Hình 4.5: Giao diện của video sau khi được nhận diện

Người dùng có thể dễ dàng nhận dạng tuổi và giới tính của nhân vật trong video được chọn từ bộ sưu tập, dựa trên khoảng tuổi đã được định sẵn Nếu cần, người dùng có thể hủy để thực hiện các chức năng khác.

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

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

TÀI LIỆU LIÊN QUAN

w