林桂佳 蔡海文 朱賢澤 陳代荷 羅海明



摘? 要:車載瞌睡檢測系統是一種內部設有GPS及通訊錄,以數據準確可靠、全程跟蹤、精細化以及便捷高效為特色的瞌睡檢測系統。當駕駛員打著瞌睡駕駛時,該系統會自動通過AI人臉檢測進行判斷,將瞌睡狀態及車輛所在位置等信息通知給中央控制中心或交通事故研究所,同時系統能夠連接到外部求助中心的移動電話,以綜合性和多層性方法防止事故發生。
關鍵詞:人工智能;GPS;面部識別技術;疲勞睡眠檢測
中圖分類號:TP18;TP391.4? ? ? ? ? ? ? 文獻標識碼:A文章編號:2096-4706(2021)19-0084-05
Research on the In-car Drowsy Driver Detection and Early Warning System Based on Artificial Intelligence
LIN Guijia, CAI Haiwen, ZHU Xianze, CHEN Daihe, LUO Haiming
(School of Computer Science, Jiaying University, Meizhou? 514015, China)
Abstract: In-car drowsy driver detection system is a kind of drowsiness detection system with GPS and address book inside, which is characterized by accurate and reliable data, whole process tracking, refinement, convenience and efficiency. When the driver is dozing, the system will automatically judge through AI face detection, and notify the central control center or Institute of Traffic Accident Research of the information of dozing status and vehicle location and so on. At the same time, the system can be connected to the mobile phone of the external help center to prevent accidents in a comprehensive and multilayer method.
Keywords: artificial intelligence; GPS; face recognition technology; fatigue sleep detection
0? 引? 言
在我國,每年因為疲勞駕駛發生交通事故的事例數不勝數。有數據顯示,中國每年發生近20萬起交通事故,死亡人數逾6萬,其中因疲勞駕駛造成近3千人死亡。國家統計局的數據顯示,2019年全國發生交通事故24.8萬起,死亡人數為62 763人,其中因疲勞駕駛造成3 056人死亡,占4.9%,在北京其比例更高達總數的1/5。在世界范圍內,交通事故中約85%是人的因素造成的,其中駕駛員疲勞駕駛因素占據較大比例。據美國國家公路交通安全管理局發布的數據,每年約有10萬起交通事故是由駕駛員在駕駛過程中打瞌睡造成的,其中約1 500起直接導致死亡,7.1萬起導致人身傷害。歐洲的情況大致相同:根據德國保險公司協會的數據,在德國高速公路上造成人員傷亡的交通事故中,約25%是由疲勞駕駛引起的。2019年,在美國進行的一項調查發現,有53%的被調查者曾在駕駛時打過瞌睡。人們很多時候不得不持續駕駛,持續駕駛容易導致身體疲勞,人們在疲勞狀態下容易打瞌睡。生理學家研究表明,當睡意向駕駛員來襲時,會產生5至10秒的短暫型睡眠,此時駕駛員的眼睛雖然是睜開著,但是大腦實際已經是進入睡眠狀態。因此,針對人們行車駕駛打瞌睡的問題,開發一種能有效遏制駕駛員因駕駛瞌睡發生事故的安全設備就顯得非常迫切,這也是本課題的研究意義和價值。
1? 原理分析
基于人工智能的車載瞌睡檢測預警系統設計原理只要有以下幾點:
(1)獲取到圖像信息是否為有效的信息,除去遮擋、清晰度不夠無法判斷的信息。車載瞌睡檢測主要檢測的是人臉信息,如圖1所示,首先對人臉信息進行識別,如果是有效信息,則使用算法進行判斷;如果清晰度不夠,則重新獲取人臉信息,再重新識別;如果無法檢測到人臉,則重新獲取信息再進行信息處理。
(2)可判斷駕駛員是否真正的處于瞌睡狀態:主要通過判斷眼睛和嘴巴的閉合度和閉合時間來進行判斷。分析在連續20幀內的眼睛的閉合情況,如果在連續幀內眼睛閉合,并且沒有睜開,就發送“請醒醒”的語音提示;如果閉眼次數達到了20次,則發送“請睜大眼睛”的語音提示;如果嘴巴張開尺度過大的話,則發送“你疲勞了”的語音提示信息。
通過圖2的面部標志我們可以很簡單的來獲取到眼睛所處的位置,每只眼睛共用了6個點來進行表示,其中,37-42為右眼,43-48為左眼。圖3為眼睛閉合度示意圖。
眼睛閉合度計算公式為:
(1)
眨眼次數在連續幀達到一定次數時才判定該駕駛員有困意。
(3)對用戶請求進行負載均衡設計,讓每一個請求能夠分散地落在每一個服務器上,減少單一服務器的負擔。目前的想法是設計一個輪詢的算法,如圖4所示,首先按權重排序,然后接受請求,再建立連接。如果建立成功,則權重減重新排序,然后結束;如果建立連接失敗,則進行相應標志置位,然后all down,如果是,則恢復初始狀態,結束;如果不是,則重新接受請求。
(4)使用深度學習算法對人臉模型進行優化。目前的想法是通過卷積神經網絡來進行優化,其結構如圖5所示,首先輸入圖片,通過卷積層1分析圖片,然后通過池化層處理;再通過卷積層2分析圖片,再一次通過池化層2處理圖片;然后再分別進入全連接層1、全連接層2然后得到分類結果。其中在卷積神經網絡中最重要的就是過濾器,它可以將當前的層神經網絡上的一個子節點矩陣轉化為下一個單位節點矩陣。
(5)獲取車輛位置信息。當打著瞌睡駕駛時,系統會自動通過AI人臉檢測進行判斷,將瞌睡狀態及有關車輛所在位置信息通知給中央控制中心或監控中心。如圖6所示,首先系統進行初始化,如果失敗,則MCU進入低功耗,提示用戶重啟;如果初始化成功,則接受位置命令,調出監控中心號碼,讀取GPS信息,將GPS信息通過短信發送到中心。如果未收到GPS信息,則提示用戶錯誤。
2? 實施方案
2.1? 實施人群
實施人群主要為中長途汽車駕駛員。
2.2? 計劃階段
2.2.1? 理論階段
查閱Python相關的資料,學習車載程序的相關理論知識,了解并分析該系統的原理,小組討論出可行性,提出算法的方案及功能如何實現,確定我們所采用的技術。
2.2.2? 開發階段
本系統開發分為三個階段:
(1)開發出程序原型,在PC端進行測試效果,檢測并優化以及對程序進行調整,測試完移植到電腦中進行實際測試。
(2)本程序內部設有GPS+AI人臉檢測,連接服務器,在駕駛員打瞌睡駕駛時將瞌睡駕駛狀態及有關車輛所在經緯信息通知給中央控制中心。
(3)建立相關的MySQL數據庫,儲存車輛經緯度信息,運用Dubbo服務框架,可視化車輛的位置信息。
2.3? 技術支持
本方案設有六種技術支持,分別是Python編程語言、Dlib庫、OpenCV(開源計算機視覺庫)、GPS、MySQL數據庫、Dubbo服務,下文對這六種服務逐一進行介紹:
2.3.1? Python 編程語言
在國外利用Python做科學計算的研究機構日益增多,因為Python語言擁有簡潔性、容易閱讀性以及可擴容性等顯著優勢。例如SciPy、NumPy和matplotlib這3個十分經典的科學計算擴展庫,它們分別為Python提供了數值運算、快速數組處理以及繪圖這三種強大功能。因此由Python語言及其眾多的擴展庫所構成的開發環境非常適合工程技術、科研人員進行處理實驗數據、制作圖表、開發科學計算應用程序等工作。
2.3.2? Dlib 庫
Dlib庫包含了機器學習的很多算法,是一個機器學習的開源庫,他的使用方式非常簡便,直接包含頭文件即可使用,并且Dlib不依賴于其他庫(自帶圖像編解碼庫源碼)。Dlib是一個使用現代C++技術編寫的跨平臺的通用庫,遵守Boost Softwarelicence。目前Dlib已經被廣泛應用在機器人、嵌入式設備、移動電話以及大型高性能計算環境等行業和學術領域,這充分地說明了Dlib可以幫助使用者創建許多復雜的機器學習方面的軟件來幫助解決使用者的實際問題。Dlib有以下主要特點:
(1)可移植代碼:代碼符合ISOC++標準,不需要第三方庫支持,支持win32、Linux、MacOSX、Solaris、HPUX、BSDs和POSIX系統。
(2)線程支持:提供簡單的可移植的線程API。
(3)網絡支持:提供簡單的可移植的 SocketAPI和一個簡單的HTTP服務器。
(4)圖形用戶界面:提供線程安全的GUIAPI。
(5)數值算法:矩陣、大整數、隨機數運算等。
(6)深度學習算法。
(7)圖形模型算法。
(8)圖像處理:支持讀寫WindowsBMP文件,不同類型色彩轉換。
(9)數據壓縮和完整性算法:CRC32、Md5、不同形式的PPM算法。
(10)測試:線程安全的日志類和模塊化的單元測試框架以及各種測試assert支持。
2.3.3? OpenCV(開源計算機視覺庫)
該庫是用C和C++語言編寫的,可以在Windows、Linux和Mac OS X系統上運行。該庫的整個代碼都經過了優化,計算效率非常高,因為它更關注于為實時系統設計一個開源庫。OpenCV是用C語言優化的,在多核機器上運行得更快。近年來,OpenCV在入侵檢測、目標定位、人臉識別、人臉跟蹤等領域發揮了重要作用,這些只是其應用的冰山一角。
2.3.4? GPS
整個GPS系統分三大部分:地面站、衛星、接收機。地面站負責監控,通過接收和測量各種衛星信號,他們計算出衛星的軌道,并將軌道信息發送給衛星進行傳輸。衛星負責以無線電的形式向地面發送信號。norbit和來自衛星信號的其他信息,并通過c計算。
2.3.5? MySQL數據庫
數據庫(Database, DB)是按照數據結構來組織,存儲和管理數據的倉庫。典型特征:數據的結構化、數據間的共享、減少數據的冗余度,數據的獨立性。
關系型數據庫:使用關系模型把數據組織到數據表(table)中。現實世界可以用數據來描述。主流的關系型數據庫產品:Oracle(Oracle)、DB2(IBM)、SQLServer(MS)、MySQL(Oracle)。
數據表:數據表是關系數據庫的基本存儲結構,二維數據表有行(Row)和列(Column)組成,也叫作記錄(行)和字段(列)。
2.3.6? Dubbo 服務
Dubbo是一個分布式服務框架,致力于提供強大而透明的RPC遠程服務調用系統和SOA服務治理系統。簡而言之,Dubbo是一個服務框架。如果沒有分布式需求,則不必使用它。只有當它是分布式的時,才需要像Dubbo這樣的分布式服務框架,它本質上是一個服務調用的項目。
換句話說,它是一個用于遠程服務調用的分布式框架,其核心部分包括:
(1)遠程通信:它提供了基于長連接的各種NiO框架的抽象封裝,包括“請求—響應”模式的各種線程模型、序列化和信息交換方法。
(2)集群容錯:基于接口方式的透明遠程進程調用,包括多協議支持、軟負載平衡、容錯、地址路由、動態配置等集群支持。
(3)自動發現:基于目錄服務,服務用戶可以動態查找服務提供方,使地址透明,并允許服務提供商平穩地添加或減少計算機。就像調用本地方法一樣,調用遠程方法時可以輕松配置且無API入侵。
(4)軟灰塵補償和容錯功能可以取代F5和intranet上的其他硬件負載平衡器,以降低成本和單個點。
(5)服務被自動注冊和檢測。不再需要寫入服務提供商的地址。注冊中心向服務提供商的IP地址詢問接口名稱,并可以輕松添加或刪除服務提供商。
(6)Dubbo的體系結構圖如圖7所示。
2.4? 主要算法代碼
下文為主要算法代碼:
# 垂直眼睛坐標
A = dist.euclidean(eye[1], eye[5])
B = dist.euclidean(eye[2], eye[4])
# 水平眼睛坐標
C = dist.euclidean(eye[0], eye[3])
# EAR計算公式
EAR = (A + B) / (2.0 * C)
return EAR
A = dist.euclidean(mouth[13], mouth[19])
B = dist.euclidean(mouth[14], mouth[18])
C = dist.euclidean(mouth[15], mouth[17])
# MAR計算公式
MAR = (A + B + C) / 3.0
2.5? 已有成果
本研究已取得一定的成果,如圖8~13所示,當前已經完成了對眼睛閉合度算法的設計,疲勞駕駛狀態算法有效性的測試,對車輛數據可視化的設計,當天疲勞駕駛時間段數據可視化的設計,車輛駕駛員個人信息展示和對車輛所處于位置的地圖界面設計。
3? 結? 論
通過對駕駛員臉部進行識別獲取到臉部圖像,判斷獲取到圖像信息是否為有效信息,除去無效信息。然后對圖像信息進行算法計算,判斷眼睛的閉合度和閉合時間,進而來確定駕駛員是否打瞌睡,并實現對其打瞌睡情況進行報警,對其信息進行上傳保存,獲取車輛位置信息,當駕駛員打著瞌睡駕駛時,系統進行判斷并將瞌睡狀態及有關車輛所在位置信息通知給中央控制中心或監控中心。通過對這些數據的實時監控,以及對這些數據的分析、可視化,能夠提醒駕駛員安全駕駛,讓駕駛員生命更加有保障。
參考文獻:
[1] 陳金輝,韓媛媛,杜永.駕駛室酒精濃度監測和司機瞌睡監視復合儀器設計 [J].科技創新導報,2009(1):7-8.
[2] 佘翔,劉冬梅.疲勞駕駛檢測技術發展研究 [J].河北交通職業技術學院學報,2013,(1):71-73+77.
[3] 金嘉琦,陳健.駕駛員疲勞駕駛的面部檢測與定位 [J].機械,2015,42(1):74-76.
[4] 欒柱曉,唐琎,鄭群英.一種改進的人眼模板匹配算法 [J].計算機系統應用,2009,18(12):75-78.
[5] 孫洋,孫新宇,李珺珺,等.基于Dlib庫的駕駛員疲勞及心率血氧檢測系統設計 [J].電子技術與軟件工程,2021(2):108-110.
[6] 賴力潛,余星潔,曾曉勿,等.大數據校園招聘平臺設計及初步實現 [J].電子技術與軟件工程,2021(5):184-186.
[7] 梁晶,史記征.基于Python庫的人臉識別方法研究 [J].網絡安全技術與應用,2019(7):46-47.
[8] 黃子豪,孫沐陽,時田野.基于Python與OpenCV的人像檢測和識別的研究 [J].電子測試,2021(13):79-80+124.
[9] 郭巖冰,繆玲娟,李傳軍,等.地理坐標系下GPS定位誤差的定量研究 [J].北京理工大學學報,2020,40(4):416-420.
[10] 王琪,盧軍.基于Dubbo的分布式能效管理系統的設計與實現 [J].電子設計工程,2018,26(11):174-178.
作者簡介:林桂佳(2001—),男,漢族,廣東揭陽人,本科在讀,研究方向:軟件工程;蔡海文(2001—),男,漢族,廣東茂名人,本科在讀,研究方向:軟件工程;朱賢澤(2000—),男,漢族,廣東汕頭人,本科在讀,研究方向:軟件工程;陳代荷(2001—),女,漢族,廣東清遠人,本科在讀,研究方向:地理科學;通訊作者:羅海明(1987—),男,漢族,廣東梅州人,講師,碩士,研究方向:思想政治教育、計算機科學與技術。