TỔNG QUAN
GIỚI THIỆU
Kỷ nguyên công nghệ 4.0 mang đến nhiều cơ hội và thách thức, đặc biệt liên quan đến vấn đề nhân dạng Nhân dạng con người đóng vai trò quyết định trong quyền sở hữu và chủ quyền của một nhóm đối tượng nhất định, do đó, việc bảo vệ và quản lý nhân dạng trở nên vô cùng quan trọng.
Các phương pháp xác định danh tính bao gồm vân tay, hình dạng bàn tay, võng mạc và giọng nói, nhưng phương pháp phổ biến nhất hiện nay là sử dụng camera để nhận dạng.
Con người đã có những bước tiến vượt bậc trong việc ứng dụng công nghệ vào cuộc sống hiện đại Đặc biệt, công nghệ máy tính và trí tuệ nhân tạo đang đóng vai trò quan trọng trong nhiều lĩnh vực, góp phần nâng cao chất lượng cuộc sống.
Gần đây, nhiều ứng dụng trí tuệ nhân tạo đã xuất hiện, trong đó nổi bật là xe tự hành, cho phép điều khiển mà không cần tài xế Một ứng dụng quan trọng khác là chat bot, hỗ trợ dịch vụ khách hàng bằng cách cung cấp phản hồi nhanh chóng và hiệu quả cho các thắc mắc của khách hàng Các chat bot hiện đại ngày càng có khả năng trả lời câu hỏi một cách tự nhiên, giống như con người.
Trong lĩnh vực xác thực, hệ thống nhận dạng sinh trắc học dựa trên các đặc điểm sinh học của cá nhân và trí tuệ nhân tạo, mang lại độ tin cậy cao hơn so với các phương pháp truyền thống như thẻ thông minh, ví, khóa, mã thông báo, mã PIN và mật khẩu Các hệ thống này có thể được phát triển thông qua nhiều kỹ thuật khác nhau, trong đó phương pháp phổ biến nhất là dấu vân tay, yêu cầu sự tham gia trực tiếp của từng cá nhân để truy cập vào hệ thống.
Gần đây, các hệ thống xác thực mới cho phép người dùng truy cập mà không cần can thiệp Trong số các phương pháp, nhận dạng khuôn mặt nổi bật như một kỹ thuật khả thi nhất, cho phép nhận diện cá nhân một cách dễ dàng thông qua hệ thống.
MỤC TIÊU
Phát triển nhận dạng khuôn mặt qua webcam và điểm danh sử dụng chương trình nhận diện được nhúng từ máy tính, dựa trên một lượng ảnh cố định đã được huấn luyện sẵn.
GIỚI HẠN
Hệ thống nhận diện khuôn mặt không thể xác định nhiều hơn một người cùng lúc, và khả năng nhận diện bị giới hạn bởi các góc nhìn Điều này có nghĩa là nó không thể nhận diện khuôn mặt khi bị nghiêng hoặc đang di chuyển liên tục.
Chưa thật sự nhúng vào 1 thiết bị thực tế bởi độ phức tạp cao.
BỐ CỤC ĐỒ ÁN
Nội dung chính của đề tài được trình bày với năm nội chương sau:
Chương 1: Tổng quan Chương này nêu ra được tình hình nghiên cứu hiện nay, lý do, mục tiêu chọn đề tài và giới hạn của đề tài
Chương 2: Cơ sở lý thuyết Chương này đưa các lý thuyết chính liên quan đến: Ảnh số, quá trình xử lý ảnh, mạng nơ-ron nhân tạo, mạng nơ-ron tích chập, các phương pháp phát hiện và nhận diện khuôn mặt
Chương 3: Thiết kế hệ thống nhận diện khuôn mặt dùng mạng nơ-ron tích chập Chương này nêu lên được yêu cầu chi tiết của hệ thống, sơ đồ khối của hệ thống và hoạt động của từng khối, thiết kế từng khối, lưu đồ chính, lưu đồ chi tiết của chương trình mô phỏng trên phần mềm Matlab
Chương 4: Kết quả thực nghiệm Trình bày về kết quả mô phỏng và đánh giá ưu nhược điểm của hệ thống
Chương 5: Kết luận và hướng phát triển Đưa ra các kết luận về những vấn đề mà trong quá trình nghiên cứu đã đạt được và chưa đạt được Đưa ra những hướng để cải tiến, khắc phục những nhược điểm của hệ thống.
CƠ SỞ LÝ THUYẾT
NGÔN NGỮ LẬP TRÌNH PYTHON
Python là ngôn ngữ lập trình bậc cao, được Guido van Rossum phát triển và ra mắt lần đầu vào năm 1991 Với thiết kế dễ đọc, dễ học và dễ nhớ, Python phù hợp cho người mới bắt đầu lập trình Cấu trúc rõ ràng và hình thức sáng sủa của Python giúp giảm thiểu số lần gõ phím khi viết mã lệnh, mang lại sự thuận tiện cho người sử dụng.
Python là ngôn ngữ lập trình hoàn toàn động, sử dụng cơ chế cấp phát bộ nhớ tự động, tương tự như các ngôn ngữ như Perl, Ruby, Scheme, Smalltalk và Tcl Ngôn ngữ này được phát triển trong một dự án mã nguồn mở, dưới sự quản lý của tổ chức phi lợi nhuận Python Software Foundation.
Python ban đầu được phát triển để chạy trên nền Unix, nhưng đã mở rộng sang nhiều hệ điều hành khác như MS-DOS, Mac OS, OS/2, Windows, và Linux Dù có sự đóng góp của nhiều cá nhân, Guido van Rossum vẫn là tác giả chủ yếu của Python.
GIỚI THIỆU VỀ TRÍ TUỆ NHÂN TẠO VÀ MÁY HỌC
Hình 2.1: Trí tuệ nhân tạo
Trong lĩnh vực khoa học máy tính, Trí tuệ nhân tạo (AI) là khả năng thể hiện trí thông minh qua máy móc, khác với trí thông minh tự nhiên của con người Thuật ngữ "Trí tuệ nhân tạo" thường ám chỉ đến các hệ thống máy móc hoặc máy tính có khả năng bắt chước các chức năng nhận thức của con người, như học tập và giải quyết vấn đề.
Khi máy móc ngày càng nâng cao khả năng, các nhiệm vụ từng được xem là yêu cầu "trí thông minh" thường bị loại khỏi định nghĩa về Trí tuệ nhân tạo, hiện tượng này được gọi là hiệu ứng Trí tuệ nhân tạo Theo một câu châm ngôn trong Định lý của Tesler, "Trí tuệ nhân tạo là bất cứ điều gì chưa được thực hiện." Chẳng hạn, nhận dạng ký tự quang học đã trở thành công nghệ thông thường và không còn được coi là Trí tuệ nhân tạo Những khả năng hiện đại của máy móc, như hiểu lời nói của con người và cạnh tranh ở mức cao nhất trong các trò chơi chiến lược, thường được phân loại là Trí tuệ nhân tạo.
Cờ vua và Go), xe hoạt động độc lập, định tuyến thông minh trong mạng phân phối nội dung, và mô phỏng quân sự
Trí tuệ nhân tạo được chia thành ba loại hệ thống: phân tích, lấy cảm hứng từ con người và nhân cách hóa Hệ thống phân tích tập trung vào trí tuệ nhận thức, tạo ra đại diện nhận thức về thế giới và sử dụng kinh nghiệm quá khứ để đưa ra quyết định Hệ thống lấy cảm hứng từ con người kết hợp trí tuệ nhận thức và cảm xúc, cho phép hiểu và xem xét cảm xúc của con người trong quá trình ra quyết định Cuối cùng, hệ thống nhân cách hóa tích hợp các năng lực trí tuệ nhận thức, cảm xúc và xã hội, với khả năng tự ý thức và nhận thức trong các tương tác.
Trí tuệ nhân tạo, được thành lập như một môn học vào năm 1956, đã trải qua nhiều giai đoạn lạc quan và thất vọng, dẫn đến hiện tượng "mùa đông Trí tuệ nhân tạo" trước khi xuất hiện những cách tiếp cận mới và nguồn tài trợ mới Trong suốt lịch sử, nghiên cứu Trí tuệ nhân tạo thường được chia thành các trường con không liên lạc với nhau, dựa trên các yếu tố kỹ thuật như mục tiêu cụ thể (như "robot học" hay "học máy"), công cụ sử dụng (như "logic" hay mạng nơ-ron) và các khác biệt triết học Ngoài ra, các ngành con còn phản ánh các yếu tố xã hội, bao gồm tổ chức và công việc của các nhà nghiên cứu cụ thể.
Lĩnh vực trí tuệ nhân tạo được hình thành từ quan điểm rằng trí thông minh con người có thể được mô phỏng bởi máy móc, dẫn đến những tranh luận triết học về bản chất tâm trí và đạo đức trong việc tạo ra sinh vật nhân tạo Những vấn đề này đã được đề cập trong thần thoại, viễn tưởng và triết học từ thời cổ đại Một số người lo ngại rằng trí tuệ nhân tạo có thể trở thành mối nguy hiểm cho nhân loại nếu không được kiểm soát, trong khi những người khác cảnh báo rằng nó có thể gây ra tình trạng thất nghiệp hàng loạt, khác biệt với các cuộc cách mạng công nghệ trước đây.
Trong thế kỷ 21, sự phát triển của Trí tuệ nhân tạo (AI) đã được thúc đẩy mạnh mẽ nhờ vào sức mạnh máy tính, dữ liệu lớn và những hiểu biết lý thuyết mới AI hiện nay đóng vai trò quan trọng trong ngành công nghệ, giúp giải quyết nhiều thách thức trong lĩnh vực học máy, công nghệ phần mềm và nghiên cứu vận hành.
Máy học (Machine Learning) là một lĩnh vực của trí tuệ nhân tạo, bao gồm các phương pháp và thuật toán giúp máy tính tự động thích ứng và đưa ra quyết định giống như con người Nó liên quan đến nghiên cứu và phát triển các kỹ thuật cho phép hệ thống "học" và "suy nghĩ" từ dữ liệu để giải quyết các vấn đề cụ thể Máy học có mối liên hệ chặt chẽ với suy diễn thống kê, nhưng tập trung vào sự phức tạp của các thuật toán tính toán Nhiều bài toán trong máy học được coi là khó khăn, và một phần của lĩnh vực này là phát triển các thuật toán suy luận xấp xỉ có khả năng xử lý chúng Nhờ đó, máy học giúp máy tính phát hiện những thông tin giá trị ẩn sâu mà không cần lập trình rõ ràng.
Phương pháp phân tích quy nạp cho phép ước lượng mối quan hệ giá trị giữa các tham số dựa trên tập dữ liệu chuẩn đã thu thập Phương pháp này tận dụng hiệu quả nguồn dữ liệu phong phú và sẵn có, giúp nâng cao độ chính xác trong phân tích.
Phương pháp phân tích suy diễn sử dụng máy học để phân biệt các khái niệm dựa trên các quy luật Phương pháp này giúp tận dụng kiến thức chuyên ngành, từ đó hỗ trợ hiệu quả cho máy tính trong việc xử lý thông tin.
Phân loại giải thuật trong Máy học:
Học có giám sát (Supervised Learning) là phương pháp cung cấp cho máy tính một tập dữ liệu nguồn và đích mẫu tương ứng (Training dataset) để xây dựng mô hình mong muốn Máy tính được "huấn luyện" qua các mô hình quy định, với các tham số từ tập dữ liệu huấn luyện được sử dụng để kiểm tra tính thích hợp của mô hình trên tập dữ liệu kiểm tra (Testing dataset) Trong thực tế, dữ liệu ngõ vào mới được sử dụng để cải tiến mô hình hiện tại Ngược lại, học không giám sát chỉ cung cấp tập nguồn cho máy tính mà không có tập đầu ra, yêu cầu máy tính tự phân nhóm hoặc giảm độ phức tạp của dữ liệu Phương pháp này hữu ích trong việc lưu trữ và xử lý dữ liệu trong tương lai, đặc biệt khi có dữ liệu thực tế để áp dụng vào bài toán học có giám sát.
Các bài toán học không giám sát cũng được chia làm hai loại dựa vài tập nguồn của chúng
Học sâu, hay Deep Learning, là một nhánh của máy học sử dụng các thuật toán để mô hình hóa dữ liệu ở mức độ trừu tượng cao Phương pháp này áp dụng nhiều lớp xử lý phức tạp và các biến đổi phi tuyến để cải thiện khả năng nhận diện và phân tích dữ liệu.
Học sâu là một phương pháp trong lĩnh vực học máy, tập trung vào việc đại diện dữ liệu để cải thiện khả năng nhận diện và phân loại Một quan sát, chẳng hạn như hình ảnh, có thể được biểu diễn qua nhiều cách khác nhau, như vector cường độ điểm ảnh hoặc các đặc trưng hình học Việc sử dụng các đại diện phù hợp giúp đơn giản hóa việc học các nhiệm vụ phức tạp, như nhận diện khuôn mặt hay cảm xúc Học sâu hứa hẹn sẽ thay thế các tính năng thủ công bằng các thuật toán hiệu quả, hỗ trợ học không giám sát hoặc nửa giám sát và cải thiện tính năng phân cấp trong quá trình học.
Các nghiên cứu trong lĩnh vực này nhằm cải thiện các đại diện và phát triển mô hình để hiểu các đại diện từ dữ liệu không dán nhãn quy mô lớn Nhiều đại diện được lấy cảm hứng từ tiến bộ trong khoa học thần kinh, dựa trên các mô hình xử lý và truyền thông thông tin trong hệ thống thần kinh Cụ thể, chúng tập trung vào mã hóa thần kinh để xác định mối quan hệ giữa các kích thích khác nhau và phản ứng thần kinh tương ứng trong não.
Nhiều kiến trúc học sâu như mạng nơron sâu, mạng nơron tích chập sâu, mạng niềm tin sâu và mạng nơron tái phát đã được áp dụng hiệu quả trong các lĩnh vực như thị giác máy tính, nhận dạng giọng nói, xử lý ngôn ngữ tự nhiên, nhận dạng âm thanh và tin sinh học, cho thấy khả năng tạo ra kết quả xuất sắc cho nhiều nhiệm vụ khác nhau.
Ngoài ra, học sâu đã trở thành một từ ngữ thời thượng, hay một thương hiệu của mạng nơron.
MẠNG NƠ RON TÍCH CHẬP VÀ MẠNG NƠ RON TÍCH CHẬP ĐA NHIỆM LIÊN TẦNG
2.3.1 MẠNG NƠ RON TÍCH CHẬP
CNN là một trong những mô hình học sâu tiên tiến giúp cho chúng ta xây dựng được những hệ thống thông minh với độ chính xác cao
Mạng nơ-ron nhân tạo (ANN) đã được ứng dụng rộng rãi trong các bài toán nhận diện, nhưng chúng không thực sự hiệu quả với dữ liệu hình ảnh Sự liên kết quá mức trong mô hình gây ra những hạn chế nhất định Dữ liệu hình ảnh thường có kích thước lớn; ví dụ, một bức ảnh xám kích thước 32×32 pixels tạo ra vector đặc trưng 1024 chiều, trong khi ảnh màu cùng kích thước sẽ có độ phức tạp cao hơn.
Khi làm việc với ảnh 32×32, mô hình cần tới 3072 trọng số kết nối giữa lớp đầu vào và một nút ở lớp ẩn kế tiếp Số lượng trọng số này sẽ gia tăng đáng kể nếu số lượng nút và lớp ẩn tăng lên, dẫn đến việc mô hình trở nên đồ sộ Điều này gây khó khăn trong việc xử lý các ảnh có kích thước lớn hơn.
Dựa trên tư tưởng mới, CNN được thiết kế với kiến trúc khác biệt so với mạng truyền thẳng, trong đó chỉ một phần cục bộ của ảnh kết nối đến một nút trong lớp tiếp theo Qua các lớp của mô hình này, dữ liệu hình ảnh sẽ được "học" để nhận diện các đặc trưng, từ đó thực hiện phân lớp một cách hiệu quả.
CNN có cấu trúc hợp lý hơn so với mạng ANN truyền thống, với các lớp được sắp xếp theo ba chiều: chiều rộng, chiều cao và chiều sâu Các lớp trong CNN kết nối với nhau thông qua cơ chế tích chập, cho phép mỗi nơ-ron ở lớp tiếp theo được tạo ra từ các bộ lọc áp dụng lên vùng ảnh cục bộ của nơ-ron lớp trước Mỗi lớp sử dụng nhiều bộ lọc khác nhau, thường từ vài trăm đến vài nghìn bộ lọc, trong khi các lớp gộp giúp chắt lọc thông tin hữu ích và loại bỏ nhiễu Qua quá trình huấn luyện, CNN tự động học được các thông số cho các bộ lọc này.
Hình 2.4: Ví dụ mạng Nơ ron tích chập
Các lớp chập đã học được các thông số (kernel) để tự động điều chỉnh và trích xuất thông tin chính xác mà không cần phải lựa chọn các đặc tính.
Tích chập là quá trình nhân từng phần tử của ma trận 3×3 với ma trận bên trái, tạo ra một ma trận mới gọi là đặc tính chập Kết quả này được hình thành từ việc áp dụng ma trận lọc lên ma trận ảnh 5×5 bên trái.
Mạng CNN bao gồm nhiều lớp chồng chéo, sử dụng các hàm kích hoạt phi tuyến như ReLU để kích hoạt trọng số tại các nút Mỗi lớp sau khi áp dụng hàm kích hoạt sẽ tạo ra thông tin trừu tượng hơn cho các lớp phía sau.
Mỗi lớp trong mạng nơ-ron, sau khi áp dụng các hàm kích hoạt, sẽ tạo ra thông tin trừu tượng hơn cho các lớp tiếp theo Trong mô hình mạng truyền, mỗi nơ-ron đầu vào sẽ kết nối với từng nơ-ron đầu ra ở các lớp tiếp theo.
Mô hình mạng kết nối đầy đủ, hay còn gọi là mạng toàn vẹn, khác với mô hình CNNs, trong đó các lớp được kết nối thông qua cơ chế chập Kết quả của lớp tiếp theo là sản phẩm chập từ lớp trước, tạo ra các kết nối cục bộ Mỗi nơron ở lớp kế tiếp được sinh ra từ kết quả của bộ lọc áp dụng lên một vùng ảnh cục bộ của nơron trước đó.
Mỗi lớp trong mạng CNN sử dụng hàng trăm đến hàng nghìn lớp lọc khác nhau để kết hợp và tối ưu hóa kết quả Bên cạnh đó, các lớp gộp/lấy mẫu phụ được áp dụng để chắt lọc thông tin hữu ích và loại bỏ thông tin nhiễu Trong quá trình huấn luyện, mạng CNN tự động học các giá trị qua các lớp lọc dựa trên phương pháp thực hiện, nhằm tìm ra các thông số tối ưu cho từng lớp lọc, từ pixel thô, các gờ, hình dạng, đến khuôn mặt và các đặc tính khác Lớp cuối cùng của mạng được sử dụng để phân loại ảnh.
Mạng CNN gồm các lớp sau:
+ Lớp kết nối đầy đủ
Hình 2.5: Cấu trúc mạng Nơ ron tích chập (CNN) 2.3.1.1 Lớp tích chập
Lớp đầu tiên của mạng nơ-ron tích chập thể hiện tư tưởng cơ bản của mô hình này Thay vì kết nối tất cả các điểm ảnh, lớp sử dụng các bộ lọc nhỏ (filters hay kernel) kích thước 3×3 hoặc 5×5 để thực hiện phép tích chập với các giá trị điểm ảnh trong vùng cục bộ Các bộ lọc này sẽ được dịch chuyển theo một giá trị bước trượt, quét toàn bộ ảnh để thu thập thông tin.
Hình 2.6: Ví dụ tích chập
Với một bức ảnh kích thước 32×32 và mặt nạ lọc 3×3, ta sẽ tạo ra một ảnh mới kích thước 32×32 sau khi thêm lớp đệm vào ảnh gốc để tính tích chập cho các biên cạnh Số lượng bộ lọc trong lớp sẽ tương ứng với số ảnh đầu ra, và các ảnh này sẽ được truyền vào lớp tiếp theo Trọng số của các bộ lọc ban đầu được khởi tạo ngẫu nhiên và sẽ được điều chỉnh trong quá trình huấn luyện mô hình.
Sau khi thực hiện phép tích chập với bộ lọc, chúng ta chỉ cần áp dụng hàm ReLU để loại bỏ tất cả các giá trị âm trong kết quả.
Hàm ReLU được định nghĩa là:
Hàm ReLU được sử dụng nhằm mục đích đơn giản hóa tính toán và tăng tốc quá trình huấn luyện, ngay cả khi không cần trải qua bước tiền huấn luyện.
Lớp gộp sử dụng cửa sổ trượt để quét qua toàn bộ ảnh dữ liệu, với mỗi lần trượt theo một bước cố định Khác với lớp tích chập, lớp gộp không tính toán xoắn mà thực hiện việc lấy mẫu Khi cửa sổ trượt qua ảnh, chỉ một giá trị đại diện cho thông tin tại vùng đó được giữ lại Các phương thức lấy mẫu phổ biến trong lớp gộp bao gồm MaxPooling (lấy giá trị lớn nhất), MinPooling (lấy giá trị nhỏ nhất) và AveragePooling (lấy giá trị trung bình).
CÁC THUẬT TOÁN VÀ HÀM ĐƯỢC SỬ DỤNG
Mạng Siam, hay còn gọi là Siamese network, là một kiến trúc mạng học sâu cho phép so sánh hai bức ảnh hoặc mô hình để xác định xem chúng có thuộc về cùng một người hay không Kiến trúc này sử dụng các mạng con chia sẻ trọng số, giúp cải thiện độ chính xác trong việc nhận diện và phân loại hình ảnh.
Kiến trúc của mạng Siam dựa trên nền tảng mạng nơ-ron tích chập, trong đó lớp đầu ra đã được loại bỏ để mã hóa ảnh thành véc tơ nhúng Đầu vào của mạng Siam là hai bức ảnh ngẫu nhiên từ tập dữ liệu, và đầu ra là hai véc tơ thể hiện sự khác biệt giữa chúng Hàm mất mát thường sử dụng là hàm định mức chuẩn bậc 2.
Mô hình mạng Nơ ron tích chập tạo ra hai véc tơ nhúng x1 và x2, đại diện cho ảnh 1 và ảnh 2 với cùng số chiều Hàm f(x) thực hiện chức năng tương tự như một phép biến đổi qua Lớp kết nối đầy đủ, giúp tạo tính phi tuyến và giảm chiều dữ liệu xuống kích thước nhỏ, thường là 128 cho các mô hình đã được huấn luyện trước.
Khi x1, x2 là 2 người khác nhau:
Facenet là một mạng Siam, có khả năng biểu diễn hình ảnh trong không gian véc tơ Euclide n chiều (thường là 128), giúp giảm khoảng cách giữa các véc tơ nhúng để tăng cường mức độ tương đồng Trước khi có Facenet, hầu hết các thuật toán nhận diện khuôn mặt đã cố gắng biểu diễn khuôn mặt thông qua một véc tơ nhúng bằng cách sử dụng một "lớp cổ chai" để giảm chiều dữ liệu.
Các thuật toán nhúng thường gặp hạn chế với số lượng chiều véc tơ lớn (thường từ 1000 trở lên), điều này ảnh hưởng đến tốc độ xử lý Do đó, việc áp dụng thuật toán PCA để giảm chiều dữ liệu là cần thiết nhằm tăng hiệu suất tính toán.
Hàm mất mát chỉ đo lường khoảng cách giữa hai bức ảnh, cho phép mô hình học được sự giống nhau khi chúng thuộc cùng một lớp và sự khác nhau khi chúng thuộc lớp khác Tuy nhiên, trong một lượt huấn luyện, mô hình chỉ có thể học một trong hai khả năng này mà không thể đồng thời nắm bắt cả sự giống nhau và khác nhau.
Facenet đã khắc phục hiệu quả hai vấn đề quan trọng bằng cách thực hiện những điều chỉnh nhỏ Cụ thể, nó sử dụng một mạng nơ-ron tích chập ở lớp nền và giảm chiều dữ liệu xuống chỉ còn 128 chiều, giúp tăng tốc độ suy diễn và dự báo mà vẫn đảm bảo độ chính xác cao.
Hàm triplet loss là một hàm mất mát mạnh mẽ, giúp học được sự tương đồng giữa hai bức ảnh trong cùng một nhóm và phân biệt chúng với các bức ảnh không cùng nhóm Nhờ vào khả năng này, triplet loss mang lại hiệu quả vượt trội so với các phương pháp trước đây.
2.4.2 THUẬT TOÁN HỌC TỪ MỘT MẪU (ONE SHOT LEARNING)
Kĩ thuật "one shot learning" cho phép hệ thống học đại diện từ một mẫu duy nhất, giúp giải quyết vấn đề hạn chế dữ liệu trong các ứng dụng thực tế Ví dụ, một tổ chức muốn sử dụng hệ thống nhận dạng khuôn mặt để kiểm soát truy cập tòa nhà chỉ cần một số lượng hình ảnh hạn chế của mỗi nhân viên Tuy nhiên, mạng CNN thông thường không thể học được các đặc trưng cần thiết với lượng dữ liệu nhỏ này "One shot learning" giúp xây dựng chức năng so sánh hình ảnh và thông báo kết quả nếu chúng cùng là một người, ngay cả khi chỉ có một ảnh mẫu duy nhất.
Bài toán cho thấy rằng việc xây dựng một hệ thống mạng CNN với dữ liệu hạn chế là không khả thi Tuy nhiên, chúng ta có thể phát triển một hệ thống tương tự để trả về giá trị Nếu giá trị này nhỏ hơn hoặc bằng ngưỡng nhất định, điều đó có nghĩa là hai hình ảnh thuộc về cùng một người; ngược lại, nếu lớn hơn, chúng là của những người khác nhau Để so sánh hai hình ảnh x1 và x3, ta tính khoảng cách d giữa f(x1) và f(x2) theo công thức: d(x1, x2) = ‖f(x1) - f(x2)‖_2^2, áp dụng cho mọi cặp ảnh xi và xj.
Nếu xi, xj là cùng một người, d(xi,xj) rất nhỏ Nếu xi, xj là 2 người khác nhau, d(xi,xj) rất lớn
2.4.3 HÀM MẤT MÁT (TRIPLET LOSS)
Trong FaceNet, mạng nơ ron tích chập mã hóa ảnh thành véc tơ 128 chiều Các véc tơ này sau đó được sử dụng làm đầu vào cho hàm loss function, nhằm đánh giá khoảng cách giữa chúng Để áp dụng triple loss, chúng ta cần chọn 3 bức ảnh, trong đó một bức ảnh là anchor và được cố định Hai bức ảnh còn lại sẽ được lựa chọn sao cho một là negative (thuộc về người khác với anchor) và một là 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, NA, P, N
Mục tiêu của hàm loss function là tối thiểu hóa khoảng cách giữa hai ảnh khi chúng là negative và tối đa hóa khoảng cách khi chúng là positive Để đạt được điều này, cần lựa chọn các bộ ba ảnh sao cho ảnh Anchor và Positive có khoảng cách lớn, giúp thuật toán học được sự khác biệt rõ rệt, tương tự như việc so sánh ảnh hồi nhỏ với ảnh hiện tại Ngược lại, ảnh Anchor và Negative cần có khoảng cách nhỏ, giúp thuật toán phân biệt giữa hai ảnh giống nhau, giống như việc nhận diện một người anh em.
Hàm mất mát Triplot sử dụng ba bức ảnh làm đầu vào, với mục tiêu là làm tăng khoảng cách giữa hai vế trái và phải Để đạt được điều này, chúng ta sẽ cộng thêm một hệ số α, với α là một giá trị không âm rất nhỏ, vào vế trái.
Như vậy hàm loss function sẽ là:
Trong đó n là số lượng các bộ 3 hình ảnh được đưa vào huấn luyện
Việc nhận diện đúng ảnh Negative và Positive là cùng cặp hay khác cặp với Anchor sẽ không gây ảnh hưởng gì Mục tiêu chính của chúng ta là giảm thiểu tối đa các trường hợp mô hình nhận diện sai ảnh Negative thành Positive.
Để giảm thiểu tác động của các trường hợp nhận diện đúng Negative và Positive lên hàm loss function, chúng ta sẽ điều chỉnh giá trị đóng góp của chúng về 0.
Tức là nếu: sẽ được điều chỉnh về 0 Khi đó hàm loss function trở thành:
YÊU CẦU CỦA HỆ THỐNG
Hệ thống nhận diện khuôn mặt cần xác định chính xác những người trong cơ sở dữ liệu Ảnh đầu vào phải được chụp trong điều kiện ánh sáng tốt, không quá chói hoặc thiếu sáng Khuôn mặt cần được chụp chính diện, với góc nghiêng không vượt quá 45 độ, và không ngẩng hoặc cúi đầu quá 45 độ Các thành phần trên khuôn mặt phải rõ ràng, không bị che khuất nhiều để đảm bảo độ chính xác trong nhận diện.
SƠ ĐỒ KHỐI HỆ THỐNG
Hệ thống “Nhận diện khuôn mặt dùng mạng Nơ-ron tích chập” gồm 2 khối chính: Khối huấn luyện và Khối kiểm tra
Hình 3.1: Sơ đồ khối huấn luyện
Hình 3.2: Sơ đồ khối kiểm tra
THIẾT KẾ TỪNG KHỐI
Dữ liệu của mô hình đã được huấn luyện
Để bắt đầu, cần đánh giá và phân tích dữ liệu của mô hình đã được xây dựng trước đó Dữ liệu này bao gồm 1000 thư mục, mỗi thư mục được gán ký hiệu và chứa khoảng 50 bức ảnh của từng người, tất cả đều là người Việt Nam.
Hình 3.3: Dữ liệu của mô hình đã được huấn luyện
Bức ảnh được sử dụng trong nghiên cứu đều là của người Việt Nam với kích thước khuôn mặt đặc trưng của người Châu Á Để thuận tiện cho quá trình huấn luyện, các bức ảnh này đã được chuyển đổi sang dạng ảnh xám, và kích thước chuẩn của mỗi khuôn mặt là 128x128 pixel.
Để thu thập dữ liệu cho đào tạo, một chương trình lấy mẫu tự động được triển khai nhằm giảm thiểu sự can thiệp Người tham gia cần ngồi trước máy ảnh và từ từ quay đầu để máy ảnh ghi lại khuôn mặt từ nhiều góc độ khác nhau, trong các điều kiện ánh sáng và tình trạng khác nhau Dữ liệu thu thập được sẽ được tự động lưu vào thư mục mang tên người đó Hình 3.4 minh họa toàn bộ quá trình thu thập dữ liệu.
Hình 3.4: Dữ liệu đầu vào 3.3.2 TIỀN XỬ LÝ Ảnh sau khi chụp được đưa qua 3 bước:
Bước đầu tiên trong quy trình phát hiện khuôn mặt là sử dụng thuật toán ba lớp mạng nơ ron trong mạng nơ ron tích chập đa nhiệm liên tầng để nhận diện khuôn mặt từ hình ảnh gốc.
Sau khi cắt khuôn mặt trong ảnh, kích thước của chúng có sự khác biệt Để đồng bộ hóa, nhóm sinh viên đã điều chỉnh kích thước tất cả các ảnh về 32x32 pixel cho tất cả các tập dữ liệu.
Bước 3: Sau khi thay đổi kích thước ảnh màu, chuyển đổi nó thành ảnh xám và sử dụng mạng nơ-ron tích chập để huấn luyện ảnh.
3.3.3 MẠNG NƠ RON TÍCH CHẬP ĐA NHIỆM LIÊN TẦNG
Trong quá trình huấn luyện, MTCNN được sử dụng để phát hiện khuôn mặt trong ảnh và trích xuất đặc điểm khuôn mặt dưới dạng vec tơ nhúng 512 chiều Các đặc trưng này sau đó được nén thành 512 vecto, hay còn gọi là trọng số, và được lưu trữ trong kho dữ liệu MTCNN thường được áp dụng để phát hiện vùng khuôn mặt, sau đó tạo ra hộp giới hạn để đánh dấu và lưu trữ khuôn mặt đã cắt ra vào tập tin dữ liệu.
Facenet sử dụng kết quả từ quá trình xử lý để nén ảnh khuôn mặt thành mảng 512 chiều và lưu trữ vào kho dữ liệu Quá trình này lặp lại liên tục cho đến khi tất cả các ảnh được xử lý.
Khi Webcam bắt đầu ghi hình, các khuôn mặt được tải lên dưới dạng vector MTCNN được sử dụng để phát hiện khuôn mặt theo thời gian thực và nén thành vector 512 chiều Khuôn mặt đã nén sẽ được so sánh với kho dữ liệu, và thuật toán SVM sẽ nhận dạng dựa trên khoảng cách L2 để xác định sự trùng khớp giữa khuôn mặt hiện tại và khuôn mặt trong kho dữ liệu.
Quá trình nhận dạng khuôn mặt tương tự như phát hiện khuôn mặt, nhưng để thực hiện nhận dạng trong thời gian thực, cần sử dụng thuật toán MTCNN Việc nhận dạng khuôn mặt bằng SVM phụ thuộc vào tham số dung thứ và phiếu bầu Sau khi so sánh với tham số dung thứ 0.8, một danh sách các khuôn mặt phù hợp sẽ được tạo ra Mỗi khuôn mặt sẽ nhận được phiếu bầu cho một danh tính cụ thể, và danh tính có số phiếu bầu cao nhất sẽ được chọn làm kết quả nhận dạng Nếu có nhiều nhóm phiếu bầu thuộc về nhiều người, cần phải đếm số phiếu để xác định danh tính có số phiếu cao hơn.
LƯU ĐỒ CHƯƠNG TRÌNH CỦA HỆ THỐNG
3.4.3 LƯU ĐỒ KHỐI NHẬN DIỆN
KẾT QUẢ THỰC NGHIỆM
PHÂN TÍCH DỮ LIỆU VÀ ĐÁNH GIÁ MÔ HÌNH
4.1.1 Phân tích và đánh giá dữ liệu đã được huấn luyện
Dữ liệu cho đồ án này bao gồm 1000 thư mục ảnh, mỗi thư mục chứa 50 khuôn mặt của một người, và các hình ảnh được lưu trữ trong các thư mục mang tên tương ứng, như thể hiện trong Hình 4.1.
Hình 4.1: Dữ liệu của mô hình đã được huấn luyện
Hình 4.2 minh họa độ chính xác trong quá trình huấn luyện và kiểm tra trên tập dữ liệu Bảng 4.1 cung cấp thông tin chi tiết về quá trình này, bao gồm các thông số như thời gian huấn luyện, giá trị mất mát, độ chính xác, tốc độ học và số lần lặp lại.
Bảng 4.1: Quá trình huấn luyện và kiểm tra của tập dữ liệu có sẵn của mô hình
Chu kì Số lần lặp lại
Giá trị mất mát trên tập kiểm tra Độ chính xác trên tập kiểm tra(%)
4.1.2 PHÂN TÍCH VÀ ĐÁNH GIÁ DỮ LIỆU TỰ THU THẬP
Hình 4.3: Thư mục lưu ảnh sau khi chụp của từng mẫu
Dữ liệu được thu thập trong các điều kiện đặc biệt như biến đổi quan điểm, tắc, biến thể trong lớp và điều kiện chiếu sáng Môi trường thu thập dữ liệu là trong nhà vào ban ngày, với phòng kín và ánh sáng từ cửa sổ kính Khuôn mặt mẫu thể hiện nhiều cảm xúc khác nhau như nụ cười, giận dữ, bất ngờ, và lạnh lùng, cùng với các hành động khác biệt của mắt và miệng Các mẫu được chụp từ khoảng cách 1,5 mét giúp đảm bảo độ rõ ràng và chính xác, tạo điều kiện thuận lợi cho quá trình huấn luyện.
Sử dụng thuật toán, dữ liệu được chia tự động theo tỷ lệ 80/20, trong đó 80% dữ liệu được sử dụng để huấn luyện mô hình và 20% còn lại để kiểm tra và đánh giá hiệu quả của mô hình Kết quả đánh giá thu được như hình 4.3.
Hình 4.4: Dữ liệu tự thu thập và huấn luyện lại qua mô hình
Bảng 4.2 Quá trình huấn luyện và kiểm tra của tập dữ liệu các thành viên
Giá trị mất mát trên tập kiểm tra Độ chính xác trên tập kiểm tra
Bảng 4.2 trình bày chi tiết quá trình huấn luyện và kiểm tra, bao gồm các thông số quan trọng như thời gian huấn luyện, giá trị mất mát, độ chính xác, tốc độ học, số epoch và số lần lặp lại Những thông số này giúp đánh giá hiệu quả của mô hình trong quá trình học máy.
Độ chính xác của mô hình huấn luyện và kiểm tra trên tập dữ liệu khuôn mặt các thành viên trong lớp đạt 99,58%, cho thấy hiệu suất rất cao Điều này được hỗ trợ bởi kích thước lớn của tập dữ liệu, với 100 ảnh cho mỗi người, giúp giảm thiểu sự biến đổi giữa các bức ảnh.
QUY TRÌNH CỦA BÀI TOÁN NHẬN DIỆN KHUÔN MẶT SỬ DỤNG MẠNG NƠ RON TÍCH CHẬP
Dữ liệu được lưu trữ và sao chép vào Asus VivoBook với bộ vi xử lý Core-i5 2.3GHz và RAM 8GB, nơi thực hiện lưu trữ dữ liệu cũng như mô hình thử nghiệm cho quá trình huấn luyện và nhận diện.
Bước 1: Thực hiện lấy dữ liệu từ Webcam bằng cách chạy File : NewFace.py trên CMD với quyền Admin của thư mục tổng
Bước 2: Thực hiện sao chép dữ liệu sắp xếp tên và tập tin đúng với người trong thư mục: Anhgoc
Bước 3: Chạy hard code để bắt đầu xử lý các bức ảnh băng MTCNN:
Python/src/align_dataset_mtcnn.pyDataset/FaceData/anhgoc/Dataset/ FaceData/anhquaxuly image_size160 margin32 random_order gpu_memory_fraction 0.25
Bước 4: Huấn luyện cho máy học bằng FaceNet pythonsrc/classifier.py/Dataset/FaceData/anhquaxulyModels/20180402 -114759.pb Models/facemodel.pkl batch_size 1000
Bước 5: Nhận diện và ghi nhận kết quả: python src/face.py
HÌNH ẢNH KẾT QUẢ NHẬN DIỆN
Hình 4.5: Kết quả nhận diện thực tế
Bảng 4.3 Nhận diện khuôn mặt từ kiểm tra thực tế
SỰ TƯƠNG QUAN GIỮA CÁC PHƯƠNG PHÁP VÀ CÁC TRƯỜNG HỢP CÓ THỂ XẢY RA KHI NHẬN DIỆN
Có 5 trường hợp có thể xảy ra trong một bài toán nhận diện ở đề tài này Cùng một tệp dữ liệu 80% dùng để huấn luyện và 20% dùng để kiểm chứng Chúng ta có 2 tỉ lệ về độ chính xác khác nhau đối với mỗi phương pháp PCA có tỉ lệ chính xác khoảng 82,5% và CNN có tỉ lệ cao hơn là 98,75%
Bảng 4.4 Các phương pháp đánh giá và sự tương quan (đon vị: %)
Phương pháp Tỉ lệ chính xác
HUY KHIEM TOAN NGHIA UNKNOWN
TỔNG KẾT VÀ HƯỚNG PHÁT TRIỂN
TỔNG KẾT
Tỉ lệ nhận diện đối với các thành viên trong tệp dữ liệu tự thu thập cao nhất, dẫn đến giá trị mất mát thấp nhất Bởi vì các hình ảnh trong tệp được thu thập trực tiếp, các hình mẫu có sự thay đổi không đáng kể.
Tỉ lệ nhận diện đối với tập dữ liệu có sẵn cũng tương đối cao, đạt 95,7%
Vì đây là tập dữ liệu tốt, các hình ảnh chụp rõ nét, thay đổi về hướng mặt, độ sáng không quá nhiều
Tỉ lệ nhận diện thấp và sai sót nhiều nhất nằm ở trường hơp UNKNOWN hệ thống nhận diện sai khá nhiều (38/100)
Chương trình nhận diện nhanh, gần như là tức thời
Có thể nhận diện khuôn mặt bị che khuất một phần nhỏ
5.1.2 NHƯỢC ĐIỂM Để chương trình được xử lý một cách chính xác cần các khung mặt với vị trí Camera và độ phân giải Camera càng cao xử lý sẽ càng tốt Tốc độ xử lý của máy để chạy chương trình còn yếu
Để nhận diện khuôn mặt hiệu quả, các góc cạnh của khuôn mặt cần phải nằm trong một khung chữ nhật Việc này giúp tăng tỉ lệ nhận diện chính xác Hơn nữa, chỉ có thể nhận diện một khuôn mặt trong mỗi khung hình.
Trường hợp cơ sở dữ liệu ngoài còn nhận diện chưa tốt
Hình 5.1: Cảnh báo khi 2 khuôn mặt trên cùng khung hình
HƯỚNG PHÁT TRIỂN
Do thời gian thực hiện hạn chế và kiến thức còn hạn chế, nhóm sinh viên chỉ tập trung vào các chức năng cơ bản và theo sát mục tiêu đã đề ra Qua quá trình làm việc, nhóm nhận thấy rằng hệ thống có thể được mở rộng với nhiều nội dung bổ sung trong tương lai.
Nhận dạng khuôn mặt là một lĩnh vực nghiên cứu lâu đời nhưng vẫn còn nhiều khía cạnh cần khai thác Một trong những hướng đi quan trọng là tiêu chuẩn hóa dữ liệu đầu vào, vì hình ảnh đầu vào chất lượng cao có thể cải thiện đáng kể hiệu suất của mô hình Để nâng cao khả năng nhận diện, cần xây dựng các thuật toán mới, nghiên cứu thêm tài liệu và phát triển các phương pháp hiện có.
Hệ thống này có thể được phát triển như một hệ thống quản lý điểm danh cho công ty và trường học.