TỔNG QUAN
TÌNH HÌNH NGHIÊN CỨU
Trí tuệ nhân tạo đang trở thành công nghệ cốt lõi của cuộc cách mạng công nghiệp 4.0, không chỉ ở Việt Nam mà trên toàn thế giới Nhiều quốc gia đã nhận thức được xu thế phát triển và tác động mạnh mẽ của trí tuệ nhân tạo đến mọi lĩnh vực xã hội, từ kinh tế đến quân sự và chính trị Để đảm bảo phát triển kinh tế - xã hội bền vững và mang lại thịnh vượng, các quốc gia cần tận dụng hiệu quả những thành tựu của trí tuệ nhân tạo và tự động hóa, đồng thời đưa ra các giải pháp phù hợp cho quá trình chuyển đổi mạnh mẽ trong kỷ nguyên công nghiệp 4.0.
Trí tuệ nhân tạo gắn liền với công nghệ sinh trắc học, một lĩnh vực phát triển mũi nhọn trong công nghiệp thị giác máy tính hiện nay Công nghệ này sử dụng các đặc tính vật lý và sinh học riêng của từng cá nhân, bao gồm cảm xúc, võng mạc, khuôn mặt và vân tay, để nhận dạng Trong số đó, nhận dạng khuôn mặt và cảm xúc là hai loại đặc trưng tiêu biểu, đóng vai trò quan trọng trong việc phát triển các loại rô bốt có khả năng tương tác trực tiếp với con người.
Nghiên cứu về nhận dạng khuôn mặt và cảm xúc đã phát triển theo nhiều hướng khác nhau, tùy thuộc vào yêu cầu của từng hệ thống Trong hệ thống nhận dạng khuôn mặt, độ chính xác của các phương pháp thường được kiểm tra trên các tập dữ liệu trong điều kiện ánh sáng và góc nhìn hạn chế, dẫn đến kết quả thực tế thường không đạt yêu cầu Để cải thiện tình trạng này, các phương pháp học máy thống kê như PCA đã được đề xuất, cho phép lựa chọn các đặc trưng khuôn mặt từ một mẫu đã cho.
Trong nghiên cứu về nhận dạng khuôn mặt, hai phương pháp chính được sử dụng là tổ hợp eigenvectors, eigenfaces và fisherfaces kết hợp với mạng nơ-ron tích chập Hiện nay, hiệu quả của các mô hình nhận dạng khuôn mặt đã được cải thiện đáng kể nhờ vào việc áp dụng học sâu để tự động phát hiện đặc trưng khuôn mặt và kỹ thuật phân lớp thống kê Đối với hệ thống nhận dạng cảm xúc, việc xác định cảm xúc trên khuôn mặt con người là một thách thức lớn Nghiên cứu của Young Hoon Jo vào năm 2015 đã chỉ ra rằng cảm xúc có thể được xác định dựa trên các đặc điểm và khoảng cách giữa các thành phần trên khuôn mặt, qua việc phân tích các vùng khác nhau của khuôn mặt Tuy nhiên, phương pháp này chỉ hiệu quả khi các đặc điểm được coi là tiêu chuẩn Ngày nay, mạng nơ-ron xoắn tích chập đã mở ra những bước tiến mới trong việc nhận diện và xác định cảm xúc trên khuôn mặt con người.
Với mục tiêu phát triển công nghệ nhận diện, bài viết này nghiên cứu "Xây dựng hệ thống nhận dạng khuôn mặt và cảm xúc sử dụng mạng nơ-ron tích chập" Đề tài nhằm giúp máy tính và kit Raspberry Pi 4 có khả năng nhận diện khuôn mặt và cảm xúc của con người thông qua công nghệ mạng nơ-ron tích chập.
MỤC TIÊU ĐỀ TÀI
Đề tài nghiên cứu mạng nơ-ron tích chập với các khía cạnh như kiến trúc, mô hình đào tạo và trích xuất đặc trưng Bên cạnh đó, đề tài còn khám phá kit Raspberry Pi 4, ngôn ngữ Python và thư viện OpenCV để xây dựng cơ sở dữ liệu Nghiên cứu cũng tập trung vào việc áp dụng thuật toán phát hiện khuôn mặt từ camera hoặc ảnh, cùng với các bước xử lý ảnh Mô hình sử dụng các phương pháp đặc trưng HOG để cải thiện độ chính xác trong nhận dạng.
[3] hay bộ phận phân lớp Haar-Cascade để phát hiện khuôn mặt, mô hình nhận dạng
Hệ thống nhận dạng khuôn mặt sử dụng mô hình mạng nơ-ron tích chập để tự động trích chọn đặc trưng khuôn mặt, cho phép nhận diện ảnh và video từ máy tính, kit Raspberry Pi hoặc camera trực tiếp Bên cạnh đó, cá nhân thực hiện đề tài sẽ xây dựng và huấn luyện một mô hình mạng nơ-ron tích chập riêng biệt để nhận dạng cảm xúc, với mục tiêu phát triển hệ thống có khả năng nhận diện 7 loại cảm xúc khác nhau qua khuôn mặt, bao gồm “vui vẻ”, “buồn”, và “sợ hãi”.
“ giận dữ ”, “ ngạc nhiên ”, “ khó chịu ”, “ bình thường ” Hệ thống sẽ được cài đặt trên máy tính nhúng Raspberry Pi.
GIỚI HẠN ĐỀ TÀI
Hệ thống nhận dạng khuôn mặt được thử nghiệm trong một căn phòng trọ với khoảng 4 người, sử dụng dữ liệu từ camera để nhận diện ảnh và video lưu trữ trên máy tính, kit Raspberry Pi hoặc video trực tiếp từ camera Đối với hệ thống nhận dạng cảm xúc, thuật toán chỉ được áp dụng cho video trực tuyến trong điều kiện ánh sáng đầy đủ, với khuôn mặt chính diện và khoảng cách nhận diện biểu cảm khoảng 1m.
ĐỐI TƯỢNG NGHIÊN CỨU
Đề tài nghiên cứu những đối tượng sau:
Mô hình mạng nơ-ron tích chập đóng vai trò quan trọng trong việc phát triển hệ thống nhận dạng cảm xúc Đồng thời, việc ứng dụng mô hình này giúp tạo ra véc-tơ đặc trưng, nâng cao hiệu quả phân tích và nhận diện cảm xúc trong các ứng dụng công nghệ.
128 chiều cho mỗi khuôn mặt để nhận dạng khuôn mặt
- Các biểu cảm cảm xúc thông qua khuôn mặt
- Kit Raspberry Pi 4 xử lý nhận dạng khuôn mặt và cảm xúc
Thuật toán phát hiện khuôn mặt có khả năng nhận diện khuôn mặt từ ảnh hoặc video lưu trữ trên máy tính, cũng như từ kit Raspberry Pi và luồng video trực tuyến qua camera.
- Các tập cơ sở dữ liệu có sẵn dùng để huấn luyện cho mạng nơ-ron tích chập.
PHẠM VI NGHIÊN CỨU
Đề tài nghiên cứu tập trung vào mạng nơ-ron tích chập, bao gồm kiến trúc, mô hình đào tạo, và trích xuất đặc trưng cho hệ thống nhận dạng khuôn mặt và cảm xúc Ngoài ra, nghiên cứu cũng khám phá kit Raspberry Pi 4, ngôn ngữ lập trình Python và thư viện OpenCV Các thuật toán phát hiện khuôn mặt sẽ được áp dụng cho ảnh, video lưu trữ trên máy tính hoặc kit Raspberry Pi, cũng như luồng video trực tuyến từ camera.
BỐ CỤC ĐỀ TÀI
Dựa trên mục tiêu cụ thể đã trình bày trong phần trước, đề tài được phân thành năm chương với các nội dung cụ thể như sau:
Chương 1: Tổng quan: Giới thiệu về đề tài nghiên cứu, cho thấy được tình hình nghiên cứu của các đề tài liên quan, các giới hạn của đề tài và các phương hướng nghiên cứu, từ đó đưa ra phương hướng cụ thể cho đề tài nghiên cứu
Chương 2: Cơ sở lý thuyết : Tổng quát các lý thuyết của hệ thống bao gồm: quá trình xử lý ảnh, phát hiện khuôn mặt, đặc trưng HOG và bộ phân lớp Haar-Cascade, nhận dạng khuôn mặt, mạng nơ-ron nhân tạo , tìm hiểu về cấu trúc và hoạt động của mạng nơ-ron tích chập Trình bày các đặc trưng của mặt người, các phương pháp tiếp cận đặc trưng khuôn mặt và biểu cảm của khuôn mặt khi bày tỏ cảm xúc, thư viện xử lý ảnh mã nguồn mở OpenCV với ngôn ngữ Python trong xử lý ảnh
Chương 3: Xây dựng hệ thống nhận dạng khuôn mặt và cảm xúc dùng mạng nơ-ron tích chập trên kit Raspberry Pi 4: Trong chương này trình bày về sơ đồ khối của hệ
Trong bài viết này, chúng tôi sẽ trình bày chi tiết về cấu trúc và hoạt động của hệ thống nhận dạng khuôn mặt và cảm xúc, bao gồm các khối như camera, Raspberry Pi và màn hình hiển thị Hệ thống nhận dạng khuôn mặt sẽ được xây dựng với lưu đồ thuật toán rõ ràng cho các bước như tiền xử lý và trích chọn đặc trưng, sử dụng mạng nơ-ron tích chập Đối với hệ thống nhận dạng cảm xúc, chúng tôi sẽ tìm kiếm tập dữ liệu mẫu, giải thích các thông số của mô hình, cùng với quá trình huấn luyện và kiểm tra, nhằm thiết kế một hệ thống nhận dạng cảm xúc hiệu quả thông qua khuôn mặt.
Chương 4: Kết quả : Đưa ra kết quả hình ảnh thực tế về cơ sở dữ liệu, kết quả nhận dạng so với yêu cầu và mục tiêu đã đề ra đối với từng hệ thống trong đề tài
Chương 5: Kết luận và hướng phát triển: Trình bày các kết quả đạt được của từng hệ thống và hướng phát triển trong đề tài
CƠ SỞ LÝ THUYẾT
TỔNG QUAN VỀ QUÁ TRÌNH XỬ LÝ ẢNH
Xử lý ảnh là một lĩnh vực khoa học đang phát triển mạnh mẽ, liên quan đến việc biến đổi hình ảnh đầu vào thành hình ảnh hoặc các đặc tính liên quan Các chủ đề chính trong xử lý ảnh bao gồm phục hồi, nâng cao chất lượng và nén hình ảnh Sự phát triển của công nghệ này mang lại nhiều lợi ích cho cuộc sống, với ứng dụng rộng rãi trong các lĩnh vực như viễn thám, y tế, nghiên cứu pháp y, dệt may, khoa học vật liệu, quân sự, công nghiệp điện ảnh, xử lý tài liệu, công nghệ đồ họa và in ấn.
Có hai phương pháp có sẵn trong xử lý ảnh đó là xử lý ảnh tương tự và xử lý ảnh kỹ thuật số
Xử lý ảnh tương tự là quá trình thực hiện trên các tín hiệu tương tự, bao gồm xử lý hình ảnh trong không gian hai chiều Phương pháp này thao tác và xử lý hình ảnh thông qua việc thay đổi các tín hiệu điện.
Xử lý ảnh kỹ thuật số là quá trình sử dụng thuật toán máy tính để cải thiện hình ảnh trong môi trường số Lợi ích chính của phương pháp này bao gồm chất lượng hình ảnh cao, chi phí xử lý thấp và khả năng kiểm soát toàn bộ quy trình.
Hình 2.1: Quy trình xử lý ảnh
Quá trình thu nhận ảnh là bước đầu tiên và quan trọng trong xử lý ảnh, nơi hình ảnh được tiếp nhận từ các thiết bị như máy ảnh và cảm biến.
Việc lựa chọn máy quét ảnh phù hợp phụ thuộc vào đặc tính của đối tượng cần xử lý, với các yếu tố quan trọng như độ phân giải, chất lượng màu, dung lượng bộ nhớ và tốc độ thu nhận ảnh Các tín hiệu thu được từ máy quét sẽ được số hóa để phục vụ cho quá trình xử lý tiếp theo.
Tiền xử lý là bước quan trọng trong quá trình xử lý ảnh, nơi ảnh được cải thiện về độ tương phản, khử nhiễu, khử bóng và khử độ lệch Mục tiêu của bước này là nâng cao chất lượng ảnh, chuẩn bị cho các bước xử lý phức tạp hơn sau đó Quá trình tiền xử lý thường được thực hiện thông qua các bộ lọc.
Phân đoạn ảnh là bước quan trọng trong xử lý ảnh, giúp phân tích hình ảnh thành các thành phần có tính chất tương đồng dựa trên biên hoặc các vùng liên thông Tiêu chí xác định các vùng này có thể dựa vào màu sắc hoặc mức xám Mục tiêu của phân đoạn ảnh là tạo ra một mô tả tổng quát về các yếu tố cấu thành hình ảnh gốc Do lượng thông tin trong ảnh rất lớn, trong khi nhiều ứng dụng chỉ cần một số đặc trưng nhất định, nên cần thiết phải có quy trình giảm thiểu thông tin này Quy trình này bao gồm phân vùng ảnh và trích xuất các đặc tính chính.
Kết quả của bước phân đoạn ảnh thường được thể hiện dưới dạng dữ liệu điểm ảnh thô, bao gồm biên của một vùng ảnh hoặc tập hợp các điểm ảnh thuộc về vùng đó Việc chuyển đổi dữ liệu thô này thành dạng phù hợp cho xử lý máy tính là rất cần thiết Câu hỏi quan trọng là nên biểu diễn vùng ảnh dưới dạng biên hay vùng hoàn chỉnh Biểu diễn dạng biên thích hợp cho các ứng dụng chú trọng vào đặc trưng hình dạng bên ngoài, như góc cạnh và điểm uốn, trong khi biểu diễn dạng vùng phù hợp cho những ứng dụng khai thác tính chất bên trong, như vân ảnh hoặc cấu trúc xương của đối tượng.
Biểu diễn thích hợp cho một vùng ảnh là bước quan trọng trong quá trình chuyển đổi dữ liệu ảnh thô sang dạng dễ xử lý hơn Để tối ưu hóa việc xử lý, cần có phương pháp mô tả dữ liệu đã được chuyển đổi, làm nổi bật các tính chất quan trọng cần chú ý.
Nhận dạng và giải thích là bước cuối cùng trong quá trình xử lý ảnh, trong đó nhận dạng ảnh đơn giản là việc gán nhãn cho các đối tượng trong ảnh Chẳng hạn, trong nhận dạng chữ viết, các mẫu chữ cần được tách riêng và gán đúng ký tự của bảng chữ cái tương ứng Giải thích là công đoạn gán nghĩa cho các đối tượng đã được nhận biết, giúp hiểu rõ hơn về nội dung trong ảnh.
2.1.2 Điểm ảnh Để có thể xử lý ảnh bằng máy tính thì cần thiết phải tiến hành số hóa ảnh Quá trình số hóa được gọi là quá trình biến đổi gần đúng một ảnh liên tục thành một tập điểm phù hợp với ảnh thật về vị trí và độ sáng Khoảng các giữa các điểm ảnh đó được thiết lập sao cho mắt người không phân biệt được ranh giới giữa chúng [16] Mỗi một điểm như vậy gọi là điểm ảnh PEL: Picture Element hay gọi tắt là Pixel, trong khuôn khổ ảnh hai chiều mỗi Pixel tương ứng với cặp tọa độ (x, y) Điểm ảnh là một phần tử của ảnh số tại toạ độ với độ xám hoặc màu nhất định Kích thước và khoảng cách giữa các điểm ảnh đó được chọn thích hợp sao cho mắt người cảm nhận sự liên tục về không gian và mức xám của ảnh số gần như ảnh thật Mỗi phần tử trong ma trận được gọi là một phần tử ảnh Để dễ hiểu hơn về Pixel thì ta có thể quan sát Hình 2.2 dưới đây
Độ phân giải của ảnh là mật độ điểm ảnh trên một bức ảnh số, được xác định bởi khoảng cách giữa các điểm ảnh để đảm bảo sự liên tục khi quan sát bằng mắt thường Khoảng cách này tạo ra một mật độ phân bổ điểm ảnh theo trục x và y trong không gian hai chiều Ví dụ, độ phân giải của màn hình CGA là 320 điểm chiều dọc và 200 điểm ảnh (320*200) Mặc dù cùng một độ phân giải, màn hình CGA 12” cho hình ảnh mịn hơn so với màn hình CGA 17” do diện tích màn hình lớn hơn dẫn đến sự liên tục của hình ảnh kém hơn Hình 2.3 minh họa rõ ràng sự thay đổi độ mịn của hình ảnh theo kích thước màn hình.
Hình 2.3: Sự thay đổi độ mịn của hình ảnh theo kích thước
Mục đích: Tăng cường các thuộc tính cảm nhận, làm cho ảnh tốt lên theo một ý nghĩa nào đó, tiện phục vụ cho các xử lý tiếp theo
Các thao tác: Thay đổi độ tương phản, lọc nhiễu, thay đổi màu sắc, cường độ sáng, lọc nhiễu, nội suy, làm trơn ảnh
- Các phương pháp thao tác trên điểm
- Các thao tác không gian
Mục đích: Khôi phục lại ảnh ban đầu, loại bỏ các biến dạng ra khỏi ảnh tùy theo nguyên nhân gây ra biến dạng g(x,y) = ∫ −∞ ∞ ∫ −∞ ∞ ℎ(𝑥, 𝑦; 𝛼, 𝛽)𝑓(𝛼, 𝛽) 𝑑𝛼𝑑(𝛽 + 𝜂(𝑥, 𝑦))
Hàm 𝜂 (x, y) biểu diễn nhiễu cộng, trong khi f(a,ò) là hàm đại diện cho đối tượng Ảnh thu nhận được biểu diễn bởi g(x,y), và h(x,y;a,ò) là đáp ứng xung của hệ thống, còn được gọi là hàm tán xạ điểm.
Mục đích: Tìm ra các đặc trưng của ảnh, xây dựng quan hệ giữa chúng dựa vào các đặc trưng cục bộ
Các thao tác: Tìm biên, tách biên, làm mảnh đường biên, phân vùng ảnh, phân loại đối tượng
Các phương pháp: Phương pháp phát hiện biên cục bộ, dò biên theo quy hoạch động, phân vùng theo miền đồng nhất, phân vùng dựa theo đường biên
Mục đích: Giảm không gian lưu trữ, thuận tiện cho việc truyền thông
Phương pháp: Nén không mất thông tin, nén mất thông tin
- Nén không mất thông tin nén chính xác: Khai thác các thông tin dư thừa
- Nén mất thông tin: Khai thác các thông tin dư thừa và các thông tin không liên quan
Hiện nay có một số chuẩn nén hay dùng: JPEG, MPEG (JPEG-2000, MPEG-4)
Nhận dạng ảnh là quá trình mô tả và xác định đối tượng, thường diễn ra sau khi trích xuất các đặc tính của nó.
Có 2 kiểu mô tả đối tượng:
- Mô tả theo tham số
- Mô tả theo cấu trúc nhận dạng theo cấu trúc, ứng dụng: Nhận dạng đối tượng, mặt, vân tay, văn bản Ứng dụng:
- Nhận dạng đối tượng, mặt, vân tay, văn bản
Nhận dạng chữ in và đánh máy là công nghệ quan trọng giúp tự động hóa quá trình đọc tài liệu, từ đó nâng cao tốc độ và chất lượng thu nhận thông tin từ máy tính.
- Nhận dạng chữ viết tay với một số ràng buộc
KHUÔN MẶT VÀ CẢM XÚC
2.2.1 Đặc trưng của mặt người
Khuôn mặt đóng vai trò quan trọng trong giao tiếp xã hội, là yếu tố chính để truyền tải bản sắc và cảm xúc Chúng ta có khả năng nhận diện khuôn mặt quen thuộc chỉ trong nháy mắt, ngay cả sau nhiều năm không gặp, bất chấp những thay đổi như lão hóa hay kiểu tóc Hơn nữa, ảnh khuôn mặt thực tế còn gặp nhiều vấn đề như độ sáng, độ mờ, độ nhiễu, độ phân giải và góc ảnh, ảnh hưởng đến khả năng nhận diện.
Khuôn mặt của một người cung cấp nhiều thông tin quan trọng, bao gồm danh tính, giới tính, màu da, hướng nhìn, chủng tộc, hành vi, sức khỏe, độ tuổi và cảm xúc.
Hình 2.4: Một số thông tin có thể tìm thấy trong một bức ảnh khuôn mặt
2.2.2 Phương pháp tiếp cận đặc trưng khuôn mặt
Trong lý thuyết thông tin, việc trích xuất thông tin liên quan đến hình ảnh khuôn mặt yêu cầu mã hóa hiệu quả và so sánh với cơ sở dữ liệu tương tự Một phương pháp đơn giản để giải nén thông tin khuôn mặt là nắm bắt sự thay đổi trong tập hình ảnh, cũng như tính đối lập của các trạng thái biểu cảm, từ đó sử dụng để mã hóa.
Để xác định các thuộc tính chủ yếu của khuôn mặt, ta xử lý hình ảnh như một điểm trong không gian đa chiều, từ đó tìm ra các vector đặc trưng riêng của ma trận phương sai Các vector này được sắp xếp và phản ánh sự biến đổi giữa các hình ảnh khuôn mặt Mỗi vùng ảnh góp phần vào việc hình thành các vector đặc trưng, cho phép hiển thị chúng dưới dạng một ma trận gọi là mặt riêng.
2.2.3 Biểu cảm của khuôn mặt khi bày tỏ cảm xúc
Sự tương tác giữa con người và máy tính sẽ trở nên tự nhiên hơn khi máy tính có khả năng nhận biết và phản ứng với giao tiếp phi ngôn ngữ, đặc biệt là cảm xúc Cảm xúc của con người có thể được phân loại thành bảy loại cơ bản: vui vẻ, buồn, sợ hãi, tức giận, bất ngờ, khó chịu và bình thường Khuôn mặt đóng vai trò quan trọng trong việc thể hiện những cảm xúc này, với các cơ mặt có khả năng thay đổi, cho phép con người nhận diện tín hiệu ngay cả khi chúng rất tinh tế, đồng thời tiếp nhận thông tin qua tai và mắt.
Bình thường: mắt nhìn thẳng, môi mím lại, cơ mặt không có sự thay đổi nhiều
Vui vẻ: khi bày tỏ cảm xúc vui vẻ trên khuôn mặt sẽ xuất hiện nếp nhăn ở đuôi mắt, gò má nâng lên, thay đổi từ cơ vùng mắt
Buồn: đuôi mí mắt trên sụp xuống, mắt mất tập trung, kéo nhẹ xuống
Giận dữ: lông mày hạ xuống và kéo gần lại nhau, trừng mắt, môi mím lại
Ngạc nhiên: lông mày nâng lên, mắt mở to, há miệng
Sợ hãi: lông mày nhướng lên và kéo gần lại nhau, mí mắt trên kéo lên, mắt dưới căng, miệng hơi kéo sang hai bên
Khó chịu: nhăn mũi và môi trên nâng lên
MẠNG NƠ-RON TÍCH CHẬP
Mạng nơ-ron tích chập là một trong những mô hình học sâu phổ biến nhất hiện nay, nổi bật với khả năng nhận dạng và phân loại hình ảnh với độ chính xác vượt trội, thậm chí hơn cả con người trong nhiều trường hợp Mô hình này đang được phát triển và ứng dụng rộng rãi trong các hệ thống xử lý ảnh lớn của Facebook, Google và Amazon, phục vụ cho nhiều mục đích như tìm kiếm ảnh tự động và gợi ý sản phẩm cho người tiêu dùng.
Mạng nơ-ron tích chập ra đời nhằm cải tiến cách thức học thông tin trong ảnh của các mạng nơ-ron nhân tạo truyền thống Các mạng nơ-ron truyền thẳng gặp khó khăn do liên kết đầy đủ giữa các điểm ảnh, dẫn đến khối lượng tính toán phức tạp khi kích thước ảnh lớn Hơn nữa, sự liên kết này thường dư thừa, vì thông tin chính trong ảnh chủ yếu đến từ sự phụ thuộc giữa các điểm ảnh gần nhau Mạng nơ-ron tích chập đã được phát triển với kiến trúc mới, cho phép xây dựng liên kết chỉ từ một phần cục bộ trong ảnh, kết nối đến node trong lớp tiếp theo, thay vì toàn bộ ảnh như trước đây.
2.3.1 Mạng nơ-ron nhân tạo
Mạng ANN (Artificial Neural Network) là một phương pháp mô hình hóa hiệu quả cho các bài toán phi tuyến, lấy cảm hứng từ hoạt động của hệ thống thần kinh sinh vật Với cấu trúc gồm nhiều nơ-ron liên kết, ANN có khả năng xử lý thông tin tương tự như bộ não con người, cho phép học hỏi từ kinh nghiệm và lưu giữ kiến thức để dự đoán dữ liệu chưa biết Khả năng học của mạng ANN chủ yếu dựa vào kỹ thuật lan truyền ngược, giúp cải thiện độ chính xác trong các dự đoán.
Hình 2.5: Cấu trúc tổng quát của mạng nơ-ron ANN
Mạng nơ-ron nhân tạo (ANN) bao gồm các nơ-ron, mỗi nơ-ron nhận và xử lý dữ liệu để tạo ra kết quả duy nhất Kết quả này có thể được sử dụng làm đầu vào cho các nơ-ron khác Lớp ẩn trong ANN chứa các nơ-ron nhận dữ liệu từ lớp trước và chuyển đổi chúng cho các lớp xử lý tiếp theo Một ANN có thể có nhiều lớp ẩn, giúp tăng cường khả năng xử lý và học tập của mạng.
Hình 2.6: Quá trình xử lý thông tin trong mạng
Ngõ vào của dữ liệu được biểu diễn bằng các thuộc tính x1, x2, , xN dưới dạng vector N chiều Trọng số liên kết Wk1, Wk2,…, WkN của nơ-ron k thể hiện mức độ quan trọng của các tín hiệu đầu vào đối với quá trình xử lý dữ liệu.
16 trình xử lý thông tin Trong quá trình học, trọng số được cập nhật liên tục để có được kết quả mong muốn
Ngõ ra: yk là tín hiệu ngõ ra của nơ-ron, mỗi nơ-ron tương ứng một ngõ ra
Hàm tổng trong mạng nơ-ron (ANN) tính toán tổng trọng số của tất cả các ngõ vào, từ đó xác định khả năng kích hoạt của nơ-ron, hay còn gọi là kích hoạt bên trong Các nơ-ron này có thể tạo ra một hoặc không ngõ ra, nghĩa là ngõ ra của nơ-ron có thể được chuyển đến lớp tiếp theo trong mạng nơ-ron hoặc không Công thức tính hàm tổng cho n ngõ vào được áp dụng để xác định mức độ kích hoạt này.
Hình 2.7: Hàm tổng của một và nhiều nơ-ron đối với n input
Ngưỡng (còn gọi là một độ lệch – bias): Ngưỡng bk thường được đưa vào như một thành phần của hàm truyền
Hàm truyền được sử dụng để giới hạn phạm vi đầu ra của mỗi nơ-ron, nhận đầu vào kích hoạt từ hàm tổng và ngưỡng đã được xác định.
2.3.2 Mạng nơ-ron tích chập
Hình 2.8: Sự khác nhau giữa cấu trúc ANN và CNN
Mô hình ANN đã được ứng dụng rộng rãi trong nhận dạng, nhưng vẫn gặp khó khăn với dữ liệu lớn như hình ảnh Dữ liệu hình ảnh có kích thước lớn, được biểu diễn dưới dạng width x height x depth, dẫn đến đầu vào của mạng CNN là một tensor 3 chiều Ví dụ, một bức ảnh xám kích thước 48x48 pixels tạo ra vector đặc trưng 2304 chiều, trong khi ảnh màu cùng kích thước có thể lên tới 6912 chiều Điều này yêu cầu một mô hình lớn với nhiều trọng số Wk, gây khó khăn khi xử lý ảnh lớn hơn Hơn nữa, việc kết nối tất cả các điểm ảnh vào một nút là không cần thiết, vì sự phụ thuộc chủ yếu nằm giữa các điểm ảnh lân cận Để giải quyết vấn đề này, mạng nơ-ron tích chập CNN được phát triển với kiến trúc mới, cho phép 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.
Mô hình mạng nơ-ron tích chập bao gồm các lớp chính như lớp chập (Convolutional), lớp RELU, lớp gộp (Pooling) và lớp kết nối đầy đủ (Fully connected) Qua 18 lớp của mô hình, các đặc trưng sẽ được "học" để phân lớp hiệu quả Sự sắp xếp số lượng và thứ tự của các lớp này tạo ra những mô hình khác nhau, phù hợp với từng bài toán cụ thể.
Mạng CNN thực hiện quá trình so sánh hình ảnh theo từng mảnh, gọi là các đặc điểm Bằng cách xác định các đặc điểm khớp nhau ở cùng vị trí trong hai hình ảnh, CNN có khả năng nhận diện sự tương đồng hiệu quả hơn so với việc so sánh toàn bộ bức ảnh.
Hình 2.10: CNN tìm những điểm tương đồng trên bức ảnh
Mỗi đặc điểm trong hình ảnh giống như một hình ảnh mini, tạo thành một mảng hai chiều nhỏ Những đặc điểm này tương ứng với các khía cạnh chung của bức ảnh Đối với hình ảnh X, các đặc điểm như đường chéo và hình chữ thập sẽ được CNN nhận diện, giúp nắm bắt tất cả những yếu tố quan trọng của hầu hết các hình ảnh X Những đặc điểm này có khả năng khớp với phần cánh và phần trung tâm của bất kỳ hình ảnh X nào.
Lớp chập trong mạng nơ-ron tích chập (CNN) bao gồm "Convolutional 2D" và "Convolutional 3D" Convolutional 2D cho phép bộ lọc di chuyển theo cả chiều ngang và chiều dọc, trong khi Convolutional 3D mở rộng khả năng di chuyển của bộ lọc thêm cả chiều sâu của ảnh Khi xử lý một hình ảnh mới, CNN không xác định được vị trí chính xác của các đặc điểm, do đó nó sẽ thử nghiệm các vị trí khác nhau Để tính toán sự ăn khớp của các đặc điểm, lớp chập sử dụng các bộ lọc nhỏ (thường là 3×3 hoặc 5×5) áp vào vùng ảnh và thực hiện tích chập giữa bộ lọc và giá trị điểm ảnh trong vùng đó, sau đó dịch chuyển bộ lọc theo một bước trượt để quét toàn bộ ảnh.
Hình 2.11: Chập ma trận ảnh với bộ lọc 3x3
Nguyên tố trọng tâm của nhân chập được áp dụng lên điểm ảnh cần xét, thay thế nó bằng tổng trọng số của điểm ảnh đó và các điểm ảnh lân cận Khi xử lý một bức ảnh 48x48 với bộ lọc 3x3, ta thu được một ảnh mới cũng kích thước 48x48 từ quá trình tích chập Số lượng bộ lọc trong lớp sẽ tương ứng với số lượng ảnh đầu ra, được truyền vào lớp tiếp theo Để hoàn tất quá trình tích chập, chúng ta lặp lại quy trình này, thu thập kết quả từ mỗi lần tích chập và tạo ra một mảng hai chiều mới, từ đó xác định vị trí của từng mảnh trong bức ảnh Bản đồ các phần khớp nhau này cũng chính là phiên bản đã được lọc từ hình ảnh gốc.
Bản đồ này thể hiện vị trí của các đặc điểm trong hình ảnh, với các giá trị gần 1 cho thấy sự khớp mạnh, giá trị gần -1 cho thấy khớp mạnh với âm bản của đặc điểm, và giá trị gần 0 cho thấy không khớp với bất kỳ loại nào.
Lớp này thường được cài đặt ngay sau lớp chập Lớp này sử dụng hàm kích hoạt f (x)
= max (0, x) nhằm chuyển toàn bộ giá trị âm trong kết quả lấy từ lớp chập thành giá trị
0 Ý nghĩa của cách cài đặt này chính là tạo nên tính phi tuyến cho mô hình Tương tự như trong mạng truyền thẳng, việc xây dựng dựa trên các phép biến đổi tuyến tính sẽ khiến việc xây dựng đa tầng đa lớp trở nên vô nghĩa Có rất nhiều cách để khiến mô hình trở nên phi tuyến như sử dụng các hàm kích hoạt sigmoid, tanh… nhưng f (x) = max (0, x) hàm dễ cài đặt, tính toán nhanh mà vẫn hiệu quả [7]
Hình 2.12: Ví dụ về lớp RELU
Giới thiệu về máy tính nhúng kit Raspberry Pi
Raspberry Pi là một máy tính nhúng nhỏ gọn, kích thước tương đương thẻ tín dụng, được phát triển bởi Raspberry Pi Foundation tại Anh Mục đích chính của nó là thúc đẩy giảng dạy khoa học máy tính cơ bản trong các trường học và hỗ trợ các nước đang phát triển.
Hình 2.17: Hình ảnh thực tế kit Raspberry Pi
Hình 2.18: Cấu tạo của Raspberry Pi 4
Hình 2.19: Sơ đồ chân của Raspberry Pi 4
Raspberry Pi 4 là một máy tính nhỏ gọn với kích thước tương đương một thẻ ATM, tích hợp đầy đủ các linh kiện cần thiết cho việc sử dụng như một máy vi tính Bảng mạch của Raspberry Pi 4 bao gồm CPU, GPU, RAM, khe cắm thẻ microSD, Wifi, Bluetooth và 4 cổng USB, mang đến khả năng kết nối và xử lý mạnh mẽ.
Chi tiết thông số kĩ thuật:
- Broadcom BCM2837 chipset running at 1.2 GHz 64-bit quad-core ARM Cortex- A53
- Hỗ trợ trên ARM GNU/Linux và cả Windows 10 IoTs
- Kết nối màn hình hiển thị DSI
- Kích thước: 85mm x 56mm x 17 mm.
Xử lý ảnh với Python
2.5.1 Giới thiệu ngôn ngữ lập trình Python
Python là ngôn ngữ lập trình thông dịch hướng đối tượng, mang tính chất bậc cao và ngữ nghĩa động Ngôn ngữ này hỗ trợ module và gói, khuyến khích việc lập trình module hóa và tái sử dụng mã Trình thông dịch Python cùng với thư viện chuẩn có sẵn dưới dạng mã nguồn hoặc nhị phân miễn phí cho mọi nền tảng chính và có thể được phân phối tự do.
Một vài đặc điểm về ngôn ngữ Python:
- Ngữ pháp đơn giản, dễ đọc
- Vừa hướng thủ tục, vừa hướng đối tượng
- Hỗ trợ module và hỗ trợ gói
- Xử lý lỗi bằng ngoại lệ
- Kiểu dữ liệu động ở mức cao
- Có các bộ thư viện chuẩn và các module ngoài, đáp ứng tất cả các nhu cầu lập trình
- Có khả năng tương tác với các module khác viết trên C/C++ hoặc Java cho Jython, hoặc Net cho IronPython
- Có thể nhúng vào ứng dụng như một giao tiếp kịch bản
2.5.2 Một số ưu điểm của ngôn ngữ Python:
Python offers seamless integration with various components, including COM objects, NET through IronPython and Python for NET, as well as CORBA and Java Additionally, Python is supported by the Internet Communications Engine (ICE) and numerous other technologies.
29 công nghệ kết nối khác Có thể viết các thư viện trên C/C++ để nhúng vào Python và ngược lại
Python là ngôn ngữ lập trình đa nền tảng, hỗ trợ nhiều hệ điều hành như Windows, Linux/Unix, OS/2, Mac, và Amiga Nó cũng có phiên bản cho NET, máy ảo Java và điện thoại di động (Nokia Series 60) Với Python, mã nguồn có thể chạy đồng nhất trên tất cả các nền tảng, mang lại sự linh hoạt và tiện lợi cho lập trình viên.
Python là một ngôn ngữ lập trình đơn giản và dễ học, nhờ vào hệ thống thư viện chuẩn phong phú cùng với nhiều thư viện mã nguồn mở được cộng đồng lớn chia sẻ trực tuyến.
Python là ngôn ngữ mã nguồn mở, cho phép người dùng cài đặt và sử dụng tự do, bao gồm cả mục đích thương mại Giấy phép của Python được quản lý bởi Python Software Foundation.
Các thư viện sử dụng trong Python
Trong bài viết này, chúng tôi sẽ khám phá cách sử dụng bộ phân lớp Haar-Cascade từ thư viện OpenCV kết hợp với Keras và TensorFlow Ngoài ra, chúng tôi cũng sẽ sử dụng một số thư viện cơ bản cho deep learning như Numpy và Imutils để hỗ trợ quá trình phát triển.
Hình 2.20: Cấu trúc thư viện OpenCV
OpenCV là thư viện mã nguồn mở hàng đầu cho thị giác máy tính, xử lý ảnh và máy học, cung cấp hàng ngàn thuật toán tối ưu hóa Thư viện này trở thành công cụ phổ biến cho các ứng dụng thị giác máy tính, được áp dụng rộng rãi từ hình ảnh xem đường của Google đến các chương trình nghệ thuật tương tác, nhận diện khuôn mặt, rô-bốt và xe hơi tự lái.
Trong bài viết này, chúng tôi sử dụng OpenCV để thực hiện các thao tác đọc và xử lý ảnh cơ bản Để cải thiện tốc độ xử lý trong việc phát hiện khuôn mặt, thuật toán Haar-Cascade được áp dụng Tuy nhiên, do độ chính xác tương đối kém, Haar-Cascade chỉ phù hợp cho những công đoạn cần tốc độ cao mà không yêu cầu độ chính xác quá cao.
Keras, thư viện mã nguồn mở hàng đầu cho mạng nơ-ron nhân tạo, được phát triển vào năm 2015 bởi François Chollet, một kỹ sư nghiên cứu tại Google Được viết bằng ngôn ngữ Python, Keras là API bậc cao có khả năng tích hợp với các thư viện học sâu nổi tiếng như TensorFlow.
31 google), Microsoft Cognitive Toolkit (được phát triển bởi microsoft), theano (người phát triển chính Yoshua Bengio) Keras có một số ưu điểm như :
Dễ sử dụng, xây dựng model nhanh
Có thể run trên cả cpu và gpu
Hỗ trợ xây dựng CNN , RNN và có thể kết hợp cả 2
Cấu trúc của Keras có thể được chia ra thành 3 phần chính:
Hàm chức năng để dựng bộ xương cho model
Hàm chức năng dùng để tiền dữ liệu
Hàm chức năng ở trong bộ xương của model
NumPy, viết tắt của "Numeric Python", là một mô-đun mã nguồn mở cho Python, cung cấp các chức năng biên dịch nhanh cho các phép toán toán học và số Nó làm phong phú ngôn ngữ lập trình Python với các cấu trúc dữ liệu mạnh mẽ, cho phép tính toán hiệu quả các mảng và ma trận đa chiều, bao gồm cả các ma trận và mảng lớn Ngoài ra, NumPy còn cung cấp một thư viện phong phú các hàm toán học cấp cao để thao tác trên các ma trận và mảng.
NumPy được phát triển dựa trên hai mô đun Python trước đó là Numeric và Numarray, trong đó Numeric là một mô đun hiệu suất cao cho tính toán số học nhưng đã lỗi thời Numarray là một phiên bản viết lại hoàn chỉnh của Numeric nhưng cũng không còn được hỗ trợ NumPy kết hợp mã nguồn của Numeric và các tính năng của Numarray, mang lại nhiều ưu điểm cho việc sử dụng trong Python.
Triển khai hiệu quả các mảng đa chiều
Được thiết kế để tính toán khoa học
XÂY DỰNG HỆ THỐNG NHẬN DIỆN KHUÔN MẶT VÀ CẢM XÚC DÙNG MẠNG NƠ-RON TÍCH CHẬP TRÊN KIT RASPBERRY PI 4
Yêu cầu của hệ thống
Hệ thống nhận dạng khuôn mặt và cảm xúc cần đáp ứng các yêu cầu chung như hoạt động hiệu quả trong môi trường ánh sáng đầy đủ và có độ tương phản thích hợp, đồng thời không bị ảnh hưởng bởi các yếu tố bên ngoài như nguồn sáng mạnh hay ánh nắng mặt trời Ngoài ra, mỗi hệ thống cũng cần có những yêu cầu cụ thể riêng để đảm bảo hiệu suất tối ưu.
Đối với hệ thống nhận dạng khuôn mặt:
Hệ thống có khả năng nhận diện đối tượng thông qua hình ảnh hoặc video có sẵn trong kit Raspberry Pi, cũng như từ luồng video trực tiếp từ webcam kết nối với Raspberry Pi 4 qua cổng USB.
Hệ thống có khả năng phát hiện và nhận dạng một hoặc nhiều đối tượng, tối đa là 4 người, trong một không gian như căn phòng trọ, dựa trên cơ sở dữ liệu hiện có.
- Hệ thống sẽ chạy độc lập với máy tính thông qua kit Raspberry Pi 4, dữ liệu ảnh đầu vào sẽ được lấy thông qua webcam trên kit Raspberry
Hệ thống sẽ hiển thị kết quả nhận dạng với các đối tượng được gắn nhãn từ tập cơ sở dữ liệu, trong khi những đối tượng không có trong cơ sở dữ liệu sẽ được gán nhãn là “unknown”.
Đối với hệ thống nhận dạng cảm xúc :
- Hệ thống nhận dạng được cảm xúc trên khuôn mặt với khoảng cách từ webcam đến khuôn mặt cần nhận dạng khoảng 1m
- Hệ thống nhận dạng được 7 loại cảm xúc cơ bản: “vui vẻ”, “buồn”, “sợ hãi”, “giận dữ”, “ngạc nhiên”, “khó chịu” và “bình thường”.
Đặc tả hệ thống
Hệ thống bao gồm khối nguồn 5V và 220V, đầu vào từ camera webcam, bộ xử lý Raspberry Pi 4 và màn hình máy tính Dữ liệu đầu vào có thể là ảnh, video có sẵn hoặc luồng video trực tiếp từ webcam Khi sử dụng video có sẵn, hệ thống sẽ phân đoạn video và xác định xem mỗi khung hình có chứa khuôn mặt hay không Thuật toán phát hiện khuôn mặt sẽ được áp dụng để xác định vị trí khuôn mặt trong ảnh, sau đó tiến hành tiền xử lý nhằm cải thiện chất lượng ảnh như loại nhiễu, căn chỉnh và chuẩn hóa kích thước Các khuôn mặt đã được tiền xử lý sẽ được đưa vào mô hình mạng nơ-ron tích chập (CNN) để tự động học và trích xuất đặc trưng cho nhận dạng khuôn mặt hoặc cảm xúc Đối với nhận dạng khuôn mặt, thuật toán phân lớp sẽ gán nhãn cho các khuôn mặt, trong khi kết quả từ mô hình CNN cho nhận dạng cảm xúc sẽ được xử lý qua lớp Softmax để trả về xác suất cho từng loại cảm xúc.
Sơ đồ khối hệ thống
Dựa vào đặc tả của hệ thống, ta có được sơ đồ khối chung của hệ thống được trình bày theo Hình 3.1
Hình 3.1: Sơ đồ khối của hệ thống
Camera kết nối với kit Raspberry Pi 4 qua cổng USB, thu nhận hình ảnh và gửi luồng dữ liệu về kit Để đạt được chất lượng hình ảnh tốt nhất, camera nên được đặt cố định cách một đến hai mét trong môi trường đủ sáng Ảnh ngõ vào bao gồm các khuôn mặt được ghi lại từ camera hoặc ảnh có sẵn.
Kit Raspberry Pi 4 có khả năng phát hiện khuôn mặt, trích xuất đặc trưng và tạo cơ sở dữ liệu để nhận dạng và xác minh danh tính của đối tượng Nó cũng xử lý và dự đoán cảm xúc của khuôn mặt dựa trên tập dữ liệu đã được huấn luyện.
Màn hình máy tính kết nối với kit Raspberry Pi 4 qua phần mềm Remote Desktop để hiển thị kết quả của quá trình nhận dạng.
Khối nguồn: Bao gồm khối nguồn 5V sẽ được sử dụng cho kit Raspberry Pi 4, khối nguồn 220V được sử dụng để màn hình mà hình hiển thị.
Thiết kế chi tiết hệ thống
Hệ thống hoạt động hiệu quả trong môi trường ánh sáng ổn định, do đó không cần camera có độ phân giải cao hoặc hồng ngoại Vì lý do này, cá nhân thực hiện đề tài đã chọn camera Logitech C270 với cấu hình phù hợp.
- Độ phân giải camera: Camera được sử dụng với độ phân giải 720p, hình ảnh chụp 5-megapixel, quay video 1204 x768-megapixel
- Kích thước khung hình: Ảnh được mã hóa dưới dạng file JPEG với kích thước 1280 x 720 pixel
- Tốc độ khung hình: 25 hình/s
- Camera hoạt động theo hệ thống, nhiệm vụ thu thập hình ảnh mỗi khi có đối tượng nằm trong vùng phát hiện của camera
3.4.2 Khối xử lý Raspberry Pi 4
3.4.2.1 Hệ thống nhận dạng khuôn mặt
3.4.2.1.1 Sơ đồ quá trình xử lý hệ thống nhận dạng khuôn mặt
Sơ đồ quá trình xử lý hệ thống nhận dạng khuôn mặt trong kit Raspberry Pi 4:
Hình 3.2: Sơ đồ mô tả tiến trình của hệ thống nhận dạng khuôn mặt trên kit Raspberry
Kit Raspberry Pi 4 có khả năng kết nối với camera, đọc file ảnh và video, đồng thời phát hiện và nhận dạng một hoặc nhiều khuôn mặt trong video đầu vào Sau khi xử lý, hệ thống sẽ đưa ra kết luận về khuôn mặt được phát hiện.
Lưu đồ xử lý của hệ thống nhận dạng khuôn mặt
Hình 3.3: Lưu đồ xử lý của hệ thống nhận dạng khuôn mặt 3.4.2.1.1.1 Tạo cơ sở dữ liệu ảnh
Cơ sở dữ liệu ảnh khuôn mặt bao gồm những bức ảnh của các đối tượng đã biết, có thể được tạo ra bằng cách thu thập hình ảnh từ Internet, như từ các mạng xã hội Facebook, Zalo, Yahoo, hoặc từ các bộ ảnh mẫu như VGG dataset, hoặc thậm chí tự chụp Trong hệ thống nhận dạng khuôn mặt, cơ sở dữ liệu này được tạo tự động thông qua việc cắt và lưu trữ các vùng ảnh có trong video hoặc hình ảnh.
Quá trình tạo cơ sở dữ liệu ảnh sử dụng bộ đặc trưng HOG để tìm vùng chứa khuôn mặt trong video cho thấy độ chính xác cao, đáp ứng yêu cầu kỹ thuật Trong khi đó, việc áp dụng đặc trưng Haar-like của bộ phân lớp Haar-Cascade có thể phát hiện đúng vùng khuôn mặt, nhưng thường gặp lỗi như thiếu các bộ phận, ví dụ chỉ nhận diện từ mũi đến cằm Điều này dẫn đến bộ dữ liệu ảnh không đầy đủ thông tin khuôn mặt, gây sai lệch trong việc trích xuất đặc trưng và kết quả nhận dạng không đạt yêu cầu.
Cơ sở dữ liệu được sử dụng trong đề tài, có hai bộ ảnh được sử dụng làm cơ sở dữ liệu:
Bộ dữ liệu đầu tiên là bộ ảnh mẫu từ cơ sở dữ liệu LFW, bao gồm 13,233 hình ảnh khuôn mặt được gắn nhãn tự nhiên của 5,749 người, thu thập từ trang web và Internet Mỗi khuôn mặt được gán tên của người đó, trong đó có 1,680 người sở hữu từ 2 hình ảnh khác biệt trở lên Tất cả ảnh được lưu trữ dưới định dạng JPEG trong bộ nhớ của PC.
Hình 3.5: Một số khuôn mặt được lấy từ tập cơ sở dữ liệu LFW
Bộ dữ liệu thứ hai bao gồm 1200 hình ảnh chụp trực tiếp từ điện thoại, được lưu trữ trong bộ nhớ của kit Raspberry Pi 4 dưới định dạng JPEG với độ phân giải phù hợp Các hình ảnh này đại diện cho 4 nam giới.
Hình 3.6: Một số hình ảnh từ tập cơ sở dữ liệu tự tạo 3.4.2.1.1.2 Phát hiện khuôn mặt
Khối phát hiện khuôn mặt có nhiệm vụ tìm kiếm và xác định vị trí khuôn mặt trong ảnh, sử dụng đặc trưng HOG và bộ phân lớp tuyến tính SVM Đầu vào là khung ảnh từ video, đầu tiên chuyển đổi ảnh màu sang ảnh xám và thực hiện cân bằng Histogram để nâng cao chất lượng ảnh Sau đó, tính toán sự biến thiên màu sắc tại tất cả các pixel theo chiều x và y.
Khối nhiệm vụ này thực hiện việc tách khuôn mặt ra khỏi ảnh và chuẩn hóa hình ảnh Các ảnh đầu vào được lấy trực tiếp từ camera, và kết quả là khuôn mặt được tách và chuẩn hóa Chức năng của khối bao gồm các bước như tách khuôn mặt, chuẩn hóa kích thước ảnh, cân chỉnh tư thế thẳng đứng và xoay ngang theo đường nối hai mắt, cũng như chuẩn ánh sáng, chuẩn hóa xám và lọc nhiễu.
Hình 3.7: Sơ đồ quá trình tiền xử lý
Quá trình trích xuất đặc trưng nhằm tạo ra véc-tơ đặc tính riêng biệt cho khuôn mặt cần nhận diện, với số chiều của véc-tơ này nhỏ hơn nhiều so với tín hiệu đầu vào Đây là một kỹ thuật xử lý ảnh, cho ra ma trận chứa các giá trị đặc trưng của hình ảnh, và phương pháp trích xuất sẽ được lựa chọn tùy thuộc vào từng trường hợp cụ thể.
Hệ thống nhận dạng khuôn mặt sử dụng mô hình mạng ResNet, được đào tạo bởi Davis King, tác giả thư viện Dlib, để trích xuất 128 giá trị đặc trưng cho mỗi khuôn mặt Mô hình này tự động phát hiện và trích chọn đặc trưng khuôn mặt từ một tập mẫu, dựa trên việc học không gian Euclidean trong từng ảnh thông qua cấu hình mạng nơ-ron chập Quá trình huấn luyện đảm bảo rằng khoảng cách giữa các khuôn mặt của cùng một người là nhỏ nhất, trong khi khoảng cách giữa các khuôn mặt khác nhau là lớn nhất.
Sơ đồ quá trình của việc trích chọn đặc trưng
Hình 3.8: Sơ đồ quá trình trích chọn đặc trưng
Mạng được huấn luyện để tạo ra véc-tơ đặc trưng 128 chiều thông qua hàm chi phí bộ ba, trong đó một bộ ba bao gồm hai khuôn mặt của cùng một người và một khuôn mặt của người khác Mục tiêu của hàm chi phí là phân tách cặp khuôn mặt của cùng một người khỏi khuôn mặt của người khác dựa trên khoảng cách Dựa vào các kết quả đo lường thu được, thuật toán sẽ ước lượng giá trị tương ứng.
Hàm chi phí được xác định bằng cách so sánh khoảng cách giữa hai tập đặc trưng từ hai ảnh khuôn mặt khác nhau của cùng một người (gọi là người thứ nhất) và một tập đặc trưng từ ảnh khuôn mặt của người khác (gọi là người thứ hai) Sau khi tính toán, các giá trị ước lượng của hàm chi phí sẽ được lan truyền ngược từ lớp cuối đến lớp đầu của mạng để điều chỉnh trọng số Quá trình này được lặp lại liên tục cho đến khi giá trị hàm chi phí đạt yêu cầu Các bước này sẽ được thực hiện cho toàn bộ tập dữ liệu huấn luyện cho đến khi thuật toán huấn luyện mạng hội tụ.
Hình 3.9: Lưu đồ thuật toán quá trình trích chọn đặc trưng
Khối này có chức năng đối chiếu các véc-tơ đặc tính với cơ sở dữ liệu để đưa ra kết quả nhận dạng Nhiều thuật toán được áp dụng trong phân loại nhận dạng, và trong hệ thống nhận dạng khuôn mặt, thuật toán so sánh khoảng cách Euclide đã được nghiên cứu và sử dụng Hình 3.10 minh họa quá trình phân loại và nhận dạng.
Hình 3.10: Sơ đồ quá trình phân loại nhận dạng
Không gian Euclide n chiều được hiểu là không gian phẳng tương ứng với tập hợp (x1, x2, x3,…, xn) hay R n mang tính tuyến tính với n vector cơ sở trực chuẩn là (1, 0, ,0),(0, 1, ,0), ,(0, ,0, 1)
Hình 3.11: Không gian Euclide 3 chiều
Khoảng cách Euclide trong không gian n chiều được xác định cho hai điểm A (a1, a2, …, an) và B (b1, b2,…, bn) dựa trên hệ cơ sở là n vector trực chuẩn Khoảng cách giữa hai điểm A và B được tính toán theo công thức Euclide.
Mỗi bức ảnh khuôn mặt được mã hóa sẽ tạo ra 128 giá trị đặc trưng, tương ứng với một điểm trong không gian Euclide Để đánh giá mức độ tương đồng giữa hai khuôn mặt, ta có thể dựa vào khoảng cách giữa chúng; khoảng cách nhỏ cho thấy sự tương đồng cao hơn.