Phát hiện và cảnh báo buồn ngủ của tài xế lái xe dùng thị giác máy tính
PHÁT HIỆN VÀ CẢNH BÁO BUỒN NGỦ CỦA TÀI XẾ LÁI XE DÙNG THỊ
GIÁC MÁY TÍNH
DETECTING AND WARNING DROWSINESS STATE OF THE DRIVER
USING COMPUTER VISION
Trần Quang1, Lê Mỹ Hà1
1Trường đại học Sư phạm Kỹ thuật TP.HCM
TÓM TẮT
Tai nạn giao thông là một trong những vấn đề dai dẳng và khó kiểm soát của mỗi quốc
gia nói chung và Viêt Nam nói riêng. Hằng ngày chúng ta đều thấy các thông tin báo đài về các
vụ tai nạn giao thông nghiêm trọng, có những vụ đặc biệt nghiêm trọng gây ra rất nhiều thương
vong. Ở Hoa Kì, theo bài đăng thống kê năm 2018, 10% các vụ tai nạn là do tài xế buồn ngủ khi
đang lái xe. Ở Việt Nam, các vụ tai nạn tương tự như vậy xảy ra liên tục gần đây làm dấy các dư
luận về vấn đề an toàn khi tham gia giao thông trên các loại xe cơ giới. Trong bài báo này, tác
giả đề xuất một ứng dụng để giải quyết một phần nào đó về vấn đề đó. Đó là thiết bị phát hiện và
cảnh báo tài xế buồn ngủ khi đang lái xe. Thiết bị được thực hiện dựa trên phần cứng là board
kit Raspberry có đặc điểm như một máy tính thu nhỏ có kích thước xấp xỉ chiếc điện thoại cầm
tay, chạy hệ điều hành mở, được trang bị bộ vi xử lý mạnh mẽ, mức tiêu thụ điện năng thấp, giá
thành rẻ, cho phép cấu hình cho kit Raspberry như một máy tính xử lý các bài toán. Kĩ thuật
được áp dụng vào ứng dụng là mạng học sâu, cụ thể là mạng Convolution Neural Netwwork
(CNN). Các dấu hiệu sinh lý và cơ học để nhận biết tài xế buồn ngủ nhịp tim, độ phản ứng điện
của da, cơ mắt, cơ mặt, ngáp, … Tuy nhiên trực quan nhất vẫn là mắt nhắm hay mở, nó quyết
định trực tiếp đến tính mạng của người tài xế khi đang lái xe. Vì vậy, mạng CNN sẽ được áp
dụng để học và tạo ra mô hình có khả năng nhận dạng trực quan và chính xác.
Từ khóa: Học Sâu; Mạng Nơ-ron nhân tạo; Mạng CNN, Buồn Ngủ, Raspberry Pi.
ABSTRACT
Traffic accidents are one of the persistent and difficult-to-control problems of each country
in general and Vietnam in particular. Every day we see news reports about serious traffic
accidents, there are particularly serious cases that cause a lot of casualties. In the United States,
according to the 2018 statistical post, 10% of accidents are caused by drowsiness drivers while
driving. In Vietnam, similar accidents that have occurred recently have caused a lot of public
opinion about safety issues when traveling on motor vehicles. In this article, the author proposes
an application to solve a certain part of that problem. It is a device that detects and warns
drivers when they are driving. The hardware-based device is a Raspberry board kit
characterized by a miniature computer the size of a handheld phone, running an open operating
system, equipped with a powerful, low-power processor. Low power consumption, low cost,
allows the Raspberry kit to be configured as a computer to solve problems. The technology
applied to the application is deep learning network, namely Convolution Neural Netwwork
(CNN). Physiological and mechanical signs to identify driver is sleepy heartbeat, electrical
response of skin, eye muscles, facial muscles, yawning, etc. However, the most intuitive is still
eyes closed or open, it directly determines the driver's life while driving. Therefore, the CNN
network will be applied to learn and create models with intuitive and accurate identification.
Keywords: Deep Learning; Neural Network; Convolutional neural network; Drowsiness; Raspberry
Pi
vấn đề nhức nhối ở Việt Nam. Thống kê từ
Ủy ban an toàn giao thông Quốc gia cho
1. GIỚI THIỆU
Tai nạn giao thông từ lâu nay luôn là
thấy trong quý I năm 2018, cả nước xảy ra
gần 5.000 vụ tai nạn giao thông, làm chết
2.149 người, bị thương 3.627 người. Năm
2017, cả nước có hơn 20.000 vụ tai nạn giao
thông, khiến 8.279 người chết và hơn
17.000 người bị thương. So với cách đây 5
năm, lượng người chết đã giảm đi, nhưng
chưa bao giờ thấp hơn con số 8.000. Thậm
chí năm 2016, số người chết vì tai nạn giao
thông còn tăng lên 14 người so với năm
trước đó. “Có thể nói chúng ta sống trong
thời bình nhưng số người chết và bị thương
do tai nạn giao thông giống như những năm
chiến tranh”, theo Bộ trưởng Bộ Giao thông
Vận tải Nguyễn Văn Thể, tại lễ trao giải
cuộc thi báo chí viết về an toàn giao thông
2017. Một trong những tác nhân mà không
ai có thể kiểm tra, ngăn chặn được, đó là
việc ngủ gật của tài xế, đây chính là nguyên
nhân gây ra tai nạn giao thông hàng đầu trên
thế giới. Điển hình như vụ tai nạn xe đi rước
dâu thảm khốc tại tỉnh Quảng Nam vừa qua
(30/7/2018), khiến 13 người tử vong.
tài xế này đã lái xe 12 giờ đồng hồ liên tục.
2. CÁC NGHIÊN CỨU LIÊN QUAN
Trong nước: Đề tài “Nhận diện chớp
mắt và cảnh báo buồn ngủ khi lái xe trên
nền Windows và Android” của sinh viên Lê
Thế Hải và Lê Thanh Hòa (ngành Viễn
thông, Khoa Điện - Điện tử, niên khóa 2007
– 2012, Trường Đại học Bách Khoa
TP.HCM). Đây là chương trình phần mềm
trên hệ điều hành Android cho điện thoại và
máy tính bảng nhận biết được dấu hiệu buồn
ngủ thông qua trạng thái đóng mở mắt và
phát âm thanh. Tuy nhiên, đề tài cũng thể
hiện một số nhược điểm như: không theo
dõi được khuôn mặt trong một số trường
hợp quay trái, quay phải một góc lớn hơn 40
độ hoặc cúi đầu lớn hơn 10 độ - 15
độ/ngẩng đầu lên quá 30 độ… cũng như
chưa có phần cứng thiết bị riêng và camera
điện thoại chỉ xử lý được điều kiện ánh sáng
giới hạn.
Sản phẩm máy chống buồn ngủ của
Nguyễn Ngọc Đức, học sinh lớp 12C1
trường THPT Nguyễn Xuân Nguyên (Thanh
Hóa), đã giành giải Nhì cấp Quốc gia tại
cuộc thi sáng tạo Khoa học kỹ thuật dành
cho học sinh THPT năm 2016, được thiết kế
theo mô hình của một chiếc máy tính thu
nhỏ. Thiết bị dùng phần cứng là một máy
tính mini, phần mềm được lập trình theo
ngôn ngữ C# có sử dụng mã nguồn mở và
một số thư viện về nhận dạng mắt và khuôn
mặt. Nguyên lý hoạt động của máy chống
buồn ngủ là khi camera ghi lại hình ảnh của
lái xe, thiết bị sẽ nhận diện ra điểm khác biệt
trên khuôn mặt. Từ đó, phần mềm sẽ phân
tích để tìm ra được dấu hiệu buồn ngủ qua
ánh mắt bằng biểu đồ ánh sáng để phân biệt
độ sáng, tối của mắt. Sau khi thiết bị nhận
dạng xong ánh mắt sẽ tiếp tục đưa ra các
phương án để xử lý, cảnh báo bằng giọng
nói và còi báo động. Tuy nhiên, đây là một
sản phẩm mô hình thử nghiệm chỉ dừng lại
ở việc cảnh báo mà chưa có biện pháp hạn
chế tai nạn cho lái xe cũng như chưa được
ứng dụng vào thực tế.
Các nguyên nhân gây ra trạng thái buồn
ngủ cho tài xế:
- Trong thực tế, di chuyển xe đường dài
hoặc vào ban đêm là lúc người lái xe dễ rơi
vào trạng thái buồn ngủ nhất, phản xạ của
người lái sẽ chậm lại, độ tỉnh táo giảm, rất
dễ căng thẳng và khả năng xử lý tình huống
thiếu chính xác.
- Không những vậy, để tăng chuyến,
nhiều tài xế ô tô đường dài vắt kiệt sức liên
tục quay vòng dẫn đến tình trạng buồn ngủ.
- Hầu hết tài xế gây tai nạn đều có thời
gian thức kéo dài, ngủ ít hơn 5 giờ vào đêm
trước khi gặp nạn do các nhà xe khách hiện
nay đều tận dụng lái xe ít nhất từ 12 - 14
giờ/ngày.
- Đặc biệt, việc sử dụng rượu bia và rối
loạn giấc ngủ có tác dụng cộng gộp làm suy
giảm hiệu suất của các cơ quan trong cơ thể,
dẫn đến nhiều sai sót nghiêm trọng.
Kết quả nghiên cứu ngoài nước. Tại
triển lãm công nghệ CES đầu năm 2018,
Huyndai giới thiệu hệ thống chống ngủ gật
cho tài xế có tên DDREM. Hệ thống
- Chưa có thiết bị giúp các tay lái nhận
ra mình đang trong tình trạng báo động để
kiểm soát cơn buồn ngủ sau vô lăng.
DDREM sử dụng một camera hồng ngoại để
theo dõi và phân tích các chuyển động của
mắt cũng như khuôn mặt để phát hiện dấu
hiệu buồn ngủ của tài xế. Hệ thống này cũng
giám sát hệ thống hỗ trợ lái xe để xem xe có
đang đi chệch làn đường không và điều
chỉnh sao cho xe đi đúng làn đường trở lại.
Nếu hệ thống xác nhận người lái đã ngủ và
không phản hồi gì thì DDREM sẽ chuyển xe
sang chế độ lái tự động cấp độ 4 để có thể tự
tìm một nơi an toàn và dừng xe lại. Công
nghệ này tương tự chức năng cảnh báo của
hệ thống tự lái cấp độ 3 trên chiếc Audi A8
cũng dùng camera phân tích vị trí và chuyển
động của đầu và mắt để tạo ra dữ liệu cho
robot AI phân tích. Nếu mắt của lái xe vẫn
nhắm trong một khoảng thời gian dài, hệ
thống sẽ nhắc người lái xe tiếp tục công việc
lái xe, tránh trường hợp lái xe ngủ gục rất
nguy hiểm.
hoàn thiện trước khi xe xuất xưởng. Trong
khi đó, việc nghiên cứu chế tạo thiết bị theo
dõi các thông số sinh học của tài xế khi lái
xe với độ ổn định và chính xác cao là một
nhiệm vụ rất lớn, đòi hỏi về thời gian, kinh
phí và khối lượng rất lớn kiến thức chuyên
môn đa ngành bao gồm cả y học và kỹ thuật.
Chính vì những lý do trên, tác giả chọn
hướng tiếp cận vần đề thứ (2) – phát hiện
dấu hiệu buồn ngủ dựa trên biểu hiện khuôn
mặt của tài xế, cụ thể ở đây là độ nhắm mở
mắt và thời gian nhắm mắt, phương pháp
này đã được rất nhiều các hãng xe lớn như
BMW, Mercedes-Benz, Audi, Huyndai,
Cadillac trong hệ thống nhận cảnh báo mất
tập trung cho tài xế tên các dòng xe sang của
họ.
Từ những thực tiễn trình bày ở trên có
thể nhận thấy rằng việc nghiên cứu, thiết kế
và chế tạo thiết bị cảnh báo ngủ gật cho tài
xế có độ chính xác cao là việc cấp bách và
rất cần thiết để giảm tỷ lệ tai nạn giao thông
hiện nay. Vì thế, tác giả lựa chọn và thực
hiện đề tài: “Phát hiện và cảnh báo buồn ngủ
của tài xế lái xe dùng thị giác máy tính”
(Hình 1)
Theo như bài báo “Driver Drowsiness
Detection System and Techniques: A
Review” của tác giả Vandna Saini và Rekha
Saini đăng tên tạp chí (IJCSIT) International
Journal of Computer Science and
Information Technologies, Vol. 5 năm 2014
tại Ấn Độ [1] trình bày về các kỹ thuật phát
hiện ngủ gật thì việc phát hiện trạng thái
buồn ngủ của tài xế có thể chia ra làm 3
hướng tiếp cận. Thứ nhất, Thông số phương
tiện dựa trên quãng đường đã đi, độ lệch làn
đường, số vòng quay của vô lăng, tốc độ đạp
chân ga… Các thông số này được theo dõi
liên tục, nếu có bất kỳ thay đổi nào trong số
đó vượt qua một ngưỡng xác định cho thấy
khả năng người lái xe có dấu hiệu buồn ngủ.
Thứ hai, biểu hiện trên khuôn mặt của tài xế
bao gồm việc ngáp, thời gian nhắm mắt, số
lần chớp mắt, hướng nhìn… Cuối cùng,
Thông số về sinh lý dựa trên mối tương
quan giữa tín hiệu điện tâm đồ (ECG) và
điện nhãn đồ (EOG), trạng thái buồn ngủ
được xác định trên thông tin về nhịp tim,
huyết áp và sóng não. Theo đó, tác giả nhận
thấy việc giám sát các thông số trên phương
tiện là điều rất khó thực hiện khi phải tác
động trực tiếp vào cả phần cứng và phần
mềm của xe, việc thiết kế bộ giám sát các
thông số của xe và đưa ra cảnh báo nên
được nghiên cứu bởi các nhà sản xuất và
Hình 1. Quá trình thực hiện
3. THÀNH PHẦN PHẦN CỨNG
Trong phần này, tác giả cung cấp cái
nhìn tổng quan về nền tảng phần cứng, có
liên quan đến máy tính nhúng Raspberry Pi
3, máy ảnh Raspberry Pi. Sơ đồ khối phần
cứng được thể hiện trong hình 2.
Hình 2. Sơ đồ khối phần cứng của mô hình
3.1 Raspberry Pi 3 Model B
Raspberry Pi là một máy vi tính rất nhỏ
gọn, kích thước hai cạnh chỉ cỡ một cái thẻ
ATM. Người ta đã tích hợp mọi thứ cần thiết
trong đó để bạn sử dụng như một cái máy vi
tính. Trên bo mạch của Pi có CPU, GPU,
RAM, khe cắm thẻ microSD, Wi-Fi,
Bluetooth và 4 cổng USB 2.0. Khi mua Pi
về chỉ việc cài hệ điều hành (thực ra là
copy/paste cái thư mục vô thẻ nhớ), gắn
chuột, bàn phím và màn hình là bắt đầu sử
dụng được rồi (hoặc cao cấp hơn xíu là
remote desktop từ một máy khác qua, hoặc
SSH). Lý do chọn sử dụng Raspberry Pi là
vì nó có thiết kế nhỏ gọn, dễ dàng lắp đặt
lên mô hình xe điều khiển. Ngoài ra nó còn
hỗ trợ giao tiếp với các thiết bị ngoại vi
(camera, usb) và các giao thức truyền nhận
như: Bluetooth, I2C, SPI… điều này giúp
việc lập trình các hệ thống nhúng trở nên dễ
dàng hơn.
Hình 3. Sơ đồ khối giải thuật của hệ thống
4. PHƯƠNG PHÁP ĐỀ XUẤT
Sơ đồ giải thuật hệ thống được mô tả
như hình 3:
4.1. Phương pháp mô tả đặc trưng
Histogram of Oriented Gradient (HOG
Các đặc trưng HOG [2] ban đầu được
thiết kế để phát hiện người (human
detection) trong dữ liệu ảnh nhưng sau đó
được mở rộng và được sử dụng rộng rãi cho
các bài toán phát hiện đối tượng nói chung
(object detection). Phương pháp HOG dựa
trên việc đếm số lần xuất hiện của các
hướng đạo hàm (gradient orientation) trong
các vùng cục bộ của ảnh. Bản chất của
phương pháp HOG là các thông tin về hình
dáng và vẻ bề ngoài của các đối tượng cục
bộ trong ảnh có thể được mô tả bằng cách
sử dụng thông tin về sự phân bố của các
cường độ gradient (intensity gradients) hoặc
của các hướng biên (edge directions).
3.2 Raspberry Pi Camera Module
Raspberry Pi Camera được tích hợp
camera 5 megapixel có độ nhạy sáng cao, có
thể chụp tốt ở nhiều điều kiện ánh sáng khác
nhau, cả trong nhà và ngoài trời. Điểm đặc
biệt mà camera mang lại đó là chụp hình độ
nét cao trong lúc quay phim. Khi sử dụng
Raspberry Pi Camera chúng ta sẽ không tốn
thêm cổng USB nào cho camera vì camera
được gắn chắc chắn vào socket CSI. Điều
này giúp hạn chế tình trạng nghẽn băng
thông cho chip xử lý USB trên mạch
Raspberry.
Các bước cơ bản của việc tính một
vector HOG cho một ảnh gồm có: Tính
gradient, gán hướng vào các vùng giá trị
khác nhau, tính histogram của các khối và
cuối cùng là chuẩn hóa các khối.
Tính gradient: Đây là bước đầu tiên
trong phương pháp HOG và thường được
thực hiện bằng hai phép nhân chập ảnh gốc
với 2 nhân 1 chiều tương ứng với các toán
tử lấy đạo hàm ảnh theo hai hướng Ox và
Oy, cụ thể là:
3.3 Arduino Uno R3
Arduino Uno được điều khiển bởi vi
điều khiển Atmega328. Nó có 14 đầu vào/ra
(trong đó có 6 chân có thể sử dụng như đầu
ra PWM), 6 ngõ ra Analog, một cổng USB,
một jack nguồn, ICSP, một nút nhấn Reset.
Board chứa tất cả mọi thứ cần thiết để hỗ trợ
các vi điều khiển, kết nối board với máy tính
bằng cáp USB. Trong công việc này, bo
mạch Arduino đã được sử dụng để đọc giá
trị tốc độ mong muốn từ mô-đun PWM PCA
9685, tốc độ thực tế từ encoder sau đó duy
trì vận tốc của xe bằng thuật toán bộ điều
khiển PID.
T
Dx = [-1 0 1] và Dy = [1 0 -1]
(1)
Gán hướng: Sau khi tính đạo hàm, ta có
thành phần hướng ở các điểm ảnh trong mỗi
cell của ảnh input. Các giá trị hướng này
được chia thành các vùng hướng đều nhau
o
trong khoảng từ 0 tới 360 . Theo các tác giả
của HOG, thì 9 vùng chia cho kết quả tốt
nhất đối với các bài toán nhận dạng.
không chỉ hoạt động tốt với các dữ liệu
được phân tách tuyến tính mà còn tốt với cả
dữ liệu phân tách phi tuyến. Với nhiều bài
toán, SVM mang lại kết quả tốt như mạng
nơ-ron với hiệu quả sử dụng tài nguyên tốt
hơn hẳn. Ý tưởng của SVM là đi tìm siêu
mặt phẳng để phân tách cách điểm dữ liệu
[3]. Trong không gian nhiều chiều, khoảng
cách từ một điểm (vector) có toạ
độ x0 tới siêu mặt phẳng (hyperplane) có
phương trình w푇x +b = 0 được xác định
bởi:
Tính histogram của các khối: Để đáp
ứng tốt hơn với các thay đổi về điều kiện
ánh sáng và độ tương phản, các giá trị
gradient cần phải được chuẩn hóa cục bộ,
điều này đòi hỏi việc nhóm các cell thành
các vùng liên kết không gian với nhau gọi là
các khối. Vector HOG do đó sẽ là tổng hợp
các histogram của các cell đã được chuẩn
hóa từ tất cả các khối. Các khối sẽ được chia
và không tách biệt nhau, nói cách khác mỗi
cell sẽ đóng góp thông tin về các hướng (tại
các điểm ảnh của nó) nhiều hơn 1 lần. Để
tính toán vector đặc trưng cho từng ô (cell),
chúng ta cần chia hình ảnh thành các block,
mỗi block lại chia đều thành các cell. Để xác
định được số block, chúng ta sẽ sử dụng
công thức sau:
wT x0 b
(6)
w
2
Với ||w||2 là độ lớn của vector w
tính theo norm 2.
Khi đó dấu của hàm ước lượng sẽ thể
hiện được điểm dữ liệu x nằm ở cụm dữ liệu
nào (H) với H= {x ↦ sgn (w푇x +b) ; w
∈ R푁, b ∈ R}
wimage wblock *w
H
image Hblock *Hcell
nblock _image (
cell )*
1
wcell
Hcell
(2)
푊푖푚푎푔푒, 푊푏푙표푐푘, 푊푐푒푙푙: lần lượt là
chiều rộng của ảnh, block và cell
SVM có vai trò đi tìm đường phân chia
dữ liệu tốt nhất và chỉ duy nhất 1 đường
thẳng thỏa mãn luật của SVM, là khoảng
cách từ đường thẳng đó đến điểm gần nhất
của mỗi lớp dữ liệu (margin) là như nhau và
lớn nhất. Thuật toán đi tìm siêu mặt phẳng
thông qua các bước tính toán phức tạp, mục
đích tối ưu hóa khoảng cách mặt phân chia
dữ liệu. Từ đó, tìm ra được một bộ phân lớp
chính xác và tối ưu nhất (Hình 4)
퐻푖푚푎푔푒, 퐻푏푙표푐푘, 퐻푐푒푙푙 : lần lượt là
chiều dài của ảnh, block và cell
Chuẩn hóa khối: Có nhiều phương
pháp có thể được dùng cho việc chuẩn hóa
khối. Gọi v là vector cần chuẩn hóa chứa tất
cả các histogram của một khối, ||vk|| là giá trị
chuẩn của nó theo các chuẩn k=1, 2 và e là
một hằng số nhỏ, khi đó các giá trị chuẩn
hóa có thể tính bằng 1 trong các công thức
sau:
Phát hiện mặt người với các đặc trưng
HOG và SVM: để phát hiện mặt người với
các đặc trưng HOG và SVM ta tiến hành các
bước như sau:
v
2
L2 norm: f
L1norm: f
L1 sqrt : f
(3)
(4)
(5)
v e2
2
v
v 1 e
v
v 1 e
4.2. Support vector machine (SVM)
Hình 4. SVM tìm mặt phẳng phân chia dữ
liệu ứng với margin lớn nhất
SVM là một phương pháp học có giám
sát trong các mô hình nhận dạng mẫu. Nó
Bước 1: Chuẩn bị P mẫu là ảnh mặt
người và trích xuất các vector đặc trưng
HOG từ các bức ảnh này.
Trong bài báo này, toàn bộ phần phát
hiện mặt người sử dụng các dữ liệu phân lớp
đã được học trước được cung cấp bởi thư
viện dlib. Kết quả của bước này có thể xem
ở các hình 5.
Bước 2: Chuẩn bị N mẫu không phải là
ảnh mặt người (N rất lớn so với P) và trích
xuất các vector HOG từ các ảnh này.
4.3. Phân tích điểm đặc trưng trên khuôn
mặt – Facial Landmark
Bước 3: Sử dụng một bộ phân loại
SVM tuyến tính để học với các vector của
các mẫu tích cực (là ảnh mặt người) và tiêu
cực (các ảnh không phải mặt người) đã
chuẩn bị.
Trong bài toán xác định facial landmark,
chúng ta sẽ phải xác định được những điểm
chính trong bức ảnh tạo nên hình dạng
khuôn mặt người [4] (hình 6)
Bước 4: Đối với mỗi bức ảnh trong bộ
ảnh tiêu cực, sử dụng một cửa sổ trượt di
chuyển qua tất cả các vị trí có thể của ảnh
input. Tại mỗi vị trí của cửa sổ trượt, tính
vector HOG của cửa sổ và đưa vào bộ phân
lớp. Nếu bộ phân lớp phân lớp sai một cửa
sổ là ảnh mặt thì ghi lại vector tương ứng
cùng với xác suất phân lớp.
Việc xác định facial landmark gồm có
hai bước:
Bước 1: Xác định được vị trí khuôn mặt
trong bức ảnh
Việc xác định vị trí khuôn mặt có thể
được thực hiện bằng nhiều cách từ đơn giản
như thuật toán Haar cascades đến phức tạp
như các thuật toán dựa trên deep-learning,
mục đích cuối cùng là ta sẽ thu được một
vùng xác định bởi tọa độ (x, y) bao quanh
khuôn mặt trong bức ảnh.
Bước 5: Lấy các mẫu nhận dạng sai ở
bước 4 và sắp xếp chúng theo mức xác suất
nhận dạng sai và cho bộ phân lớp học lại sử
dụng các mẫu sai này.
Bước 2: Xác định facial landmark
Bước 6: Áp dụng bộ phân lớp đã được
học lại với các ảnh cần phát hiện mặt người
Sau khi xác định được khuôn mặt trong
bức ảnh, chúng ta sẽ xác định cấu trúc của
khuôn mặt. Có rất nhiều kiểu cấu trúc khuôn
mặt khác nhau nhưng về cơ bản, chúng ta sẽ
phải xác định được những phần sau: miệng,
long mày phải – lông mày trái, mắt phải –
mắt trái, mũi, hàm.
4.4. Tỉ lệ nhắm mở mắt – Eyes Aspect
Ratio (EAR)
Mỗi mắt được biểu thị bằng 6 điểm (x,
y) theo thứ tự bắt đầu từ góc trái của mắt và
sắp xếp theo chiều kim đồng hồ thành các
điểm p1, p2, p3, p4, p5, p6 như hình 7a [5]
Hình 5. Ảnh input và kết quả phát hiện và
căn chỉnh ảnh mặt với HOG và SVM.
Công thức tính tỉ lệ nhắm mở mắt:
p2 p6 p3 p5
EAR
(7)
2 p1 p4
Trong đó p1, …, p6 là các vị trí mốc 2D
trên khuôn mặt.
Khi mắt mở bình thường như hình 7a,
thì theo công thức trên tỉ lệ nhắm mở mắt
(EAR) sẽ lớn vì khoảng cách giữa p2-p6
Hình 6. 68 điểm đặc trưng trên khuôn mặt
người
cũng như p3-p5 lớn, trong khi khoảng cách
giữa p1-p4 gần như không đổi với một mắt
người cụ thể. Tuy nhiên, khi người đó chớp
mắt (như trong hình 7b) thì tỷ lệ giảm đáng
kể, gần như bằng 0.
Hình 7c biểu diễn tỉ lệ nhắm mở mắt
theo thời gian trong 1 video clip. Ban đầu
khi mở mắt, tỉ lệ này duy trì sấp xỉ là 0.25,
sau đó nhanh chóng giảm xuống gần bằng
không, rồi tăng trở lại, cho thấy một lần
chớp mắt vừa diễn ra. Tính toán độ mở của
mắt tài xế bằng phương pháp Eyes Aspect
Ratio (EAR), xác định thời gian nhắm mắt,
đưa ra trạng thái ngủ gật.
4.5. Mạng nơ-ron truyền thẳng
Mạng neural nhân tạo, Artificial Neural
Network (ANN) gọi tắt là mạng neural,
neural network, là một mô hình xử lý thông
tin phỏng theo cách thức xử lý thông tin của
các hệ neural sinh học. Nó được tạo lên từ
một số lượng lớn các phần tử (gọi là phần tử
xử lý hay neural) kết nối với nhau thông qua
các liên kết (gọi là trọng số liên kết) làm
việc như một thể thống nhất để giải quyết
một vấn đề cụ thể nào đó. Một mạng neural
nhân tạo được cấu hình cho một ứng dụng
cụ thể (nhận dạng mẫu, phân loại dữ liệu, ...)
thông qua một quá trình học từ tập các mẫu
huấn luyện. Về bản chất học chính là quá
trình hiệu chỉnh trọng số liên kết giữa các
neural (Hình 8). [7]
Hình 7. Xác định vị trí vùng mắt trên khuôn
mặt và đồ thị thời gian nhắm mở mắt
Trong nghiên cứu này, tác giả đề xuất
mạng nơ-ron truyền thẳng có cấu trúc mạng
gồm 1 lớp ngõ vào, 6 lớp ẩn, 2 lớp ẩn cuối
cùng được dropout với tỉ lệ 0.2 và 1 lớp ngõ
ra mang giá trọ trạng thái buồn ngủ (0 hoặc
1) (Hình 9).
Hình 8. Tế bào thần kinh nhân tạo
5. THỰC NGHIỆM
5.1. Giới thiệu bộ dữ liệu
Dữ liệu huấn luyện mạng noron phát
hiện dấu hiệu buồn ngủ được thu từ 25
người trong điều kiện ánh sáng ban ngày,
bao gồm dãy EAR liên tục trong 90 khung
hình lúc người đó tỉnh táo và lúc buồn ngủ
kèm theo nhãn (label) cho từng trường hợp.
Trung bình mỗi người thu được 1000
mẫu, tổng cộng ta có 25380 mẫu không có
dấu hiệu buồn ngủ và 25020 mẫu có dấu
hiệu buồn ngủ. Có thể thấy, bộ dữ liệu này
đã cân bằng, đủ tin cậy để huấn luyện mạng
noron học sâu. Phân bố của bộ dữ liệu được
thể hiện trong hình 10,11.
Hình 9. Cấu trúc mạng nơ-ron đề xuất
5.2. Quá trình huấn luyện mạng
Từ tập dữ liệu được lưu trữ, tác giả chia
chúng thành hai phần riêng biệt. Một là dữ
liệu huấn luyện và một là dữ liệu thử
nghiệm với tỷ lệ 80:20. Một sơ đồ huấn
luyện được thể hiện trong Hình 12. Tác giả
tận dụng lợi thế của GPU NVIDIA GeForce
GTX 1080 Ti với bộ nhớ là 12GB, CUDA
Cores 3584 để huấn luyện mạng. Tổng thời
gian mà chúng tôi thực hiện đào tạo kết hợp
với 5000 chu kỳ cho 40320 mẫu là 270 phút.
Hình 10. Dãy EAR liên tục khi thu dữ liệu
Sau khi được huấn luyện trên laptop,
mô hình đã được sao chép trở lại Raspberry
Pi. Mô hình dự đoán trạng thái buồn ngủ của
tài xế có độ chính xác khá thuyết phục, cụ
thể là 92,86% (Hình 13).
5.3. Kết quả thực nghiệm
Tác giả thực hiện với 4 trường hợp:
Hình 11. Dãy EAR trong 90 khung hình liên
tục
- Trường hợp 1: Khi tài xế ở trạng thái
tỉnh táo. Khoảng cách từ tài xế đến camera
là 60cm.
- Trường hợp 2: Khi tài xế ở trạng thái
tỉnh táo. Khoảng cách từ tài xế đến camera
là 100cm.
- Trường hợp 3: Khi tài xế ở trạng thái
buồn ngủ. Khoảng cách từ tài xế đến camera
là 60cm.
- Trường hợp 4: Khi tài xế ở trạng thái
buồn ngủ. Khoảng cách từ tài xế đến camera
là 100cm
Hình 12. Sơ đồ huấn luyện mạng nơ-ron
5.3.1. Trường hợp 1:
Hình 14. Thực nghiệm khi tài xế ngồi gần
trong trạng thái tỉnh táo. Góc nhìn trực diện
Hình 13. Độ chính xác của mô hình được
mô tả bằng confusion matrix
Ở khảng cách 100 cm (hình 16,17), thay
đổi góc quét camera có giá trị từ: -550 đến
550 thì tỉ lệ mở mắt từ 0,264 đến 0,437. Như
vậy, khi thay đổi khảng cách từ camera đến
vị trí ghế ngồi của tài xế thì sự nhận dạng và
phân tích tỉ lệ mở mắt thay đổi không đáng
kể.
5.3.3. Trường hợp 3:
Khi tài xế ngồi gần, khoảng cách từ tài
xế đến camera là 60cm (hình 18,19)
Hình 15. Thực nghiệm khi tài xế ngồi gần
trong trạng thái tỉnh táo với các góc nhìn
khác nhau
Ở khảng cách 60 cm (hình 14,15), thay
đổi góc quét camera có giá trị từ: -550 đến
550 thì tỉ lệ mở mắt từ 0,234 đến 0,437.
5.3.2. Trường hợp 2:
Hình 18. Thực nghiệm khi tài xế ngồi gần
trong trạng thái buồn ngủ. Góc nhìn trực
diện
Hình 16. Thực nghiệm khi tài xế ngồi xa
trong trạng thái tỉnh táo. Góc nhìn trực
diện.
Hình 19. Thực nghiệm khi tài xế ngồi gần
trong trạng thái buồn ngủ với các góc nhìn
khác nhau
5.3.4. Trường hợp 4:
Khi tài xế ngồi xa, khoảng cách từ tài
xế đến camera là 100cm. (hình 20,21)
Thiết lập cho hệ thống, khi tỉ lệ mở mắt
nhỏ hơn 0,22 và nhắm mắt liên tục 15 frame
thì hệ thống xác định tài xế đang có dấu
hiệu buồn ngủ.
Hình 17. Thực nghiệm khi tài xế ngồi xa
trong trạng thái tỉnh táo với các góc nhìn
khác nhau
-
Hệ thống phát hiện và cảnh báo
buồn ngủ hoạt động ổn định, ở điều kiện ban
ngày nhờ vào đặc trưng HOG và SVM.
-
Mạng neural khi được train trên
nhiều người giúp cho hệ thống phát hiện
chính xác, khách quan hơn so với đặt số
frames có định.
-
Khi phát hiện tài xế rơi vào trạng
thái buồn ngủ; hệ thống sẽ báo động bằng
đèn led màu đỏ, cảnh báo bằng giọng nói.
-
Thiết bị có thiết kế nhỏ gọn giúp có
khả năng ứng dụng thử nghiệm trên xe ôtô.
Hình 20. Thực nghiệm khi tài xế ngồi xa
trong trạng thái buồn ngủ. Góc nhìn trực
diện
Nhược điểm:
-
Chỉ nhận dạng được dấu hiệu buồn
ngủ trong điều kiện ánh sáng ban ngày.
Khi người lái quay mặt lớn hơn góc
600 thì hệ thống không phát hiện mặt.
Phần cứng Raspberry Pi 3 Model
-
-
B+ chưa thể đáp ứng cho việc chạy real-time
các model sâu hơn.
6.2 Hướng phát triển
-
Dùng mạng CNN để phát hiện
khuôn mặt trong nhiều điều kiện ánh sáng
phức tạp.
-
Thử nghiệm thực tế trên buồng lái ô
Hình 21. Thực nghiệm khi tài xế ngồi xa
trong trạng thái buồn ngủ với các góc nhìn
khác nhau
tô.
-
Thu thập thêm dữ liệu để tăng độ
khách quan hơn trong xác định dấu hiệu buồn
ngủ.
6. KẾT LUẬN
-
Thực nghiệm trên các máy tính
nhúng mạnh hơn: Jeston Nano, Jeston TX2.
Thêm tính năng: báo rung điện
thoại, cảnh báo tin nhắn…
6.1. Kết luận
Ưu điểm của nghiên cứu này là:
-
TÀI LIỆU THAM KHẢO
Saini, Vandna, and Rekha Saini. "Driver drowsiness detection system and techniques: a
[1]
[2]
[3]
review." International Journal of Computer Science and Information Technologies 5.3
(2014): 4245-4249.
N. Dalal and B. Triggs, “Histograms of oriented gradients for human detection,” in
Computer Vision and Pattern Recognition, 2005. CVPR 2005. IEEE Computer Society
Conference on, 2005, vol. 1, pp. 886–893.
Cortes, Corinna, and Vladimir Vapnik. "Support vector machine." Machine
learning 20.3 (1995): 273-297.
[4]
[5]
[6]
[7]
Zhang, Zhanpeng, et al. "Facial landmark detection by deep multi-task
learning." European conference on computer vision. Springer, Cham, 2014.
Soukupova, Tereza, and Jan Cech. "Eye blink detection using facial landmarks." 21st
Computer Vision Winter Workshop, Rimske Toplice, Slovenia. 2016.
Tereza, S., & Jan, Č. (2016, February). Real-Time Eye Blink Detection using Facial
Landmarks. In Proc. Computer Vision Winter Workshop.
Hopfield, John J. "Artificial neural networks." IEEE Circuits and Devices Magazine 4.5
(1988): 3-10.
Tác giả chịu trách nhiệm bài viết:
Họ tên: Trần Quang
Đơn vị: Trường ĐH Sư Phạm Kỹ Thuật TPHCM
Điện thoại: 0969365855
Email: [email protected]m
Bạn đang xem tài liệu "Phát hiện và cảnh báo buồn ngủ của tài xế lái xe dùng thị giác máy tính", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
phat_hien_va_canh_bao_buon_ngu_cua_tai_xe_lai_xe_dung_thi_gi.pdf

