Xem mẫu
- KỶ YẾU NGHIÊN CỨU KHOA HỌC SINH VIÊN NĂM HỌC 2018-2019
XÂY DỰNG HỆ THỐNG CẢNH BÁO NGỦ GẬT TRÊN KIT RASPBERRY PI 3
Giảng viên hướng dẫn: ThS. Võ Thiện Lĩnh
Sinh viên thực hiện: Nguyễn Minh Tiến Lớp: CQ.57.KTĐTTH
Lê Trung Phương Lớp: CQ.57.KTĐTTH
Tóm tắt: Trong khuôn khổ bài báo này, chúng tôi xây dựng một hệ thống phát hiện tình trạng
ngủ gật của tài xế dựa trên các kỹ thuật xử lý ảnh. Với một camera dùng để quan sát gương mặt tài
xế, hệ thống xử lý hình ảnh bằng Kit Raspberry Pi 3 sẽ phát âm thanh cảnh báo khi tài xế có biểu hiện
ngủ gật dựa vào trạng thái mắt nhắm cũng như miệng ngáp. Đề tài sử dụng phương pháp phát hiện
trạng thái nhắm mắt là: phương pháp xác định tỉ lệ khoảng cách giữa hai mí mắt và tỉ lệ khoảng cách
giữa môi trên và môi dưới khi ngáp. Chúng tôi sử dụng tập dữ liệu đã được huấn luyện để trích xuất
ra 68 điểm đặc trưng trên khuôn mặt và công cụ “frontal face detector” có trong thư viện Dlib để xác
định các vị trí mắt và miệng cần thiết để tiến hành nhận dạng. Thực nghiệm trên một nhóm người Việt
Nam cho thấy độ chính xác của hệ thống là khá cao.
Từ khóa: xử lý ảnh; nhận dạng khuôn mặt;phát hiện ngủ gật.
1. ĐẶT VẤN ĐỀ
Tai nạn giao thông đường bộ có ảnh hưởng rất lớn đến cá nhân, cộng đồng và cả quốc
gia. Nó sẽ tiêu tốn một khoảng chi phí lớn để chăm sóc sức khỏe và gây nên tình trạng
thường xuyên quá tải trong hệ thống bệnh viện. Năm 2016 Theo báo cáo của WHO, 1,24
triệu ca tử vong giao thông đường bộ xảy ra mỗi năm trên thế giới, điều này làm cho tai nạn
giao thông trở thành nguyên nhân số một của cái chết trong số những người ở độ tuổi 15-29.
Con số này được dự đoán sẽ tăng đến khoảng 1,9 triệu vào năm 2030 và trở thành một trong
bảy nguyên nhân hàng đầu gây tử vong của con người[1]
Thông báo hôm 8/2 của Ủy ban An toàn giao thông Quốc gia Việt Nam nói trong 7 ngày
nghỉ Tết Nguyên đán Kỷ Hợi 2019 cả nước xảy ra 214 vụ tai nạn giao thông, làm chết 135
người, bị thương 189 người[2]
Có nhiều lý do gây ra tai nạn giao thông, nguyên nhân chủ quan như do ý thức của
người điều khiển, sử dụng điện thoại, sử dụng rượu bia chất kích thích hay do nguyên nhân
khách quan là việc mệt mỏi do làm việc quá sức dẫn đến tình trạng ngủ gật và mất tập trung.
Ngày nay, nhiều kỹ thuật phát hiện tình trạng ngủ gật đã được nghiên cứu. Các kỹ
thuật phát hiện tình trạng ngủ gật có thể được chia thành hai loại cơ bản: kỹ thuật dựa trên sự
thay đổi biểu hiện sinh lý như sóng não, nhịp tim,...; kỹ thuật dựa trên sự thay đổi các biểu
hiện vật lý của cơ thể như tư thế, độ nghiêng của đầu, trạng thái nhắm/mở mắt, chớp mắt,
ngáp,…
Hệ thống phát hiện ngủ gật đề cập ở đây bao gồm ba thành phần là Kit Raspberry Pi
3, Module Pi camera và một chiếc loa để phát ra âm thanh cảnh báo. Camera gắn trong xe
bắt giữ khuôn mặt của người lái xe và liên tục theo dõi mắt và miệng của người lái xe.
Raspberry Pi 3 phân tích các khung hình liên tục và cảnh báo người lái xe trong thời gian
P a g e 40 | 82
- KỶ YẾU NGHIÊN CỨU KHOA HỌC SINH VIÊN NĂM HỌC 2018-2019
thực nếu phát hiện bất thường, để người lái trở lại tập trung. Do cấu trúc nhỏ gọn của nó, nên
có thể dễ dàng trang bị trong bất kỳ các loại xe ô tô. Ngoài ra hệ thống này là tương đối rẻ
hơn các biện pháp an toàn khác được trang bị trong xe.
Để thực hiện điều đó cần xác định khuôn mặt của tài xế và xác định được các vị trí
đặc trưng trên khuôn mặt đó.
2. CÁC NỘI DUNG CHÍNH
2.1. Các phương pháp xác định khuôn mặt
2.1.1. Trình phân loại Haar Cascade
Được đề xuất vào năm 2001 bởi Paul Viola và Michael Jones[3] để tìm đồ vật trong
những bức ảnh hay cả trong video thời gian thực. Họ đã sử dụng một loạt các tính năng để
phát hiện nhanh chóng đối tượng. Haar Cascade còn được gọi là Máy dò Viola-Jones.
Phương thức huấn luyện về cơ bản là so khớp tất cả các Haar-like features mẫu sẵn có
vào ảnh gốc đã được xám hoá và chuẩn hoá (chỉnh lại kích thước theo yêu cầu), các Haar-like
features phù hợp sẽ được máy tính rút trích và chọn ra mức ngưỡng (threshold) tối ưu nhất
theo 8-bit mức xám.
Hình 1. Haar-like features
Bộ phân loại thác đổ (Cascade classifiers) – dựa trên đặc trưng Haar (Haar feature)[4]
Tất cả các đặc trưng Haar-like sau khi đã được huấn luyện sẽ được quét khắp bức ảnh
đầu vào, tức là ở mọi pixels trong ảnh đều sẽ ít nhất một lần bị nhân Haar-like trượt qua,
những khu vực so sánh được cho là giống với nhiều đặc trưng Haar-like nhất sẽ được đánh
dấu lại và phát hiện đó là gương mặt.
Hình 2. So khớp để tạo ra bộ đặc trưng
P a g e 41 | 82
- KỶ YẾU NGHIÊN CỨU KHOA HỌC SINH VIÊN NĂM HỌC 2018-2019
2.1.2. HOG-Histogram of Oriented Gradients[4]
Là một công cụ mô tả tính năng có chức năng tạo nên hình thái khác của đối tượng
trong không gian vector bằng cách trích xuất ra những đặc trưng HOG (HOG descriptors) của
đối tượng đó, hạn chế những thông tin không hữu ích và làm nổi lên được phần viền đối
tượng nhờ đặc tính dốc của đường bao đối tượng (intensity gradient). Đối với bài toán nhận
dạng mặt người, những thông tin hữu ích này sau đó sẽ đi qua máy phân lớp SVM, kết quả
đầu ra sẽ dự đoán kết quả trong ảnh có gương mặt hay không. Vì vậy, HOG được sử dụng
chủ yếu để mô tả hình dạng và sự xuất hiện của một đối tượng trong ảnh.
Bản chất của phương pháp HOG là sử dụng thông tin về sự phân bố của các cường độ
gradient (Intensity Gradient) hoặc của hướng biên (Edge Directins) để mô tả các đối tượng
trong ảnh. Các toán tử HOG được triển khai bằng cách chia nhỏ một bức ảnh thành các cells,
mỗi cell (8x8px) sẽ rút ra được một histogram về các hướng của gradients cho các điểm nằm
trong cell. Để tăng cường hiệu năng nhận dạng, các histogram sẽ được chuẩn hóa về độ tương
phản bằng cách tính một ngưỡng cường độ trong một vùng lớn hơn cell, gọi là blocks (4
cells) và sử dụng giá trị ngưỡng đó để chuẩn hóa tất cả các cells trong khối. Kết quả sau bước
chuẩn hóa giúp HOG có khả năng ổn định cao với sự thay đổi độ sáng trong toàn bộ bức ảnh.
Hình 3. Hình thái khác của đối tượng trong không gian vector
2.2. Phương pháp đề xuất
2.2.1. Nhận dạng trạng thái ngủ gật
Trong số tất cả các biện pháp xác định trạng thái ngủ gật của lái xe, kỹ thuật chính xác
nhất phụ thuộc vào các biện pháp sinh lý của con người. Mặc dù phương pháp này mang lại
kết quả chính xác nhất, nhưng nó đòi hỏi phải đặt các thiết bị trên đầu, tay hay ngực gây cảm
giác khó chịu cho người lái xe. Ngoài ra các thiết bị đó cần phải được đặt rất cẩn thận nơi
thích hợp để cho kết quả hoàn hảo.
Do đó, chúng tôi sẽ chủ yếu tập trung vào hành vi nhắm mắt qua tỷ lệ nhắm hay mở giữa
hai mí mắt vì nó cung cấp nhiều thông tin chính xác về việc buồn ngủ. Do đó không làm ảnh
hưởng đến người lái xe và người lái xe cảm thấy hoàn toàn thoải mái với hệ thống này.
2.2.2. Bộ phân loại được sử dụng
HOG rất tốt trong việc mô tả đối tượng hình dạng do đó tốt cho phát hiện người có tỉ lệ
chính xác cao. Trong khi đó Haar cho tốc độ phát hiện đối tượng nhanh hơn.
P a g e 42 | 82
- KỶ YẾU NGHIÊN CỨU KHOA HỌC SINH VIÊN NĂM HỌC 2018-2019
Khi kết hợp chúng có thể dẫn đến kết quả tốt hơn hiệu suất. Do đó, chúng tôi đang sử
dụng HOG trong hệ thống này.
2.3. Xây dựng hệ thống
Trong nghiên cứu này, chúng tôi sử dụng ngôn ngữ Python kết hợp với các thư viện mã
nguồn mở là OpenCV và Dlib trên nền tảng phần cứng của máy tính nhúng Raspberry Pi 3
model B+ để nhận dạng tình trạng ngủ gật của tài xế. Hệ thống chúng tôi đang nghiên cứu
vận hành theo các bước sau:
- Nhận nguồn video từ buồng lái;
- Xác định khuôn mặt có trong video;
- Xác định vị trí các điểm mắt và miệng trên khuôn mặt;
- Tính tỉ lệ của mắt và miệng và so sánh với giá trị ngưỡng định trước(ngưỡng tỉ lệ mắt
nằm trong khoảng mắt nhắm);
- Phát hiện và dự đoán tình trạng ngủ gật;
- Phát âm thanh cảnh báo nếu phát hiện được tình trạng ngủ gật.
Đầu tiên, chúng tôi quét tìm đối tượng mong muốn ở đây là mặt người. Điều này được
thực hiện bằng công cụ HOG kết hợp với bộ phân lớp SVM để cho kết quả đầu ra là có
khuôn mặt người hay không.
Sau khi đã xác định được khuôn mặt chúng tôi tiếp tục sử dụng thư viện Dlib để tiến
hành nhận dạng các điểm trên khuôn mặt. Thư viện Dlib hỗ trợ nhận biết 68 điểm trên khuôn
mặt được thực thi qua hàm Facial Landmark[5]
Hình 4. Đánh dấu 68 điểm
Để có thể xác định được 68 điểm này trên khuôn mặt người, bộ xác định Facial
Landmark của dlib được huấn luyện với bộ dataset iBUG 300-W, tập dữ liệu training đầu vào
là 1000 ảnh mặt người được đánh dấu 68 điểm hoàn toàn thủ công.
P a g e 43 | 82
- KỶ YẾU NGHIÊN CỨU KHOA HỌC SINH VIÊN NĂM HỌC 2018-2019
Tiếp theo hệ thống sẽ tiến hành tính tỉ lệ khoảng cách giữa hai mí mắt theo công thức[7]:
||𝑝2 −𝑝6 ||+||𝑝3 −𝑝5 ||
EAR = 2||𝑝1 −𝑝4 ||
Hình 5. Tỉ lệ mắt nhắm hay mở
Nếu tỉ lệ này dưới một ngưỡng nào đó mà ta đã xác định(đã thực nghiệm với một số
người Việt Nam tỉ lệ nhắm mắt là 0.22) trong khoảng 30 khung hình của camera thì hệ thống
cảnh báo sẽ được kích hoạt.
2.4. Sơ đồ khối của hệ thống
Hình 6. Sơ đồ khối mô tả hệ thống
P a g e 44 | 82
- KỶ YẾU NGHIÊN CỨU KHOA HỌC SINH VIÊN NĂM HỌC 2018-2019
3. KẾT LUẬN
Bài viết tập trung trình bày một giải pháp để cảnh báo người lái xe trước khi tai nạn xảy
ra là phát hiện dấu hiệu tài xế buồn ngủ, đó là một trong những nguyên nhân chính gây ra tai
nạn đường bộ, đây là trong các phương pháp giảm tỉ lệ tử vong và bị thương ở một mức độ
lớn. Trình phân loại HOG được sử dụng bằng cách tính tỷ lệ khung hình mắt và miệng. Do đó
hệ thống này phát hiện buồn ngủ và cảnh báo người lái xe chính xác trong thời gian thực.
Tài liệu tham khảo
[1]. WHO. Road Safety: Basic Facts; 2016
[2]. Ủy ban An toàn giao thông Quốc gia Việt Nam 2019.
[3]. Paul Viola and Michael Jones, Rapid Object Detection using a Boosted Cascade of
Simple Features, 2001.
[4]. Paul Viola and Michael Jones, Rapid Object Detection using a Boosted Cascade of
Simple Features, 2001.
[5]. Kazemi and Sullivan, One Millisecond Face Alignment with an Ensemble of Regression
Trees paper, 2014.
[6]. Dalal and Triggs in their seminal 2005 paper, Histogram of Oriented Gradients for
Human Detection.
[7]. Tereza Soukupova and Jan´Cech, Real-Time Eye Blink Detection using Facial
Landmarks, 2016.
P a g e 45 | 82
nguon tai.lieu . vn