动真格!交管部门严查“分心驾驶”背后的技术原理

博文小编

2022-08-08

北京市交管局8月3日发布消息,警方今年增加了可拍摄“分心驾驶”违法行为的电子眼。

目前,全市共有1900余处“电子警察”可以对“手持方式接打移动电话、收发信息、观看手机视频、操作手机软件、通过车载电子显示屏观看视频节目以及长时间操作车载电子显示屏导航系统”等分心驾驶交通违法行为进行抓拍记录,并纳入执法系统。

其实,除了“分心驾驶”外,“疲劳驾驶”也是非常危险的一种行为。

提起疲劳驾驶,很多人不以为然,在驾驶机动车过程中困意袭来,总想着“再坚持一会儿就到站了”。殊不知欲速则不达,在这“一会儿”时间内,就有可能发生严重的道路交通事故。

疲劳驾驶案例一

2021年4月13日1点30分许,蓝某某驾驶一辆重型仓栅式货车由南宁市往罗城仫佬族自治县方向行驶,当日7点,行至河池市宜州区庆远镇山湾村寺背屯路口路段时,因疲劳驾驶,车辆驶出行车方向右侧道路外且未采取制动措施,造成6人死亡、3人重伤,房屋、公路设施及车辆受损的交通事故。

疲劳驾驶案例二

2021年10月7日6时22分许,程某某驾驶鲁R牌照重型货车沿220国道,由西向东行驶至开封市祥符区五闫村路口时,因疲劳驾驶,车辆先与对向行驶的豫D牌照重型罐式半挂车发生刮擦,后又与对向行驶的陕J牌照重型罐式半挂车发生碰撞后起火。造成3人死亡,车辆受损的交通事故。

因此,识别出疲劳驾驶能够有效地阻止交通事故的发生,有效地保障人们的出行安全。

疲劳驾驶的一个重要表现就是犯困,眼睛会在超过正常眨眼的时间内一直处于闭合状态。因此,可以通过眼睛的纵横比(高宽比)来判断眼睛是否闭合(眨眼),进而判断驾驶员是否处于疲劳驾驶状态。

在《计算机视觉40例——从入门到深度学习(OpenCV-Python)》一书中的第28章“人脸识别应用”中详细介绍了人脸识别的基本原理和具体实现。

如图1所示,对睁眼、闭眼的情况进行了演示,其中:

左侧是正常的睁眼状态,眼睛的高度与宽度的比值在0.3左右。

右侧是闭眼(眨眼)状态,眼睛的高度与宽度的比值在0左右。

图1 眼睛模型

具体来说,Dlib使用6个关键点来标注眼睛,因此其高宽比的计算方式为:

下一步,需要判断正常的眨眼和长时间闭眼(疲劳)的区别。正常情况下,眨眼是一瞬间,而疲劳的闭眼是相对较长时间的。例如,在图2中:

上图中,高宽比仅仅在一瞬间处于较小值(约0),其余时间都是正常值(约0.3),此时对应的是正常眨眼。

下图中,高宽比在某一个较长时间内都处于较小值(约0),此时对应的是长时间闭眼。如果它的时长超过了我们事先规定的阈值,则将该状态判定为疲劳状态。

图2 眼睛高宽比

因此,在判断眼睛高宽比的基础上,还要衡量眼睛高宽比所持续的时间。反映到视频帧中,要增加一个计数器,该计数器的工作方式为:

眼睛高宽比小于0.3时,认为当前帧眼睛处于闭合状态,计数器加1。并判断计数器的值,如果计数器大于阈值(例如48),则认为眼睛闭合的时间过长了,提示风险;如果小于等于阈值认为眼睛闭合的时间在正常范围内,当前的闭眼,仅仅是眨眼,无需任何额外处理。

眼睛高宽比大于等于0.3时,当前帧眼睛处理睁开状态,将计数器清零。保证下次闭眼时,计数器能够从零开始重新计数。

根据上述分析,具体实现流程图如图3所示。

图3 流程图

本案例中,使用到了Dlib,它是一个现代工具包,包含机器学习算法和工具,用于在程序中构造软件来解决复杂的现实世界问题。它被工业界和学术界广泛应用于机器人、嵌入式设备、移动电话和大型高性能计算环境等领域。Dlib的开源许可允许用户在任何应用程序中免费使用它。

使用Dlib进行疲劳检测的代码如下(核心代码截取,全部代码请看《计算机视觉40例——从入门到深度学习(OpenCV-Python)》一书)。

# ==============获取图像内的左眼、右眼对应的关键点集==============
 def getEYE(image,rect):
landmarks=predictor(image, rect)
# 关键点处理为(x,y)形式
shape = np.matrix([[p.x, p.y] for p in landmarks.parts()])
# 计算左眼、右眼
leftEye = shape[42:48]   #左眼,关键点索引从42到47(不包含48)
rightEye = shape[36:42]  #右眼,关键点索引从36到41(不包含42)
return leftEye,rightEye
# ============计算眼睛的纵横比(小于0.3太小是闭眼或眨眼、超过0.3是睁眼)==========
def eye_aspect_ratio(eye):
# 眼睛用6个点表示。上下各两个,左右一个,结构如下所示:
#---------------------------------------------
#      1    2
# 0             3      <----这是眼睛的6个关键点
#      5    4
#---------------------------------------------
# 欧氏距离(垂直方向上的两个距离1和5、 2和4)
A = dist.euclidean(eye[1], eye[5])
B = dist.euclidean(eye[2], eye[4])
# 欧氏距离(水平距离0和3)
C = dist.euclidean(eye[0], eye[3])
#纵横比
ear = (A + B) / (2.0 * C)
return ear
#  ================计算两眼的纵横比均值========================
def earMean(leftEye,rightEye):
# 计算左眼纵横比leftEAR、右眼纵横比rightEAR
leftEAR = eye_aspect_ratio(leftEye)
rightEAR = eye_aspect_ratio(rightEye)
# 均值处理
ear = (leftEAR + rightEAR) / 2.0  
return ear
#  ==============绘制眼框(眼眶的包围框)=======================
def drawEye(eye):
# 把眼睛圈起来1:convexHull,获取凸包
eyeHull = cv2.convexHull(eye)
# 把眼睛圈起来2:drawContours,绘制凸包对应的轮廓
cv2.drawContours(frame, [eyeHull], -1, (0, 255, 0), 1)

《计算机视觉40例——从入门到深度学习(OpenCV-Python)》在介绍Python基础、OpenCV基础、计算机视觉理论基础、深度学习理论入门的基础上,介绍了计算机视觉领域内具有代表性的40个典型案例。

这些案例中,既有传统的案例(数字识别、答题卡识别、物体计数、缺陷检测等),也有深度学习案例(图像分类、风格迁移、姿势识别、实例分割等),还有人脸识别方面(表情识别、驾驶员疲劳监测、识别性别与年龄等)案例。

本文简要截取了书中第38个案例(驾驶员疲劳监测)的部分内容。更多内容大家可以参考书中第28章“人脸识别应用”。

第28章“人脸识别应用”中还介绍了人脸表情识别、易容术、识别性别年龄等案例的基本原理和实现过程。欢迎大家在《计算机视觉40例——从入门到深度学习(OpenCV-Python)》第28章“人脸应用案例”中获取更详细的内容。

书中包含的人脸识别相关案例有:

人脸检测

人脸识别

勾勒五官

人脸对齐

表情识别

疲劳驾驶检测

易容术

性别与年龄识别

参考资料:
https://mp.weixin.qq.com/s/8bAvHt26EYFENgpaOoLuWA (北京交管:司机开车看视频、操作手机等行为都将被抓拍处罚)。
https://baijiahao.baidu.com/s?id=1725414558242330675&wfr=spider&for=pc (潇湘晨报:欲速则不达,疲劳驾驶“驶”不得!|违法曝光)
《计算机视觉40例(从入门到深度学习——OpenCV-Python)》,李立宗,电子工业出版社



《计算机视觉40例从入门到深度学习(OpenCV-Python)》
李立宗 著

一本书掌握计算机视觉领域的核心应用和关键点!

本书以OpenCV-Python(the Python API for OpenCV)为工具,以案例为载体,系统介绍了计算机视觉从入门到深度学习的相关知识点。

本书从基础知识、基础案例、机器学习、深度学习和人脸识别5个方面对计算机视觉的相关知识点进行了全面、系统、深入的介绍。书中共介绍了40余个经典的计算机视觉案例,其中既有图像加密、指纹识别、车牌识别、缺陷检测等基于传统技术的计算机视觉经典案例,也有图像分类、目标检测、语义分割、实例分割、风格迁移、姿势识别等基于深度学习的计算机视觉案例,还有表情识别、驾驶员疲劳检测、易容术、性别和年龄识别等基于人脸识别的计算机视觉案例。

在介绍具体的算法原理时,本书尽量使用通俗易懂的语言和贴近生活的示例来说明问题,避免使用复杂抽象的公式来介绍。


(粉丝专享六折优惠,快快扫码抢购吧!)

其他可搭配阅读的计算机视觉图书


《OpenCV轻松入门:面向Python》
李立宗 著

基于面向 Python 的 OpenCV(OpenCV for Python),介绍了图像处理的方方面面

以 OpenCV 官方文档的知识脉络为主线,并对细节进行补充和说明

书中不仅介绍了OpenCV函数的使用方法,还介绍了函数实现的算法原理。在介绍 OpenCV 函数的使用方法时,提供了大量的程序示例。而且在介绍函数对图像的处理前,往往先展示函数对数值、数组的处理,方便读者从数值的角度观察和理解函数的处理过程和结果。在介绍具体的算法原理时,本书尽量使用通俗易懂的语言和贴近生活的示例来说明问题,避免使用过多复杂抽象的公式。本书适合计算机视觉领域的初学者阅读,包括在校学生、教师、专业技术人员、图像处理爱好者。


(扫码了解本书详情)


《视觉:对人类如何表示和处理视觉信息的计算研究》
李立宗 著[美] David Marr 著,吴佳俊 译

原著豆瓣评分9.7

影响一代脑、认知、计算机视觉专家的经典著作

详细阐述Marr提出的用于研究和理解视觉感知的一般框架

厘清计算理论、算法、实现三个研究层次

掌握本书介绍的视觉计算理论,对在人工智能和计算机视觉领域内开展进一步探索至关重要

吴佳俊教授倾情翻译

本书研究了人类对视觉信息的表示和处理,并对视觉计算处理过程提出了全面的计算理论。全书立足于计算机科学、视觉神经科学和心理物理学的进展,是跨学科交叉研究的经典教科书,并对多个学科的研究都有深刻启发作用。特别值得一提的是,在近年深度学习的热潮之中,掌握本书介绍的视觉计算理论,对于在人工智能和计算机视觉领域内开展进一步探索是至关重要的。


(扫码了解本书详情)


《计算机视觉应用与实战》
韩少云 郑政 冯华 杨瑞红 徐理想 等 编著

创新性的人工智能学习体系,让学习更加高效

实操实练,配书赠送一流讲师讲解的400+分钟丰富视频课程

本书围绕计算机视觉在农业、医学、工业等领域的案例,深入浅出地讲解计算机视觉核心的模型与关键技术。本书中所有案例的代码均能在达内时代科技集团自主研发的 AIX-EBoard 人工智能实验平台上部署与实施,实现了教学场景化、学习趣味化。

本书分为三个部分,循序渐进地介绍计算机视觉相关技术的理论基础和各案例的实践步骤。第 1 部分基于 OpenCV 介绍传统视觉应用的基础算法,同时实现轮廓提取、全景图像拼接等案例的实践;在传统视觉应用的基础上,第 2 部分讲解基于机器学习和深度学习的视觉应用,结合不同行业的案例对图像进行分析处理,如水果识别、病虫害识别、相似图像搜索、眼底血管图像分割等。第 3 部分聚焦市场关注度较高的一些新兴视觉应用的原理及实现,如从二维图像到三维空间的重建、计算机视觉在移动设备中的应用、实时图像和视频的风格迁移等。


(扫码了解本书详情)


《视觉SLAM十四讲:从理论到实践(第2版)》
高翔 等 著
SLAM华语原创首著升级版

彩色插图|更多实例|更深内容|更完善的工程项目|更易懂的表达

本书系统介绍了视觉 SLAM(同时定位与地图构建)所需的基本知识与核心算法,既包括数学理论基础,如三维空间的刚体运动、非线性优化,又包括计算机视觉的算法实现,例如多视图几何、回环检测等。此外,我们还提供了大量的实例代码供读者学习研究,从而更深入地掌握这些内容。本书可以作为对 SLAM 感兴趣的研究人员的入门自学材料,也可以作为 SLAM 相关的高校本科生或研究生课程教材使用。


(扫码了解本书详情)


《自动驾驶算法与芯片设计》
任建峰,蒋立源,余成文 著

基于高通、华为、谷歌芯片设计相关的多年经验

详解自动驾驶领域算法与芯片设计

揭示自动驾驶领域的关键技术与商业机会

目前自动驾驶的一个发展趋势就是智能化。随着人工智能的飞速发展以及各种新型传感器的涌现,汽车智能化形成趋势,辅助驾驶功能的渗透率越来越高。这些功能的实现需要借助于摄像头、雷达、激光雷达等新增的传感器数据,其中视频处理需要大量并行计算。然而,传统CPU算力不足,而DSP擅长图像处理,对于深度学习却缺乏足够的性能。尽管GPU擅长训练,但它过于耗电,影响汽车的性能。因此,本书着眼于未来,认为定制化的ASIC必将成为主流。本书以自动驾驶的芯片设计为最终目标,来论述设计一个面向未来的自动驾驶SoC芯片的学术支撑和工程实践。

本书共13章。其中第1章主要介绍自动驾驶目前遇到的挑战和研究方向。第2~6章重点讲述环境感知以及规划控制方面的算法设计;第7~10章重点讲述深度学习模型的优化和深度学习芯片的设计;第11章和第12章重点讲述具有安全功能的自动驾驶软件架构设计;第13章介绍5G车联网。

本书适合有志于从事自动驾驶方面的大学本科生、研究生以及工程技术人员阅读。


(扫码了解本书详情)

读者评论

相关博文

  • 社区使用反馈专区

    陈晓猛 2016-10-04

    尊敬的博文视点用户您好: 欢迎您访问本站,您在本站点访问过程中遇到任何问题,均可以在本页留言,我们会根据您的意见和建议,对网站进行不断的优化和改进,给您带来更好的访问体验! 同时,您被采纳的意见和建议,管理员也会赠送您相应的积分...

    陈晓猛 2016-10-04
    5420 735 3 7
  • 迎战“双12”!《Unity3D实战核心技术详解》独家预售开启!

    陈晓猛 2016-12-05

    时隔一周,让大家时刻挂念的《Unity3D实战核心技术详解》终于开放预售啦! 这本书不仅满足了很多年轻人的学习欲望,并且与实际开发相结合,能够解决工作中真实遇到的问题。预售期间优惠多多,实在不容错过! Unity 3D实战核心技术详解 ...

    陈晓猛 2016-12-05
    3299 36 0 1
  • czk 2017-07-29
    5866 28 0 1