Bối cảnh và vấn đề nghiên cứu

Tai nạn giao thông do tài xế ngủ gật hoặc mất tập trung là một trong những vấn đề an toàn giao thông nghiêm trọng trong thực tiễn. Cùng với sự phát triển của công nghệ thị giác máy tính và kỹ thuật xử lý ảnh số, việc ứng dụng các thuật toán nhận dạng khuôn mặt và phân tích trạng thái mắt nhằm phát hiện sớm dấu hiệu ngủ gật đã mở ra khả năng chế tạo các thiết bị giám sát tự động. Đồng thời, sự phổ biến của các máy tính nhúng kích thước nhỏ, tiêu thụ điện năng thấp và giá thành hợp lý như dòng bo mạch Raspberry Pi tạo tiền đề kỹ thuật để đưa các thuật toán xử lý ảnh phức tạp từ máy tính cá nhân vào thiết bị phần cứng độc lập phục vụ đời sống.

Đề tài "Ứng dụng xử lý ảnh vào việc phát hiện ngủ gật dùng Kit Raspberry" do hai tác giả Nông Văn Tân và Trần Thị Mỹ Khiêm thực hiện dưới sự hướng dẫn của ThS. Nguyễn Duy Thảo tại Khoa Điện – Điện tử, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh (thời gian thực hiện từ ngày 25/09/2017 đến ngày 15/01/2018).

Mục tiêu cụ thể của đề tài được xác định gồm 4 nội dung:

  1. Tìm hiểu những kiến thức cơ bản về xử lý ảnh.
  2. Tìm hiểu về kỹ thuật nhận dạng đối tượng.
  3. Tìm hiểu cấu trúc phần cứng và môi trường hoạt động của kit Raspberry Pi 3.
  4. Xây dựng chương trình phát hiện ngủ gật hoạt động trong thời gian thực trên kit Raspberry Pi 3.

Nhiệm vụ nghiên cứu được phân chia thành 6 nội dung triển khai:

  1. Nội dung 1: Tìm hiểu các kiến thức cơ bản về xử lý ảnh, kit Raspberry Pi 3 và ngôn ngữ lập trình Python.
  2. Nội dung 2: Tìm hiểu các kỹ thuật và thuật toán nhận dạng đối tượng khuôn mặt và dấu mốc đặc trưng.
  3. Nội dung 3: Cài đặt hệ điều hành và thiết lập các thư viện phụ trợ cần thiết cho kit Raspberry Pi 3.
  4. Nội dung 4: Viết chương trình phát hiện ngủ gật thông qua phân tích trạng thái mắt.
  5. Nội dung 5: Đánh giá kết quả thực nghiệm của hệ thống trên các điều kiện thực tế.
  6. Nội dung 6: Viết báo cáo tổng kết luận văn tốt nghiệp.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Tín hiệu hình ảnh khuôn mặt người, các điểm mốc sinh trắc học trên mắt, trạng thái đóng/mở của mí mắt và cơ chế kích hoạt cảnh báo âm thanh khi phát hiện ngủ gật.
  • Phạm vi không gian và điều kiện thử nghiệm: Hệ thống được thiết lập thử nghiệm trong môi trường phòng với khoảng cách từ camera đến đối tượng quan sát dưới 1,2 mét; hoạt động trong điều kiện ánh sáng ban ngày và ban đêm có kiểm soát; giới hạn thực thi trên bo mạch đơn Raspberry Pi 3 Model B kết hợp webcam độ phân giải HD.

Cơ sở lý thuyết và phương pháp

Khóa luận xây dựng hệ thống dựa trên nền tảng lý thuyết xử lý ảnh số, các mô hình học máy phân loại và kỹ thuật căn chỉnh khuôn mặt cục bộ:

  • Xử lý ảnh số cơ bản: Định nghĩa không gian điểm ảnh (pixel), độ phân giải ma trận hai chiều, mức xám của ảnh, biểu đồ phân bố độ sáng (Histogram), các phương pháp biến đổi ảnh trong miền không gian và tần số (Fourier, Cosin, Sin, tích chập, tích Kronecker, Karhunen-Loève, Hadamard).
  • Thuật toán AdaBoost (Freund & Schapire, 1995): Cơ chế kết hợp các bộ phân loại yếu (weak classifiers) thành bộ phân loại mạnh (strong classifier) theo mô hình phân tầng (cascade). Thuật toán cập nhật trọng số trong quá trình huấn luyện: tăng trọng số của mẫu nhận dạng sai và giảm trọng số của mẫu nhận dạng đúng để tối ưu khả năng hội tụ.
  • Đặc trưng Haar-like và ảnh tích hợp (Integral Image - Viola & Jones): Sử dụng 4 nhóm đặc trưng cơ bản (đặc trưng cạnh, đặc trưng đường, đặc trưng xung quanh tâm, đặc trưng đường chéo) tính theo hiệu tổng cường độ sáng giữa các vùng đen và vùng trắng. Để đáp ứng tính toán thời gian thực, thuật toán sử dụng ma trận điểm ảnh tích hợp $P(x, y) = \sum_{x' \le x, y' \le y} i(x', y')$ giúp tính tổng diện tích bất kỳ chỉ qua 4 phép truy xuất tọa độ.
  • Giải thuật Facial Landmarks (Kazemi & Sullivan, 2014): Mô hình hồi quy cây (Ensemble of Regression Trees) huấn luyện trên tập dữ liệu iBUG 300-W giúp định vị trực tiếp 68 tọa độ điểm mốc $(x, y)$ trên cấu trúc khuôn mặt (viền hàm, chân mày, sống mũi, mắt và miệng) từ cường độ điểm ảnh mà không cần qua khâu trích xuất đặc trưng truyền thống.
  • Khoảng cách hình học Euclide: Sử dụng công thức khoảng cách Euclide trong không gian hai chiều $d(A, B) = \sqrt{(A_x - B_x)^2 + (A_y - B_y)^2}$ để đo khoảng cách biến thiên giữa mí mắt trên và mí mắt dưới, từ đó xác định tỷ lệ co giãn của mắt (Eye Aspect Ratio) nhằm phân biệt trạng thái nhắm mắt hay mở mắt.

Phương pháp nghiên cứu thực nghiệm được triển khai theo mô hình thiết kế hệ thống nhúng: xây dựng chuỗi thu thập dữ liệu khung hình từ camera, chuyển đổi ảnh sang thang độ xám, đưa qua bộ phát hiện khuôn mặt (HOG kết hợp Linear SVM hoặc Haar Cascade), trích xuất 6 tọa độ mốc cho mỗi mắt, tính toán tỷ lệ mở mắt theo thời gian thực và phát tín hiệu cảnh báo qua còi/loa.


Thiết kế và triển khai hệ thống

Hệ thống được thiết kế theo cấu trúc phần cứng và phần mềm đồng bộ phục vụ việc xử lý luồng video thời gian thực trên môi trường nhúng.

Thành phần Thông số kỹ thuật / Giải pháp lựa chọn Vai trò trong hệ thống
Bo mạch xử lý Raspberry Pi 3 Model B (SoC Broadcom BCM2837 Quad-Core 1.2 GHz, GPU VideoCore IV Dual Core) Xử lý trung tâm, chạy thuật toán thị giác máy tính
Cảm biến thu hình Logitech HD Webcam C310 (kết nối USB) Thu nhận chuỗi khung hình video khuôn mặt tài xế
Thiết bị cảnh báo Loa phát thanh cắm cổng Audio 3.5mm Phát âm thanh cảnh báo khi phát hiện trạng thái ngủ gật
Bộ nhớ lưu trữ Thẻ nhớ MicroSD 8GB Class 4 Chứa hệ điều hành, thư viện và mã nguồn chương trình
Hệ điều hành Raspbian Stretch with desktop Cung cấp môi trường thực thi Linux cho bo mạch
Nền tảng phần mềm Python, OpenCV 3, dlib Xử lý ảnh số, nhận diện khuôn mặt và 68 điểm mốc

Quá trình triển khai kỹ thuật bao gồm các bước:

  1. Định dạng và ghi hệ điều hành: Thẻ nhớ được định dạng qua phần mềm SD Card Formatter, sau đó ghi bản phân phối Raspbian Stretch bằng công cụ Win32 Disk Imager.
  2. Cấu hình mạng và điều khiển từ xa: Thiết lập địa chỉ IP tĩnh (ip=192.168.1.2) trong tệp cmdline.txt của phân vùng Boot, cài đặt gói xrdp để truy cập giao diện đồ họa máy tính nhúng thông qua Remote Desktop Protocol từ máy tính cá nhân.
  3. Thiết lập môi trường xử lý ảnh: Xây dựng môi trường ảo Python (cv), biên dịch thư viện OpenCV 3 và thư viện máy học dlib tương thích với tập lệnh vi xử lý ARM.
  4. Quy trình luồng xử lý dữ liệu:
    • Thu nhận ảnh từ camera với kích thước khung hình chuẩn hóa.
    • Phát hiện vùng khuôn mặt người (ROI) bằng thuật toán HOG hoặc bộ phân loại tầng.
    • Xác định 68 điểm mốc cấu trúc khuôn mặt bằng mô hình Facial Landmarks của thư viện dlib.
    • Trích xuất tập hợp 6 điểm tọa độ đặc trưng của từng bên mắt (mắt trái và mắt phải).
    • Áp dụng công thức khoảng cách Euclide để tính tỷ lệ đóng/mở mắt; nếu tỷ lệ mắt thấp hơn ngưỡng quy định liên tục qua nhiều khung hình, hệ thống xác định trạng thái ngủ gật và kích hoạt tín hiệu phát âm thanh ra loa.

Nội dung chính theo từng chương

Chương 1: Tổng quan

Chương 1 trình bày tính cấp thiết của việc nghiên cứu bài toán xử lý ảnh trên các nền tảng nhúng, đặc biệt là ứng dụng phát hiện tài xế ngủ gật nhằm ngăn ngừa tai nạn giao thông. Tác giả nêu rõ mục tiêu, 6 nội dung nghiên cứu chi tiết, phân công công việc giữa hai sinh viên thực hiện, giới hạn kỹ thuật của đề tài (khoảng cách nhận diện dưới 1,2 mét, yêu cầu ánh sáng ổn định) và cấu trúc 6 chương của toàn bộ báo cáo tốt nghiệp.

Chương 2: Cơ sở lý thuyết

Chương 2 tổng hợp các kiến thức nền tảng về xử lý ảnh số, các giai đoạn cơ bản của một hệ thống thị giác máy tính (thu nhận, tiền xử lý, phân đoạn, biểu diễn, nhận dạng và cơ sở tri thức). Nội dung đi sâu phân tích cơ chế toán học của bộ phân loại AdaBoost, các mẫu đặc trưng Haar-like và thuật toán ảnh tích hợp Integral Image. Đồng thời, chương này giới thiệu cấu trúc 68 điểm mốc tọa độ của giải thuật Facial Landmarks từ bộ dữ liệu iBUG 300-W, thuật toán căn chỉnh khuôn mặt trong 1 mili-giây của Kazemi & Sullivan (2014), công thức khoảng cách Euclide, các đặc tính của ngôn ngữ Python và cấu trúc các thư viện con của dlib (phân lớp SVM, biến đổi dữ liệu, hồi quy).

Chương 3: Tính toán và thiết kế

Chương 3 mô tả sơ đồ khối hệ thống phần cứng và phần mềm. Tác giả trình bày chi tiết phần cứng bo mạch Raspberry Pi 3 Model B với bộ vi xử lý Broadcom BCM2837 1.2 GHz, sơ đồ bố trí 40 chân GPIO, các cổng giao tiếp ngoại vi (HDMI, DSI, CSI, USB 2.0, Ethernet, jack 3.5mm). Chương này cũng hướng dẫn từng bước quy trình cài đặt hệ điều hành Raspbian Stretch bằng SD Card Formatter và Win32 Disk Imager, cấu hình gán IP tĩnh qua tệp cmdline.txt, thiết lập kết nối điều khiển từ xa qua Remote Desktop (xrdp) và các bước biên dịch thư viện OpenCV 3, dlib trong môi trường ảo Python.

Chương 4: Thi công hệ thống

Chương 4 tập trung vào việc hiện thực hóa thuật toán phát hiện ngủ gật trên bo mạch Raspberry Pi 3. Tác giả trình bày lưu đồ giải thuật chi tiết từ khâu đọc luồng video từ webcam C310, áp dụng thuật toán HOG phát hiện khuôn mặt, trích xuất 68 điểm mốc sinh trắc học, khoanh vùng 6 điểm mốc mí mắt, sử dụng công thức Euclide để tính tỷ lệ mở mắt (EAR), so sánh với ngưỡng cài đặt sẵn theo thời gian thực và kích hoạt âm thanh cảnh báo qua loa khi phát hiện mắt nhắm vượt quá ngưỡng thời gian cho phép.

Chương 5: Kết quả, nhận xét và đánh giá

Chương 5 trình bày kết quả chạy thực nghiệm hệ thống trong nhiều điều kiện thực tế khác nhau. Các thử nghiệm được ghi nhận qua hình ảnh chụp trực tiếp giao diện hoạt động và các bảng số liệu đo đạc:

  • Kết quả phát hiện khuôn mặt và định vị 68 điểm mốc Facial Landmarks.
  • Bảng 5.1: Kết quả nhận dạng trạng thái mắt trong trường hợp góc nhìn thẳng trực diện.
  • Bảng 5.2: Kết quả nhận dạng trạng thái mắt trong trường hợp góc nhìn nghiêng.
  • Đánh giá khả năng hoạt động trong các kịch bản: ban ngày không đeo kính, ban ngày có đeo kính, và ban đêm không đeo kính. Tác giả đưa ra nhận xét về độ chính xác, độ trễ và các trường hợp nhận dạng sai do yếu tố quang học môi trường.

Chương 6: Kết luận và hướng phát triển

Chương 6 tổng kết các mục tiêu đã hoàn thành của đồ án, chỉ ra các nhược điểm còn tồn tại của hệ thống (phần cứng xử lý còn giới hạn, phụ thuộc nhiều vào điều kiện ánh sáng, khoảng cách làm việc hẹp) và đề xuất các giải pháp khắc phục cũng như định hướng phát triển nâng cao tính ổn định cho đề tài.


Kết quả và đóng góp

Kết quả thực nghiệm chính

Hệ thống đã được thi công hoàn chỉnh và chạy thử nghiệm trực tiếp trên phần cứng nhúng Raspberry Pi 3 kết hợp webcam Logitech C310 và loa cảnh báo.

Kịch bản thực nghiệm Điều kiện thử nghiệm Đánh giá nhận dạng khuôn mặt & điểm mốc Khả năng phát hiện ngủ gật & kích hoạt cảnh báo
Góc thẳng trực diện Ban ngày, không đeo kính, khoảng cách < 1,2m Nhận dạng chính xác 68 điểm mốc và vùng mắt Hoạt động chính xác, kích hoạt loa kịp thời khi nhắm mắt
Góc thẳng trực diện Ban ngày, có đeo kính, khoảng cách < 1,2m Định vị tốt mốc mắt dù có phản xạ nhẹ trên tròng kính Phát hiện trạng thái đóng/mở mắt ổn định
Góc nhìn nghiêng Ban ngày, nghiêng đầu góc nhỏ Điểm mốc mí mắt bị xê dịch nhẹ theo góc quay Tỷ lệ nhận diện giảm khi góc nghiêng quá lớn
Ban đêm / Ánh sáng yếu Không đeo kính, nguồn sáng môi trường thấp Khó xác định chính xác đường biên mắt do thiếu sáng Độ tin cậy giảm, xuất hiện cảnh báo trễ hoặc sai lệch

Giải pháp và đề xuất của tác giả

  • Ứng dụng giải thuật Facial Landmarks 68 điểm của dlib thay cho phương pháp nhận dạng mắt bằng Haar Cascade truyền thống để giảm thiểu tỉ lệ phát hiện nhầm khi người lái chớp mắt tự nhiên.
  • Dùng công thức tỷ lệ khoảng cách Euclide giữa các cặp điểm mí mắt nhằm tạo ra một chỉ số ngưỡng định lượng rõ ràng để phân biệt trạng thái chớp mắt sinh lý bình thường với hiện tượng nhắm mắt do ngủ gật.
  • Tối ưu hóa chuỗi xử lý trên môi trường ảo Python của Raspbian Stretch để hệ thống vận hành tự động ngay khi khởi động bo mạch.

Đóng góp của đề tài

Đồ án chứng minh tính khả thi của việc tích hợp các thuật toán thị giác máy tính và học máy hiện đại (HOG, Facial Landmarks, Ensemble of Regression Trees) lên một nền tảng nhúng tiêu thụ công suất thấp như Raspberry Pi 3 Model B, mở ra giải pháp phần cứng giám sát an toàn giao thông độc lập với chi phí sản xuất thấp.


Hạn chế và hướng nghiên cứu tiếp

Hạn chế được ghi nhận

  • Phụ thuộc điều kiện chiếu sáng: Hệ thống sử dụng webcam quang học thông thường nên khi thử nghiệm ban đêm hoặc môi trường ánh sáng yếu, việc định vị 68 điểm mốc khuôn mặt bị suy giảm độ chính xác rõ rệt.
  • Khoảng cách và góc quan sát: Hoạt động tối ưu chỉ duy trì ở cự ly dưới 1,2 mét; khi đối tượng di chuyển ra xa hoặc quay mặt ở các góc nghiêng lớn, hệ thống dễ mất dấu vùng mắt.
  • Tài nguyên tính toán của phần cứng: Khả năng xử lý của CPU Broadcom BCM2837 trên bo mạch Raspberry Pi 3 còn hạn chế về số lượng khung hình xử lý mỗi giây (FPS) khi chạy đồng thời nhiều tác vụ nhận diện phức tạp.

Hướng phát triển tiếp theo

  • Tích hợp cảm biến hồng ngoại: Bổ sung module camera chuyên dụng hỗ trợ đèn LED hồng ngoại để hệ thống hoạt động ổn định trong bóng tối và môi trường thiếu sáng của cabin xe vào ban đêm.
  • Nâng cấp thuật toán xử lý: Tối ưu hóa mã nguồn và cấu trúc mô hình mạng để cải thiện tốc độ xử lý khung hình, tăng khả năng nhận diện khi người lái quay đầu hoặc nghiêng góc lớn.
  • Mở rộng phần cứng: Nâng cấp sang các phiên bản bo mạch nhúng có năng lực xử lý đồ họa mạnh hơn để tích hợp thêm các tính năng như nhận diện ngáp, nhận diện chuyển động đầu và theo dõi hướng nhìn của đồng tử.

Giá trị tham khảo

Đồ án tốt nghiệp này là tài liệu tham khảo hữu ích cho sinh viên và kỹ sư thuộc các chuyên ngành Công nghệ Kỹ thuật Điện tử Truyền thông, Điện tử Công nghiệp – Y sinh, Kỹ thuật Máy tính và Cơ điện tử:

  • Tài liệu cài đặt và biên dịch thư viện nhúng: Phần hướng dẫn chi tiết quy trình ghi hệ điều hành Raspbian Stretch, cấu hình mạng tĩnh qua tệp cmdline.txt và biên dịch các thư viện OpenCV 3 cùng dlib trên môi trường Linux nhúng ARM.
  • Tài liệu lập trình thị giác máy tính: Cung cấp phương pháp thực hành trích xuất 68 điểm mốc Facial Landmarks và ứng dụng công thức khoảng cách Euclide để giải quyết bài toán theo dõi trạng thái bộ phận khuôn mặt trong thời gian thực.

Câu hỏi thường gặp

1. Hệ thống sử dụng phương pháp nào để xác định vị trí khuôn mặt và các điểm mốc trên mắt?
Hệ thống sử dụng bộ phát hiện khuôn mặt dựa trên thuật toán HOG (hoặc AdaBoost phân tầng kết hợp đặc trưng Haar-like) để định vị khung bao khuôn mặt, sau đó áp dụng giải thuật Facial Landmarks từ thư viện dlib (mô hình 68 điểm mốc huấn luyện trên bộ dữ liệu iBUG 300-W theo thuật toán của Kazemi & Sullivan) để trích xuất 6 tọa độ mốc cho mỗi mắt.

2. Tiêu chí nào được dùng để phân biệt giữa chớp mắt thông thường và ngủ gật?
Hệ thống đo khoảng cách hình học Euclide giữa các điểm mốc mí mắt trên và mí mắt dưới để tính toán tỷ lệ độ mở của mắt. Trạng thái ngủ gật được xác định khi tỷ lệ độ mở này giảm xuống dưới một ngưỡng quy định và duy trì liên tục qua một số lượng khung hình nhất định, khác với hiện tượng chớp mắt sinh lý chỉ diễn ra trong tích tắc.

3. Phần cứng xử lý trung tâm của hệ thống bao gồm những thông số kỹ thuật nào?
Hệ thống sử dụng bo mạch Raspberry Pi 3 Model B trang bị chip xử lý SoC Broadcom BCM2837 Quad-Core tốc độ 1.2 GHz, nhân đồ họa Broadcom VideoCore IV Dual Core, 40 chân GPIO, kết nối mạng Wi-Fi/Bluetooth 4.1 tích hợp, cổng USB kết nối webcam Logitech C310 và ngõ âm thanh 3.5mm xuất tín hiệu ra loa cảnh báo.

4. Khoảng cách và điều kiện môi trường nào cho phép hệ thống hoạt động chính xác nhất?
Theo kết quả thử nghiệm trong đồ án, hệ thống đạt độ chính xác cao nhất ở khoảng cách từ camera đến khuôn mặt dưới 1,2 mét, trong điều kiện ánh sáng ban ngày ổn định và góc nhìn khuôn mặt trực diện hướng về phía camera.

5. Khi phát hiện ngủ gật, hệ thống phát tín hiệu cảnh báo đến người dùng bằng hình thức nào?
Hệ thống sử dụng loa kết nối trực tiếp qua ngõ âm thanh (jack audio 3.5mm) của kit Raspberry Pi 3 để phát âm thanh cảnh báo ngay khi thuật toán xác nhận trạng thái nhắm mắt kéo dài vượt ngưỡng an toàn.


Kết luận

Đồ án tốt nghiệp của nhóm tác giả Nông Văn Tân và Trần Thị Mỹ Khiêm đã hoàn thành việc thiết kế và thi công hệ thống phát hiện ngủ gật thời gian thực trên bo mạch nhúng Raspberry Pi 3 Model B. Bằng việc kết hợp giải thuật phát hiện khuôn mặt, trích xuất 68 điểm mốc Facial Landmarks và tính toán khoảng cách Euclide của vùng mắt, hệ thống đã nhận diện chính xác trạng thái đóng/mở mắt và phát cảnh báo âm thanh kịp thời trong điều kiện ánh sáng ổn định. Đề tài khẳng định tính ứng dụng cao của các thuật toán xử lý ảnh trên nền tảng phần cứng nhúng giá thành thấp, đồng thời chỉ ra hướng cải tiến về camera hồng ngoại để hoàn thiện thiết bị giám sát an toàn giao thông trong thực tế.