Giới thiệu chung Về hệ thống nhận diện khuôn mặt
Các vấn đề đặt ra
Trong bối cảnh cuộc cách mạng công nghiệp 4.0, trí tuệ nhân tạo (AI) đã phát triển mạnh mẽ, mang lại nhiều ứng dụng hữu ích cho cuộc sống Trước đây, việc điểm danh hay nhận diện người ra vào tại các địa điểm công cộng thường sử dụng phương pháp thủ công, dẫn đến tốn thời gian và dễ xảy ra sai sót Sự quá tải trong việc ghi nhận thông tin có thể gây khó chịu cho người ra vào, tạo cảm giác bị nghi ngờ Tuy nhiên, với sự phát triển của công nghệ thông tin, quy trình này giờ đây đã trở nên đơn giản và hiệu quả hơn, giúp tối ưu hóa thời gian và cải thiện trải nghiệm cho mọi người.
Hình 1: Đề tài nhận diện khuôn mặt
Tổng quan đề tài
Hiện nay, nhiều trường học vẫn sử dụng phương pháp điểm danh sinh viên thủ công, dẫn đến việc tốn thời gian và công sức, cũng như tình trạng điểm danh hộ, đi học trễ hoặc trốn học Những vấn đề này gây khó khăn trong quản lý sinh viên Hơn nữa, việc áp dụng công nghệ nhận diện vân tay cho việc chấm công và quản lý nhân sự thường gặp sai sót do các yếu tố khách quan từ người dùng, gây cản trở tiến độ làm việc và tốn thời gian khắc phục.
Trí tuệ nhân tạo (AI) ngày càng trở nên quan trọng trong cuộc sống hiện đại, với khả năng tự nhận biết và xử lý công việc tự động phục vụ cho con người Ứng dụng AI trong lĩnh vực thị giác máy tính là giải pháp lý tưởng để phát triển hệ thống nhận diện khuôn mặt Nhóm nghiên cứu đã chọn đề tài “Nghiên cứu hệ thống nhận diện khuôn mặt sử dụng trí tuệ nhân tạo” nhằm khắc phục những hạn chế hiện tại Việc ứng dụng AI không chỉ loại bỏ thời gian điểm danh thủ công mà còn tăng cường độ chính xác so với công nghệ nhận diện bằng vân tay.
Hình 2: Hệ thống máy chấm công tự động
4 tự động có khả năng kết hợp với những công nghệ tiên tiến hướng đến môi trường làm việc 4.0.
Ý nghĩa khoa học và thực tiễn của đề tài
Nhận dạng khuôn mặt là một lĩnh vực nghiên cứu quan trọng trong Sinh trắc học và Thị giác máy tính, mặc dù vẫn đối mặt với nhiều thách thức làm giảm khả năng triển khai thực tế Công nghệ này không nổi bật về độ chính xác nhưng có ưu điểm trong việc theo dõi so với các phương pháp sinh trắc học khác Do đó, nghiên cứu về các phương pháp nhận diện khuôn mặt vẫn thu hút sự quan tâm lớn từ các nhà khoa học, với hy vọng phát triển các giải pháp tối ưu hơn cho các vấn đề hiện tại, đồng thời thể hiện sự tiến bộ không ngừng của khoa học.
Bài toán phát hiện mặt người trong ảnh là một thách thức phức tạp nhưng thu hút nhiều nhà nghiên cứu nhờ vào tính ứng dụng phong phú trong cuộc sống hiện đại Những ứng dụng phổ biến của công nghệ nhận diện khuôn mặt bao gồm bảo mật, nhận diện người dùng trong các thiết bị di động, và phân tích hành vi khách hàng trong thương mại điện tử.
- Hệ thống giao tiếp thông minh giữa người và máy
- Hệ thống quan sát, theo dõi và bảo vệ
- Bảo vệ bảo mật thông tin
Mục tiêu nghiên cứu đề tài
Mục đích nghiên cứu là ứng dụng lý thuyết thị giác máy tính và trí tuệ nhân tạo, kết hợp với kiến thức chuyên ngành Cơ điện tử, để phát triển hệ thống nhận diện khuôn mặt qua camera Hệ thống này sẽ được áp dụng vào quy trình điểm danh tự động tại các trường học và chấm công tự động tại các công ty.
5 doanh nghiệp hoặc kiểm tra, giám sát đối tượng ra vào tại các khu đô thị, bệnh viện, cơ quan công sở nhà nước,
Nhóm đặt ra mục tiêu:
Nghiên cứu lý thuyết về hệ thống nhận diện khuôn mặt người sử dụng trí tuệ nhân tạo
Nghiên cứu, thiết kế, thử nghiệm mô hình hệ thống và đánh giá để phân tích những hạn chế cần cải thiện
Đối tượng và phạm vi nghiên cứu
Đề tài này tập trung vào việc nghiên cứu các phương pháp nhận diện khuôn mặt trong lĩnh vực trí tuệ nhân tạo nhằm tìm ra giải pháp tối ưu nhất.
Đề tài nghiên cứu tập trung vào các lĩnh vực như toán học, ma trận, cơ khí, xử lý ảnh và các phương pháp lập trình, nhằm phát triển kiến thức và ứng dụng trong các lĩnh vực này.
Do kiến thức và thời gian hạn hẹp nên đề tài chỉ thực hiện nghiên cứu những vấn đề như sau:
Nghiên cứu giải thuật xử lý ảnh sử dụng OpenCV và Deep learning
Thử nghiệm đánh giá mô hình hệ thống nhận diện khuôn mặt bằng những thuật toán, phương pháp khác nhau
Phương pháp nghiên cứu
Áp dụng những kiến thức đã được học trong chương trình đào tạo của chuyên ngành để thực hiện đề tài
Trình bày đề tài dưới dạng sản phẩm trên máy tính và hoàn thiện báo cáo thuyết minh
Tổng quan hệ thống nhận diện khuôn mặt sử dụng trí tuệ nhân tạo
Khái quát chung về xử lý ảnh
Thị giác máy tính là lĩnh vực nghiên cứu về việc thu nhận, xử lý và phân tích hình ảnh kỹ thuật số từ thế giới thực, nhằm cung cấp thông tin cho các hệ thống để đưa ra quyết định Mục tiêu của thị giác máy tính là mô phỏng khả năng của hệ thần kinh thị giác con người, giúp hệ thống nhân tạo có khả năng nhận diện và phân tích dữ liệu tương tự như con người.
Thị giác máy tính là một lĩnh vực khoa học nghiên cứu lý thuyết và ứng dụng của các hệ thống nhân tạo nhằm trích xuất thông tin từ hình ảnh Các hệ thống này có khả năng tiếp nhận dữ liệu đầu vào dưới nhiều định dạng khác nhau, bao gồm video, hình ảnh từ camera và dữ liệu đa chiều từ máy quét sinh học Bên cạnh đó, thị giác máy tính cũng là một ngành kỹ thuật, tập trung vào việc áp dụng các mô hình và lý thuyết để phát triển các hệ thống thị giác máy tính hiệu quả.
Xử lý ảnh đóng vai trò quan trọng trong kỹ thuật thị giác máy tính, là nền tảng cho nhiều nghiên cứu trong lĩnh vực này Hai nhiệm vụ chính của quá trình này bao gồm nâng cao chất lượng thông tin hình ảnh và xử lý dữ liệu để phục vụ cho các ứng dụng khác, trong đó có việc áp dụng thị giác máy tính vào điều khiển.
Hình 3: Mô hình nhận diện đối tượng
Quá trình xử lý ảnh bắt đầu bằng việc thu nhận hình ảnh từ các thiết bị số hoặc tương tự và gửi đến máy tính Dữ liệu ảnh sau đó được lưu trữ ở định dạng thích hợp để tiến hành xử lý Người lập trình áp dụng các thuật toán phù hợp lên dữ liệu ảnh nhằm điều chỉnh cấu trúc hình ảnh cho các ứng dụng khác nhau.
Quá trình xử lý nhận dạng ảnh là thao tác trên ảnh đầu vào để đạt được kết quả mong muốn, có thể là một ảnh đã được xử lý hoặc một kết luận cụ thể Ảnh được coi là tập hợp các điểm ảnh, mỗi điểm ảnh đại diện cho cường độ sáng hoặc một dấu hiệu tại vị trí cụ thể trong không gian, và có thể được xem như một hàm n biến Vì vậy, trong lĩnh vực xử lý ảnh, ảnh có thể được hiểu như một ảnh n chiều.
2.1.1 Một số vấn đề trong xử lý ảnh
Tiền xử lý là bước đầu tiên trong quy trình xử lý ảnh số, nơi thực hiện các công đoạn như nâng cấp, khôi phục ảnh, nắn chỉnh hình học và khử nhiễu, tùy thuộc vào quá trình xử lý tiếp theo.
Việc trích chọn các đặc điểm của đối tượng trong xử lý ảnh phụ thuộc vào mục đích nhận dạng, giúp nâng cao độ chính xác trong việc nhận diện Quá trình này không chỉ tối ưu hóa tốc độ tính toán mà còn giảm thiểu dung lượng bộ nhớ lưu trữ cần thiết.
Bốn cách tiếp cận khác nhau trong lý thuyết nhận dạng là:
Đối sánh mẫu dựa trên các đặc trưng được trích chọn
Phân loại dựa trên mạng nơ-ron nhân tạo
2.1.2 Một số ứng dụng trong xử lý ảnh
Các kỹ thuật xử lý ảnh trước đây chủ yếu nhằm nâng cao chất lượng hình ảnh, tạo cảm giác cải thiện chất lượng quang học cho người quan sát Gần đây, ứng dụng của công nghệ xử lý ảnh đã mở rộng đáng kể, hiện nay không có lĩnh vực khoa học nào không tận dụng những thành tựu của xử lý ảnh số Một số lĩnh vực nổi bật bao gồm y học, sản xuất công nghiệp, khí tượng học, địa chất, giáo dục và quân sự.
Hình 4: Quá trình tiền xử lý ảnh
Hình 5: Ứng dụng xử lý ảnh trong công nghiệp
Tổng quan về Open CV
2.2.1 Giới thiệu về Open CV
OpenCV, viết tắt của thư viện mở cho thị giác máy tính, là một trong những thư viện mã nguồn mở hàng đầu cho xử lý ảnh thời gian thực Ra mắt lần đầu vào năm 1999, OpenCV miễn phí cho cả mục đích học thuật và thương mại, hỗ trợ đa nền tảng như Windows, Linux, Mac OS, iOS và Android Thư viện này tương thích với nhiều ngôn ngữ lập trình như C++, Python và Java, được phát triển bằng C/C++ và tích hợp OpenCL, cung cấp hơn 2500 thuật toán tối ưu hóa.
Thư viện OpenCV bao gồm một số tính năng nổi bật như:
- Bộ công cụ hỗ trợ 2D và 3D
- Nhận dạng chuyển động, đối tượng, hành vi,
- Tương tác giữa con người và máy tính
- Hỗ trợ thực tế tăng cường
OpenCV hiện có hơn 47 nghìn người dùng và ước tính hơn 14 triệu số lượt tải xuống, thư viện OpenCV được sử dụng rộng rãi trong nhiều lĩnh vực
Bộ công cụ hỗ trợ 2D và 3D
Nhận dạng chuyển động, đối tượng, hành vi,
Tương tác giữa con người và máy tính
Các phương pháp sử dụng trong bài toán nhận diện mặt người
Hệ thống nhận dạng mặt người là công nghệ nhận diện dựa trên ảnh hoặc video, cho phép xác định vị trí khuôn mặt trong hình ảnh Qua quá trình xử lý, hệ thống có khả năng nhận diện người đã được học trước đó hoặc phân biệt với người lạ.
2.3.2 Những khó khăn của nhận dạng khuôn mặt a) Tư thế góc chụp: Ảnh chụp khuôn mặt có thể thay đổi rất nhiều bởi vì góc chụp giữa camera và khuôn mặt.Chẳng hạn như : chụp thẳng, chụp xéo bên trái 45 o hay xéo bên phải 45 o , chụp từ trên xuống, chụp từ dưới lên,v.v…) Với các tư thế khác nhau, các thành phần trên khuôn mặt như mắt, mũi, miệng có thể bị khuất một phần hoặc thậm chí khuất hết Khuôn mặt đang nhìn thẳng nhưng góc chụp của máy ảnh lại lệch nhiều so với hướng nhìn thẳng của khuôn mặt hoặc là lúc chụp ảnh mặt người quay nghiêng sang một bên nào đó nhiều đều là những khó khăn rất lớn trong bài toán nhận diện mặt người b) Sự xuất hiện hoặc thiếu một số thành phần của khuôn mặt: Các đặc trưng như râu mép, râu hàm, mắt kính,v.v… có thể xuất hiện hoặc không Vấn đề này làm cho bài toán càng khó khăn hơn rất nhiều c) Sự biểu cảm của khuôn mặt: Biểu cảm của khuôn mặt người có thể làm ảnh hưởng đáng kể lên các thông số của khuôn mặt Chẳng hạn,cùng một khuôn mặt một người, nhưng có thể sẽ rất khác khi họ cười hoặc sợ hãi…
Sự che khuất khuôn mặt bởi các đối tượng khác và các khuôn mặt xung quanh có thể làm giảm khả năng nhận diện Hướng chụp ảnh cũng ảnh hưởng lớn đến chất lượng hình ảnh, khi góc nghiêng của camera có thể làm biến dạng khuôn mặt Điều kiện ánh sáng và loại camera sử dụng, như máy kỹ thuật số hay máy hồng ngoại, cũng tác động đến chất lượng ảnh khuôn mặt Nền ảnh phức tạp là một thách thức lớn trong việc nhận diện, vì khuôn mặt có thể bị nhầm lẫn với các khung cảnh xung quanh, gây khó khăn trong việc phân tích và trích xuất đặc trưng khuôn mặt Cuối cùng, màu sắc da mặt quá tối hoặc tương đồng với màu sắc môi trường xung quanh có thể khiến thuật toán gặp khó khăn trong việc nhận diện các đặc trưng khuôn mặt.
2.3.3 Một số phương pháp giải quyết bài toán nhận dạng khuôn mặt
Hiện nay, nhận diện khuôn mặt đã trở thành một lĩnh vực nghiên cứu quan trọng và sâu rộng Nhiều phương pháp và thuật toán đã được phát triển để giải quyết vấn đề này Mỗi phương pháp đều có những ưu điểm và nhược điểm riêng, phù hợp với từng nhu cầu cụ thể.
Hình 7: Xử lý nền ảnh
(2.2) thể Tuy nhiên trong phạm vi nghiên cứu của học phần, nhóm sinh viên chỉ áp dụng thực hiện 3 phương pháp để đánh giá:
- Sử dụng thuật toán SVM
- Sử dụng mô hình CNN
- Sử dụng mô hình CNN kết hợp hàm Triplet loss
Trong không gian 2 chiều ta biết rằng khoảng cách từ một điểm có toạ độ (𝑥 0; 𝑦 0 ) tới đường thẳng có phương trình 𝑤 1 𝑥 + 𝑤 2 𝑦 + 𝑏 = 0 được xác định bởi:
Trong không gian 3 chiều khoảng cách từ một điểm có toạ độ (𝑥 0; 𝑦 0 ; 𝑧 0 ) tới mặt phẳng có phương trình 𝑤 1 𝑥 + 𝑤 2 𝑦 + 𝑤 3 𝑧 + 𝑏 = 0 được xác định bới:
Việc này có thể được tổng quát lên không gian nhiều chiều: Khoảng cách từ một điểm
(vector) có toạ độ 𝑥 0 tới siêu mặt phẳng (hyper-plane) có phương trình 𝑤 𝑇 𝑥 + 𝑏 = 0 được xác định bởi:
Hình 8: Hệ thống nhận dạng khuôn mặt
Với ‖𝑤‖ 2 = √∑ 𝑑 𝑖=1 𝑤 𝑖 2 với d là số chiều của không gian
Support Vector Machine (SVM) là một thuật toán giám sát chủ yếu được sử dụng cho phân loại, mặc dù cũng có thể áp dụng cho đệ quy Thuật toán này hoạt động bằng cách vẽ đồ thị dữ liệu dưới dạng các điểm trong không gian n chiều, trong đó n là số lượng tính năng Mục tiêu là tìm kiếm "đường bay" (hyper-plane) để phân chia các lớp dữ liệu một cách hiệu quả.
Hyper-plane được hiểu đơn giản là 1 đường thẳng có thể phân chia các lớp ra thành hai phần riêng biệt
Bài toán cần giải quyết là xác định hyper-plane tối ưu nhất để phân chia các lớp, trong khi có rất nhiều hyper-plane có thể được tìm thấy.
Hình 9: Mô hình thuật toán SVM
“Margin” là khoảng cách giữa siêu phẳng và hai điểm dữ liệu gần nhất thuộc các phân lớp khác nhau Trong SVM, bài toán tối ưu nhằm tìm ra các giá trị cho phương trình siêu phẳng sao cho margin đạt giá trị lớn nhất Đối với bài toán phân loại đa lớp, SVM áp dụng hai phương pháp là 1 vs all và 1 vs 1.
Phương pháp 1-vs-all trong xây dựng mô hình SVM nhị phân giúp tách lớp dương ra khỏi các lớp âm, trong khi phương pháp 1-vs-1 tạo ra (c(c-1)/2) mô hình SVM nhị phân, mỗi mô hình này sẽ tách biệt một cặp lớp.
Cách ứng dụng thuật toán SVM vào phân loại dữ liệu khuôn mặt sẽ được trình bày trong phần tiếp theo của bài báo cáo
Hình 10: Đường hyper-plane trong thuật toán SVM
Hình 11: Giải thuật SVM với nhiều lớp
Kết luận: SVM là một phương pháp hiệu quả cho bài toán phân lớp dữ liệu
Nó là một công cụ đắc lực cho các bài toán về xử lý ảnh, phân loại văn bản, phân tích quan điểm
Một số ưu điểm của thuật toán có thể kể đến như:
SVM là một công cụ tính toán hiệu quả trong không gian chiều cao, đặc biệt hữu ích cho các bài toán phân loại văn bản và phân tích quan điểm, nơi mà số chiều có thể rất lớn.
Tiết kiệm bộ nhớ là một lợi ích quan trọng, vì chỉ những điểm dữ liệu cần thiết được sử dụng trong quá trình huấn luyện và ra quyết định cho các điểm mới được lưu trữ Điều này giúp tối ưu hóa không gian lưu trữ và nâng cao hiệu quả trong việc xử lý thông tin.
Tính linh hoạt trong phân lớp thường không tuyến tính, và việc áp dụng kernel mới cho phép linh động giữa các phương pháp tuyến tính và phi tuyến tính, từ đó nâng cao hiệu suất phân loại.
Bên cạnh đó thuật toán SVM cũng tồn tại nhược điểm:
Phân lớp của SVM chỉ đơn thuần là quá trình tách biệt các đối tượng thành hai lớp thông qua siêu phẳng SVM, mà chưa làm rõ xác suất xuất hiện của một thành viên trong nhóm.
2.3.3.2 Convolutional Neural Network (mạng thần kinh tích chập)
Mạng nơ-ron tích chập (CNN) là một mô hình trong Deep Learning, sử dụng các thuật toán để trừu tượng hóa dữ liệu ở mức cao thông qua nhiều lớp xử lý phức tạp CNN chủ yếu được áp dụng để phân tích hình ảnh, phân loại chúng bằng cách nhận diện và xử lý hình ảnh đầu vào theo các hạng mục nhất định.
Hình 12: Mô hình mạng CNN
Trong suốt hơn 20 năm phát triển, nhiều mạng CNN đã được thiết kế để đáp ứng sự tiến bộ nhanh chóng của ngành khoa học thị giác máy tính Một số mạng CNN tiêu biểu có thể kể đến bao gồm:
Về cơ bản tất cả các mô hình CNN đều bao gồm 3 tầng sau:
Tầng tổng hợp (max pooling)
Tầng kết nối hoàn toàn (fully connected)
Tích chập là một phép toán tuyến tính trong toán học, cho ra kết quả là một hàm mới dựa trên hai hàm đã có Trong lĩnh vực lọc ảnh, tích chập giữa ma trận lọc và ảnh giúp loại bỏ nhiễu và làm mờ ảnh, cải thiện chất lượng hình ảnh.
Thiết kế hệ thống hệ thống nhận diện khuôn mặt sử dụng trí tuệ nhân tạo
Sơ đồ tổng quát hệ thống
Hình 20: Sơ đồ tổng quát hệ thống
Hệ thống nhận diện khuôn mặt sử dụng thuật toán SVM
Xây dựng hệ thống nhận diện khuôn mặt sử dụng thuật toán SVM bao gồm 2 bước chính: Training và Test
3.3.1 Sử dụng thuật toán SVM để training dữ liệu
Trước khi tiến hành đào tạo mô hình nhận diện khuôn mặt, chúng ta cần chuẩn bị một bộ dữ liệu ảnh chụp khuôn mặt của các đối tượng Dữ liệu có thể được thu thập từ các bức ảnh ngẫu nhiên, nhưng phương pháp này thường dẫn đến việc khuôn mặt không rõ nét, bị nhỏ, mờ hoặc che khuất Do đó, nhóm nghiên cứu đã quyết định chụp trực tiếp khuôn mặt của đối tượng bằng một chương trình chuyên biệt Các đối tượng sẽ được chụp liên tục và yêu cầu thay đổi góc độ khuôn mặt để tạo ra một bộ dữ liệu đa dạng và chất lượng hơn.
Hình 21: Sơ đồ quá trình xử lý ảnh
Mỗi đối tượng nhận diện yêu cầu khoảng 100 bức ảnh với các góc độ và điều kiện ánh sáng khác nhau Trong nghiên cứu này, đối tượng nhận diện là các sinh viên Tuy nhiên, do ảnh hưởng của dịch bệnh, nhóm nghiên cứu chỉ có thể thu thập dữ liệu từ 20 sinh viên khác nhau.
Hình 22: Dữ liệu training sử dụng thuật toán SVM
Hình 23: Dán nhãn dữ liệu training
27 Ảnh chụp của mỗi đối tượng sẽ được lưu riêng ở một folder để tiếp tục bước training tiếp theo
Thuật toán SVM được sử dụng để phân loại n lớp đối tượng, tương ứng với số người cần nhận diện Mỗi tập hợp ảnh chụp của một người sẽ được xem như một lớp điểm Mỗi khuôn mặt có những đặc trưng riêng, và SVM sẽ dựa vào những đặc trưng này để xác định sự khác biệt lớn nhất giữa các đối tượng, từ đó phân loại chúng Nói cách khác, SVM tìm ra hyper-plane tối ưu để phân tách các đối tượng dựa trên đặc trưng khuôn mặt.
Thư viện OpenCV hỗ trợ thuật toán SVM thông qua việc gọi các hàm định sẵn, trong đó hàm nhân được sử dụng là "linear" Hệ số C sẽ được thử nghiệm nhiều lần nhằm xác định giá trị tối ưu nhất cho mô hình.
Quá trình huấn luyện hoàn tất sau khoảng 10 phút, cho ra hệ số C tối ưu nhất và đạt độ chính xác cao nhất trong quá trình phân loại, với cấu hình máy tính được sử dụng như sau:
3.3.2 Kết quả nhận diện khi áp dụng thuật toán SVM
Sau khi hoàn tất quá trình huấn luyện, chúng ta sẽ có một mô hình phân loại để thử nghiệm bằng camera của laptop Thuật toán sẽ nhận diện khuôn mặt người từ hình ảnh thu được và so sánh với mô hình đã được huấn luyện để thực hiện việc nhận diện.
Hình 24: Cấu hình máy tính training sử dụng thuật toán SVM
Nếu độ chính xác trả về có giá trị nhỏ hơn 70%, kết quả nhận diện sẽ hiển thị
Độ chính xác của hệ thống giảm đáng kể khi gặp các tình huống như góc nghiêng lớn, khuôn mặt bị che khuất hoặc cường độ sáng kém Tuy nhiên, trong điều kiện lý tưởng, hệ thống có thể đạt độ chính xác trên 94%.
Hệ thống nhận diện khuôn mặt sử dụng mạng CNN
Sau khi nghiên cứu và đạt được kết quả từ thuật toán SVM, nhóm sinh viên đã tiếp tục khám phá ứng dụng của mô hình mạng CNN trong đề tài nghiên cứu Hai loại mạng CNN được sử dụng trong báo cáo là VGG-16 và ResNet-50.
VGG16 là một kiến trúc mạng nơ-ron tích chập (CNN) nổi bật, được sử dụng rộng rãi trong dự án ImageNet, một cơ sở dữ liệu hình ảnh lớn phục vụ nghiên cứu nhận dạng đối tượng Được phát triển bởi Karen Simonyan và Andrew Zisserman từ Đại học Oxford vào năm 2014, VGG16 được giới thiệu trong bài báo “Các mạng kết hợp rất sâu để nhận dạng hình ảnh quy mô lớn” Tên gọi 'VGG' là viết tắt của Visual Geometry Group, nhóm nghiên cứu tại Oxford, và số '16' chỉ ra rằng kiến trúc này bao gồm 16 lớp.
Hình 25: Kết quả nhận diện khi áp dụng thuật toán SVM
Kiến trúc của VGG16 bao gồm 16 layer :13 layer Conv (2 layer conv-conv,3 layer conv-conv-conv) đều có kernel 3x3 và 3 layer fully connection
Dữ liệu ảnh dùng để training bao gồm bộ dữ liệu tổng hợp các bức ảnh khuôn mặt của những người nổi tiếng Nhóm sinh viên đã thu thập và cắt ghép ảnh khuôn mặt, sau đó resize về kích thước tiêu chuẩn 224x224 pixel cho mạng VGG-16 Để tăng tính đa dạng cho bộ dữ liệu và tiết kiệm thời gian, phương pháp data augment được áp dụng, cho phép thay đổi các yếu tố như độ sáng, góc xoay và chiều của ảnh gốc Kết quả thu được sẽ được lưu trữ và sử dụng cho quá trình training.
Hình 27: Phương pháp data augment
Sau khi resize, 30 ảnh khuôn mặt của từng người sẽ được lưu vào thư mục tương ứng, được đặt tên theo tên người cần nhận diện VGG-16 nhận đầu vào là ảnh 2D và cho ra một vector biểu diễn đặc trưng của bức ảnh đó Mỗi người sẽ có một đặc trưng riêng trên khuôn mặt, và vector biểu diễn ảnh cũng chính là vector biểu diễn đặc trưng khuôn mặt của họ.
Bộ dữ liệu sẽ được chia tỷ lệ 80% training và 20% test Cụ thể gồm 22 class như sau:
Sau khi hoàn tất việc thu thập dữ liệu, tất cả hình ảnh sẽ được tải lên Google Drive để tiến hành quá trình đào tạo trên Google Colab Quá trình đào tạo sẽ diễn ra trong 50 vòng, và nếu độ chính xác không được cải thiện sau 5 vòng đào tạo liên tiếp, quá trình này sẽ tự động dừng lại.
Hình 28: Dữ liệu training VGG-16
Hình 29: Dữ liệu Test VGG-16
Với 22 class và 713 ảnh quá trình training kết thúc sau 37 phút với accuracy đạt khoảng 88% và loss là 38% Tuy nhiên Google Colab không thể trích xuất biểu đồ khi kết thúc training Dưới đây là kết quả thực tế: Độ chính xác hội tụ ở ngưỡng khoảng 88% tuy nhiên độ sai lệch (loss) giữa các class vẫn còn khá cao
ResNet (Residual Network) được giới thiệu vào năm 2015 và đã đạt vị trí thứ nhất trong cuộc thi ILSVRC 2015 với tỉ lệ lỗi top 5 chỉ 3.57% Mô hình này cũng dẫn đầu trong các cuộc thi ILSVRC và COCO 2015, bao gồm các nhiệm vụ như ImageNet Detection, ImageNet Localization, COCO Detection và COCO Segmentation Hiện nay, nhiều tác giả đã phát triển các biến thể của kiến trúc ResNet với số lớp khác nhau, như ResNet-18, ResNet-34, ResNet-50, ResNet-101, ResNet-152, và được đặt tên theo cấu trúc ResNet với số lớp tương ứng.
The Backpropagation Algorithm is a widely used technique in the training process of neural networks Its core idea involves moving from the output layer to the input layer, calculating the gradient of the cost function for each parameter (weight) in the network This gradient is then utilized to update these parameters effectively.
Quá trình huấn luyện mạng nơ-ron sẽ tiếp tục lặp lại cho đến khi các tham số của mạng hội tụ Thông thường, một hyperparameter, cụ thể là số Epoch, được xác định để chỉ số lần mà tập huấn luyện được duyệt qua và các trọng số được cập nhật.
Hình 30: Kết quả training VGG-16
Số lượng vòng lặp trong quá trình đào tạo mạng rất quan trọng; nếu quá ít, mạng có thể không đạt hiệu quả tốt, trong khi nếu quá nhiều, thời gian đào tạo sẽ kéo dài.
Trong thực tế, Gradients thường giảm dần khi đi xuống các lớp thấp hơn, dẫn đến việc các cập nhật từ Gradients không thay đổi nhiều trọng số của các lớp này Kết quả là các lớp không thể hội tụ, khiến mạng không đạt được hiệu quả tốt Hiện tượng này được gọi là Vanishing Gradients.
Giải pháp mà ResNet cung cấp là sử dụng kết nối "tắt" đồng nhất để vượt qua một hoặc nhiều lớp Một cấu trúc như vậy được gọi là Residual Block.
Khối dư trong mạng hiển thị việc bổ sung đầu vào X vào đầu ra của layer, thể hiện qua mũi tên cong từ đầu đến cuối khối dư Điều này tương đương với phép cộng, giúp ngăn ngừa đạo hàm bằng 0 nhờ việc duy trì giá trị X Với H(x) = F(x) + x, trong đó F(x) là giá trị thật, mục tiêu của chúng ta là làm cho H(x) bằng hoặc gần bằng F(x).
Hình 31: Khối Residual trong Resnet
Nhóm thực hiện đã áp dụng mô hình Resnet-50 với 50 lớp khác nhau để nâng cao khả năng học các đặc trưng phức tạp và mới mẻ Mô hình Resnet-50 được trình bày như hình dưới đây.
Nhóm bắt đầu tiến hành huấn luyện mô hình ResNet-50 bằng cách sử dụng lại bộ dữ liệu với 22 lớp đã được trình bày trước đó, và quá trình huấn luyện sẽ được thực hiện trên nền tảng Kaggle.
Quá trình training kéo dài 3 giờ sau 256 vòng Độ chính xác hội tụ ở ngưỡng khoảng 93%
Hình 33: Kết quả training ResNet-50 với 22 class
Biểu đồ trích xuất sau khi training
Xây dựng giao diện người dùng
Qt là một khung ứng dụng đa nền tảng, cung cấp bộ công cụ tiện ích để phát triển giao diện người dùng đồ họa cổ điển và nhúng, cùng với khả năng xây dựng ứng dụng chạy trên nhiều nền tảng phần mềm khác nhau.
Hình 43: Kết quả nhận diện từ mô hình FaceNet
41 và phần cứng khác nhau hoặc ít thay đổi trong codebase cơ bản, trong khi vẫn là một ứng dụng gốc với khả năng và tốc độ cục bộ
Qt là một công cụ phát triển mạnh mẽ cho giao diện người dùng đồ họa (GUI) và ứng dụng đa nền tảng, cho phép chạy trên tất cả các hệ điều hành máy tính để bàn lớn cũng như hầu hết các nền tảng di động và nhúng Các ứng dụng GUI được xây dựng bằng Qt thường có giao diện tự nhiên, và vì vậy, Qt được xem như một bộ công cụ widget Ngoài ra, Qt còn cung cấp nhiều tính năng hữu ích như truy cập cơ sở dữ liệu SQL, phân tích cú pháp XML và JSON, quản lý luồng, cùng với hỗ trợ mạng.
Qt hỗ trợ các trình biên dịch khác nhau, bao gồm trình biên dịch GCC C++ và bộ Visual Studio và có hỗ trợ quốc tế hóa rộng rãi
PyQt là một liên kết Python của bộ công cụ GUI đa nền tảng Qt , được triển khai dưới dạng một thư viện kèm trong Python
Hình 45: Sử dụng Qt để thiết kế GUI
Giao diện người dùng được thiết kế trên Qt dựa trên những phần mềm điểm danh hiện có mặt trên thị trường
Kế thừa lớp Qtext của thư viện PyQt Các thao tác sau khi thực hiện sẽ được hiển thị trên khung thông báo
Sử dụng đối tượng Qlabel thuộc thư viện PyQt Video từ camera sẽ được hiển thị trên khung hiển thị
Lớp PushButton được kế thừa từ thư viện PyQt, bao gồm các nút điều khiển hệ thống như bắt đầu, thoát, cùng với các nút chức năng như thêm mới, trích xuất khuôn mặt và huấn luyện.
Hình 46: Giao diện chính của hệ thống
Khi bạn nhấn nút "Thêm mới", cửa sổ để thêm người mới sẽ xuất hiện Hãy nhập thông tin của người mà bạn muốn thêm và nhấn nút "OK" để tiến hành tự chụp ảnh.
Hình 47: Giao diện thêm mới đối tượng
Thiết kế hệ thống cơ khí
Khung hệ thống được thiết kế bằng phần mềm SolidWorks, bao gồm chân đỡ, bộ phận liên kết và màn hình Chân đỡ và bộ phận liên kết được làm từ inox, trong đó chân đỡ có cấu trúc ống hình trụ với một mặt đế chắc chắn gắn chặt xuống mặt đất.
Kích thước của chân đỡ được thiết kế là: 1500 x 100 (mm)
Bộ phận liên kết được tích hợp trong chân đỡ và có thể thay đổi chiều dài dao động từ: 100 – 500 (mm)
Màn hình tích hợp camera được gắn với bộ phận liên kết Kích thước của màn hình là 9"
Hình 48: Khung thiết kế cơ khí của hệ thống