Đồ án tốt nghiệp: Nhận dạng cảm xúc trên khuôn mặt (ĐH SPKT TPHCM)

Đồ án tốt nghiệp nhận dạng cảm xúc trên khuôn mặt bằng Matlab và Arduino. Trình bày chi tiết thuật toán, thiết kế hệ thống và ứng dụng thực tế.

Người đăng

Ẩn danh

Thể loại

Đồ án tốt nghiệp

2017

66
2
0

Phí lưu trữ

30 Point

Tóm tắt

I. Giới Thiệu Về Đồ Án Nhận Dạng Cảm Xúc Khuôn Mặt

Đồ án nhận dạng cảm xúc khuôn mặt là một dự án tiên tiến kết hợp giữa xử lý ảnh, trí tuệ nhân tạo và điều khiển phần cứng. Dự án này được thực hiện tại Trường Đại học Sư phạm Kỹ thuật TP.HCM, nhằm xây dựng hệ thống nhận dạng cảm xúc trên máy tính sau đó nhúng dữ liệu vào kit Arduino để hiển thị kết quả qua các đèn LED. Mục tiêu chính là phát triển một ứng dụng thực tế có thể nhận diện các cảm xúc con người như vui, buồn, tức giận, bình tĩnh thông qua phân tích biểu hiện trên gương mặt. Công nghệ này có ứng dụng rộng rãi trong lĩnh vực giáo dục, tâm lý học và các hệ thống tương tác người-máy hiện đại.

1.1. Tầm Quan Trọng Của Công Nghệ Nhận Dạng Cảm Xúc

Nhận dạng cảm xúc khuôn mặt đóng vai trò quan trọng trong các ứng dụng hiện đại. Công nghệ này giúp máy tính hiểu được trạng thái cảm xúc của người dùng, từ đó cải thiện trải nghiệm tương tác. Ứng dụng này có thể được sử dụng trong các lĩnh vực như giáo dục thông minh, hệ thống đánh giá khách hàng trong các cửa hàng bán lẻ, hoặc ứng dụng y tế để theo dõi tâm trạng bệnh nhân.

1.2. Mục Tiêu Của Đồ Án

Mục tiêu chính của đồ án này là kết hợp MatlabArduino để tạo ra một hệ thống hoàn chỉnh. Matlab được sử dụng để xây dựng các thuật toán nhận dạng cảm xúc, trong khi Arduino đóng vai trò điều khiển phần cứng. Dự án minh họa cách chuyển đổi dữ liệu từ xử lý hình ảnh sang các tín hiệu điều khiển thực tế.

II. Các Thành Phần Chính Trong Hệ Thống

Hệ thống nhận dạng cảm xúc khuôn mặt được xây dựng từ ba thành phần chính: phần mềm Matlab, kit Arduinocamera webcan. Matlab là công cụ mạnh mẽ cho xử lý ảnh và phát triển các thuật toán nhận dạng, đặc biệt là phương pháp PCA-Eigenfaces được sử dụng trong dự án này. Arduino là microcontroller phổ biến, chi phí thấp nhưng đủ mạnh để điều khiển các thiết bị ngoại vi như LED. Camera webcan cung cấp luồng video thực time để hệ thống có thể nhận dạng cảm xúc từ khuôn mặt con người. Sự kết hợp ba thành phần này tạo nên một hệ thống hoàn chỉnh, thực tế và dễ triển khai.

2.1. Phần Mềm Matlab Trong Đồ Án

Matlab là nền tảng lý tưởng cho xử lý ảnh và phát triển thuật toán nhận dạng. Trong đồ án này, Matlab được sử dụng để tạo bộ dữ liệu huấn luyện từ các bức ảnh khuôn mặt, áp dụng các kỹ thuật tiền xử lý ảnh, và triển khai thuật toán PCA để trích xuất các đặc trưng quan trọng. Matlab cũng hỗ trợ kết nối trực tiếp với Arduino, cho phép gửi kết quả nhận dạng tới các chân I/O của vi điều khiển.

2.2. Kit Arduino Và Ứng Dụng Của Nó

Arduino Uno là microcontroller phổ biến, với nhiều chân I/O và hỗ trợ cộng đồng lớn. Trong đồ án nhận dạng cảm xúc, Arduino nhận tín hiệu từ Matlab thông qua kết nối nối tiếp và điều khiển các đèn LED tương ứng với cảm xúc được phát hiện. Chẳng hạn, khi hệ thống nhận ra cảm xúc vui, LED xanh sẽ sáng; khi nhận ra cảm xúc buồn, LED xanh dương sẽ sáng. Điều này tạo ra một giao diện trực quan cho kết quả nhận dạng.

III. Thuật Toán PCA Eigenfaces Cho Nhận Dạng Cảm Xúc

Phương pháp PCA-Eigenfaces là một trong những thuật toán cổ điển nhất trong lĩnh vực nhận dạng khuôn mặtnhận dạng cảm xúc. PCA (Principal Component Analysis) là kỹ thuật giảm chiều dữ liệu, giúp trích xuất những đặc trưng quan trọng nhất từ hình ảnh khuôn mặt. Eigenfaces là những khuôn mặt cơ sở được tạo ra từ phân tích thành phần chính của bộ dữ liệu huấn luyện. Phương pháp này hoạt động bằng cách so sánh khuôn mặt mới với những eigenfaces đã được học, từ đó xác định cảm xúc. Mặc dù không phải thuật toán hiện đại nhất, nhưng PCA-Eigenfaces vẫn rất hiệu quả cho các ứng dụng nhận dạng cảm xúc quy mô nhỏ và đồ án giáo dục như dự án này.

3.1. Quy Trình Huấn Luyện Mô Hình

Quy trình huấn luyện bắt đầu bằng việc thu thập ảnh khuôn mặt từ các tình nguyện viên thể hiện các cảm xúc khác nhau. Các ảnh này được chuẩn hóa về kích thước và độ sáng. Sau đó, PCA được áp dụng để tính toán những eigenfaces chính. Mô hình được huấn luyện bằng cách tính toán chiếu của mỗi ảnh huấn luyện lên không gian eigenface, tạo thành một cơ sở dữ liệu đặc trưng. Cuối cùng, các nhãn cảm xúc được gắn kết với từng ảnh trong quá trình này.

3.2. Quá Trình Nhận Dạng Thực Time

Khi camera webcan bắt được ảnh khuôn mặt mới, ảnh này được xử lý qua các bước chuẩn hóa tương tự như dữ liệu huấn luyện. Sau đó, chiếu ảnh lên không gian eigenface đã được tính toán từ bước huấn luyện. Hệ thống tính toán khoảng cách giữa chiếu này với những chiếu trong cơ sở dữ liệu để tìm ra cảm xúc gần nhất. Kết quả cảm xúc được gửi tới Arduino qua kết nối nối tiếp, Arduino nhận tín hiệu và điều khiển các LED hiển thị kết quả.

IV. Ứng Dụng Thực Tiễn Và Hướng Phát Triển Tương Lai

Đồ án nhận dạng cảm xúc khuôn mặt với Matlab & Arduino không chỉ là một dự án học tập mà còn có những ứng dụng thực tiễn rất hữu ích. Công nghệ này có thể được mở rộng để phục vụ trong giáo dục, như những phòng học thông minh có thể theo dõi mức độ tập trung của học sinh. Trong lĩnh vực chăm sóc sức khỏe tâm thần, hệ thống này có thể giúp theo dõi tâm trạng của bệnh nhân. Các ứng dụng thương mại như kiểm tra mức độ hài lòng khách hàng tại các cửa hàng bán lẻ cũng là một hướng phát triển tiềm năng. Tuy nhiên, để nâng cao độ chính xác, các dự án tương lai nên tính đến việc sử dụng các thuật toán học sâu như Convolutional Neural Networks (CNN), hoặc tích hợp nhiều cảm biến khác để nhận diện cảm xúc toàn diện hơn.

4.1. Ứng Dụng Trong Giáo Dục

Trong lĩnh vực giáo dục, hệ thống nhận dạng cảm xúc có thể được sử dụng để đánh giá mức độ tiếp thu của học sinh trong quá trình học. Nếu hệ thống phát hiện cảm xúc buồn hoặc bối rối của học sinh, giáo viên có thể điều chỉnh phương pháp giảng dạy cho phù hợp. Các phòng học thông minh có thể sử dụng công nghệ này kết hợp với điều khiển tự động để tối ưu hóa môi trường học tập, như điều chỉnh ánh sáng hoặc âm thanh dựa trên trạng thái cảm xúc của học sinh.

4.2. Hướng Phát Triển Công Nghệ Cao Hơn

Các dự án tương lai có thể nâng cấp đồ án này bằng cách sử dụng thuật toán học sâu (Deep Learning) như Convolutional Neural Networks (CNN) hoặc Transfer Learning. Những phương pháp này sẽ cải thiện độ chính xác nhận dạng đáng kể so với PCA-Eigenfaces. Ngoài ra, việc tích hợp các cảm biến sinh học như cảm biến nhịp tim hoặc cảm biến độ ẩm da có thể giúp nhận diện cảm xúc toàn diện và chính xác hơn. Việc triển khai trên nền tảng đám mây cũng là một hướng phát triển thú vị, cho phép xử lý dữ liệu lớn hơn.

22/12/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1. TỔNG QUAN  Chương 3: Thiết kế và Tính toán Phân tích, xây dựng sơ đồ khối, sơ đồ phần cứng, thiết kế về chương trình cho hệ thống nhận dạng cảm xúc trên khuôn mặt người được viết trên phần mềm Matlab. Hướng dẫn cài đặt các gói hỗ trợ phần cứng Arduino và camera trên phần mềm Matlab.  Chương 4: Thi công hệ thống Xây dựng chương trình hoàn chỉnh cho toàn hệ thống, các hàm, các lưu đồ, các chương trình được sử dụng.

Tạo tập tin huấn luyện. Viết tài liệu hướng dẫn sử dụng, quy trình thao tác.  Chương 5: Kết quả, Nhận xét và đánh giá Nêu các kết quả đạt được khi thực hiện chương trình, phân tích, nhận xét, đánh giá kết quả thực thi được.  Chương 6: Kết luận và Hướng phát triển Tóm tắt những kết quả đạt được, những hạn chế và nêu lên các hướng phát triển trong tương lai.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 3 CHƯƠNG 2. CƠ SỞ LÝ THUYẾT Chương 2.1 GIỚI THIỆU PHẦN CỨNG 2.1 Kit Arduino Arduino ra đời tại thị trấn Ivrea – Italy, được giới thiệu vào năm 2005 như một công cụ cho sinh viên tìm tòi, học hỏi, phát triển, nhưng đến nay Arduino đã được sử dụng rộng rãi trên thế giới và chứng tỏ được hiệu quả thông qua vô số ứng dụng từ người dùng. Arduino là một board mạch vi xử lý được dùng để tương tác với các thiết bị phần cứng như cảm biến, động cơ, đèn hay các thiết bị khác. Một board Arduino bao gồm một vi điều khiển AVR với nhiều linh kiện bổ sung đã làm nên board mạch với nhiều thế mạnh hơn so với các vi điều khiển khác như: chạy được trên nhiều hệ điều hành khác nhau (Windows, Linux.), dễ dàng lắp ráp và mở rộng phần cứng, phát triển dựa trên nguồn mở, dễ dàng chia sẻ mã nguồn với nhau mà không phải lo lắng ngôn ngữ hay hệ điều hành đang sử dụng… Arduino thường sử dụng các dòng chip megaAVR, đặc biệt là ATmega8, ATmega168, ATmega328, ATmega1280 và ATmega2560.

Hầu hết các mạch gồm một bộ điều chỉnh tuyến tính 5V và một thạch anh dao động 16 MHz, các board Arduino hiện tại được lập trình thông qua cổng USB.2 Kit Arduino Uno Kit Arduino có nhiều phiên bản với tính năng và mục đích sử dụng khác nhau. Board Arduino Uno là một trong những phiên bản được sử dụng rộng rãi nhất bởi chi phí và tính linh động của nó. Arduino Uno là một board mạch vi điều khiển dựa trên chip Atmega328 với 14 chân vào/ra bằng tín hiệu số được đánh số từ 0 đến 13, trong đó 6 chân có thể tạo xung PWM được đánh dấu “~” trước mã số của chân, 6 chân nhận tín hiệu analog được đánh dấu từ A0 đến A5, có thể sử dụng như là 6 chân I/O số. Có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 30 mA.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 4 CHƯƠNG 2. CƠ SỞ LÝ THUYẾT Vi điều khiển Atmega328P họ 8 bit Điện áp hoạt động 5V Điện áp đầu vào 7-12V Điện áp đầu vào giới hạn 6-20V Số chân Digital I/O 14 (có 6 chân PWM) Số chân Analog 6 ( độ phân giải 10bit) DC current per I/O pin 20mA DC current for 3.3V pin 50mA Flash Memory 32KB (ATmega328P) SRAM 2KB (Atmega328P) EEPROM 1KB (Atmega328P) Clock Speed 16MHZ Length 68.4 mm Weight 25 g Bảng 2. Thông số kỹ thuật Arduino Uno. Cấu trúc phần cứng của Arduino Uno.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 5 CHƯƠNG 2. CƠ SỞ LÝ THUYẾT  Cổng USB(1): Cổng USB dùng để kết nối với máy tính và thông qua đó để upload chương trình cho Arduino từ máy tính, đồng thời cung cấp nguồn cho Arduino.  Nguồn (2 và 4): Sử dụng jack cắm nguồn 2.1mm (cực dương ở giữa) hoặc có thể dùng chân Vin và GND để cấp nguồn cho Arduino. Board mạch hoạt động ở điện áp ngoài khoảng 5-12V, nhưng nếu cấp nguồn lớn hơn 5V thì ngõ ra chân 5V sẽ lớn hơn, không nên cấp nguồn lớn hơn 12V vì board sẽ nóng và dễ bị hỏng.

Chân 5V và chân 3.3V là 2 chân lấy nguồn từ Arduino ra ngoài, không được cấp nguồn vào nó, sẽ làm hỏng.  Chip Atmega328P(6): Có 32KB bộ nhớ flash trong đó có 0.5KB dùng cho bootloader, 2KB SRAM, 1KB EEPROM.  Output và Input(3 và 5): Arduino có 14 chân Digital với các chức năng Input và Output.2 TỔNG QUAN VỀ MATLAB Matlab (Matrix Laboratory ) là một môi trường tính toán số và lập trình, được thiết kế bởi công ty MathWorks, là ngôn ngữ lập trình thực hành bậc cao được sử dụng nhiều để giải các bài toán kỹ thuật. Matlab tích hợp việc tính toán thể hiện kết quả cho phép lập trình, giao diện làm việc rất dễ dàng cho người sử dụng.

Dữ liệu cùng với thư viện được lập trình sẵn cho phép người dùng có được những ứng dụng như:  Tính toán các phép toán học thông thường, tính toán ma trận.  Lập trình tạo ra những ứng dụng mới.  Cho phép mô phỏng các mô hình thực tế.  Phân tích, khảo sát, hiển thị dữ liệu.

 Với phần mềm đồ họa cực mạnh.  Matlab giúp đơn giản hóa việc giải quyết các bài toán tính toán kỹ thuật so với các ngôn ngữ lập trình truyền thống như C, C++, và Fortran. Matlab là một hệ thống tương giao chúng cho phép giải quyết các vấn đề liên quan đến lập trình bằng máy tính, đặc biệt sử dụng các phép tính về ma trận hay vector và có thể sử dụng ngôn ngữ C hoặc Fortran lập trình rồi thực hiện ứng dụng lập trình đó bằng các câu lệnh gọi từ Matlab. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 6 CHƯƠNG 2.

CƠ SỞ LÝ THUYẾT Matlab được sử dụng trong nhiều lĩnh vực, bao gồm xử lý tín hiệu và ảnh, truyền thông, thiết kế điều khiển tự động, đo lường kiểm tra, phân tích mô hình tài chính, hay tính toán sinh học. Matlab cung cấp giải pháp chuyên dụng gọi là Toolbox. Toolbox là một tập hợp toàn diện các hàm của Matlab (M-file). Hệ thống Matlab gồm 5 phần chính:  Ngôn ngữ Matlab: cho phép lập trình từ các ứng dụng nhỏ đến phức tạp.

Đó là các ngôn ngữ cao về ma trận và mảng, các dòng lệnh, các hàm, cấu trúc dữ liệu vào.  Môi trường làm việc: bao gồm các phương tiện cho việc quản lý các biến trong không gian làm việc Workspace cũng như xuất nhập dữ liệu. Nó cũng bao gồm các công cụ phát triển, quản lý, gỡ rối và định hình M-file.  Xử lý đồ họa: bao gồm các lệnh cao cấp cho trực quan hóa dữ liệu hai chiều và ba chiều, xử lý ảnh, ảnh động.

Cung cấp các giao diện tương tác giữa người sử dụng và máy tính.  Thư viện toán học: các hàm cơ bản như cộng, trừ, nhân, chia, sin, cos …và các hàm phức tạp như tính ma trận nghịch đảo, trị riêng, chuyển đổi fourier, laplace, symbolic library.  Giao diện người dùng (Application Program Interface): cho phép viết chương trình tương tác với các ngôn ngữ khác C, Fortran. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 7 CHƯƠNG 2.3 CÁC CẢM XÚC TRÊN KHUÔN MẶT Cảm xúc trên khuôn mặt là một quy luật rất quan trọng trong giao tiếp giữa người với người.

Những công nghệ giao tiếp tiến bộ nhanh chóng gần đây cùng với sự phát triển của khoa học máy tính đã cho chúng ta những hi vọng rằng cảm xúc trên khuôn mặt sẽ trở thành một giải pháp then chốt trong lĩnh vực giao diện người - máy và các hướng phát triển giao tiếp khác trong tương lai. Trong các cách biểu đạt ngôn ngữ cơ thể, cảm xúc là nơi thể hiện rõ nhất những gì mà người khác cảm nhận được. Qua nghiên cứu của nhà tâm lý học Mehrabian năm 1968 đã chỉ ra rằng khi một thông điệp từ một người chuyển tới người khác, phần từ ngữ chỉ chiếm 7% ảnh hưởng, 38% âm lượng của giọng nói, trong khi ngôn ngữ cơ thể của người nói chiếm tới 55% ảnh hưởng của thông điệp đó. Nhận dạng cảm xúc được ứng dụng trong rất nhiều lĩnh vực khác nhau như y học[4], tương tác giao diện giữa người và máy[5], chuyển động thân người… Trong công trình nghiên cứu năm 1960, tiến sĩ, nhà tâm lý học Paul Ekman đã chỉ ra rằng mỗi người chúng ta đều có thể thể hiện 6 cảm xúc cơ bản trên khuôn mặt đó là: vui, buồn, tức giận, sợ hãi, ghê tởm và ngạc nhiên.

Tuy nhiên mới đây các nhà khoa học thuộc Đại học Glasgow (Scoland) đã bác bỏ quan điểm này khi chỉ ra rằng chỉ có 4 biểu hiện cơ bản trên khuôn mặt chúng ra. Đó là vui, buồn, tức giận, ngạc nhiên (bao hàm sợ hãi). Trong đề tài đồ án tốt nghiệp này, chúng em xây dựng một hệ thống nhận dạng cảm xúc dựa trên 4 cảm xúc cơ bản trên đó là: vui, buồn, tức giận, ngạc nhiên và một trạng thái không có cảm xúc gọi “bình thường”. Các dấu hiệu nhận biết cảm xúc:  Vui: Thông qua nét mặt rạng rỡ trên khuôn mặt với nụ cười tươi, hai khóe miệng giang rộng chính là dấu hiệu đơn giản để nhận biết được cảm xúc này.

Điều này dễ tạo cho người khác cảm thấy gần gũi thân thiện.  Buồn: Với biểu hiện của đôi mắt trùng xuống, lông mày hạ thấp, thần thái giảm, sầu não.  Tức giận: Cảm xúc này được thể hiện qua khuôn mặt với lông mày kéo sát lại gần nhau, ánh mắt hung dữ, cau có, môi mím chặt, điều này khiến cho đối phương cảm giác sợ hãi khi nhìn trực diện. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 8 CHƯƠNG 2.

CƠ SỞ LÝ THUYẾT  Ngạc nhiên: Sự ngạc nhiên thể hiện qua lông mày nhô cao, mắt mở to, hàm dưới mở rộng, miệng há hốc. Cảm xúc ngạc nhiên bắt gặp khi phản ứng cho một điều gì đó xảy ra bất ngờ và luôn làm cho người khác cảm thấy thú vị khi nhìn vào.4 PHƯƠNG PHÁP NHẬN DẠNG PCA - EIGENFACES 2.1 Phương pháp nhận dạng PCA Phân tích thành phần chính PCA (Principal Component Analysis) là một thuật toán sử dụng phép biến đổi trực giao để biến đổi một tập hợp dữ liệu từ một không gian nhiều chiều sang một không gian mới ít chiều hơn (2 hoặc 3 chiều) nhằm tối ưu hóa việc thể hiện sự biến thiên của dữ liệu. PCA một trong những ứng dụng hữu ích trong việc nhận dạng mặt và nén ảnh, là phương pháp phân tích dữ liệu nhiều biến đơn giản nhất. Phép biến đổi tạo ra những ưu điểm như:  Giảm số chiều của không gian chứa dữ liệu: tạo ra một ảnh mới từ ảnh ban đầu, ảnh này có kích thước nhỏ hơn nhiều so với ảnh ban đầu nhưng vẫn giữ lại những nét đặc trưng nhất từ ảnh ban đầu.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ