
每个驾驶者都知道,驾驶员容易疲劳。 碰巧即使在下班回家的时候,您的眼睛仍会紧贴在一起,而卡车司机则是主要的专业问题之一:由于人们睡在方向盘上,每年发生
数千起事故 。 问题是,卡车司机一方面需要在休息和安全驾驶之间保持平衡,另一方面又要在疲劳和高收入之间保持平衡。 极少的机会是睡得少,但却可以更快地交付货物并获得新订单。 更不用说驾驶员拥有自己的私人生活,他们并不总是在飞机上睡觉的事实。
为了使道路更安全,我们启动了一个项目来监视驾驶员的状况:根据客户的要求,我们创建了软件和硬件解决方案,可以跟踪驾驶员在道路上的健康状况,并防止其入睡,以免他们在下一个世界中“醒来”。
警惕的眼睛
主要思想是使用摄像机来跟踪驾驶员的疲劳和危险反应。 该设备首先收集有关特定驾驶员在驾驶时的行为的统计信息。 并且,如果基于这些统计信息,系统确定驾驶员显示疲劳迹象或即将见梦,她将向驾驶员发出信号。 如果驾驶员经常开始点头或对像沉睡的苍蝇这样的事件做出反应,则系统还会将此通知给调度员。
使用视频分析,我们可以监控驾驶员的注意力集中程度以及他是否在看路。 相机会不断捕捉脸部和手部,并且系统会跟踪许多关键点。 我们希望驾驶员的眼睛一直睁着,眼睛对准挡风玻璃或后视镜。 如果眼睛闭上,或者头部向前倾斜,下巴落在胸部上,或者脸部长时间离开挡风玻璃,则系统会发出信号。
当然,这种跟踪和信号通知并非始终有效,而是仅在汽车行驶时才使用GPS传感器。 由于情况不同,我们还提供了强制打开和关闭系统的可能性。 但是同时,我们比较了机器的持续时间和系统关闭的时间。 如有必要,该设备可以通知调度员驾驶员长时间处于“控制”关闭状态。
实作
该项目包括两部分:硬件和软件。
系统如何确定驾驶员现在正在入睡? 使用基于机器学习的OpenCV库。 OpenCV允许您定义视频流中的关键点:下巴,手,眼睛(包括其大小和广度)。 并且基于这些参数,系统确定驾驶员是否疲倦。
硬件由Waveshare RPi摄像机(F)和Raspberry Pi组装在一个外壳中组成。 创建硬件比乍看之下要困难得多:您不需要连接和焊接组件,而是要仔细考虑它们的组合,以使设备能够长时间可靠地工作并且不会出现故障。 实际上,这是一个单独的集成任务。 集成风险通常是最高的。 毕竟,当软件包在您的笔记本电脑上,在您的操作系统下并受您的限制运行时,是一回事,而在将该软件包传输到另一台操作系统下的Raspberry Pi时,则是另一回事。
当然,如果将产品串联放置,那么它将不再在Raspberry Pi上实现。 一块铁很弱,它的力量不足以以全分辨率处理视频流并识别人脸,因此,使用这种硬件,您就得花招了。
此外,我们实施了夜间模式,以便当人们经常入睡时,系统可以在黑暗中唤醒驾驶员。 也就是说,我必须教计算机如何处理红外摄像机的视频。 在这里我们不是开拓者,在智能家居系统中也解决了类似的问题。 要确定驾驶员的疲劳程度,您无需了解其外观的详细信息:头发的颜色,眼睛,肤色。 我们只需要清楚地确定手和关键点在脸上的位置即可。 奇怪的是,事实证明,在红外模式下用眼睛工作比在正常情况下更容易。 如果您曾经看过用自动相机拍摄的带有野生动物的剪辑,那么您知道它们的角度很好,它们的眼睛像激光一样发光。
事实证明,这种效果对我们非常有用:更容易确定闭眼的事实。 当然,由于图像的光谱是完全不同的,因此需要对所有算法进行额外的调整,但是总的来说,眼睛会更加自信。
但是在红外模式下,当驾驶员通过电话将耳朵按在肩膀上说话时,系统会识别出更糟的情况。 这也是一种危险情况,明确禁止在开车时在电话上通话。
当然,像任何机器学习模型一样,我们的模型也不是绝对准确的。 但是,您需要很好地理解识别错误的确切含义。 例如,我们尚未在非欧洲外观的驾驶员上测试我们的系统。 也许在这种情况下,准确的眼睛识别和疲劳的比例将会降低。 但是,在内部测试期间,该系统在10例案例中有8-9例完全正常工作。
* * *
如今,在公共领域有很多好的算法,而我们采用了现成的算法,这不仅使我们能够解决问题,而且节省了大量时间。 现在,您可以快速找到适合解决独特任务的模型,并对其进行快速优化。 当然,这需要解决计算机视觉问题和快速适应的技能和经验。 然后只需一两天即可在笔记本电脑上获得原型。 进一步的工作取决于任务,可用容量,存储空间和其他因素。 例如,您可以快速完善我们的系统,使其发挥不同的作用:作为安全设备,它可以确保只有特定的人在一天的特定时间进入房间。 也就是说,您可以为与计算机视觉有关的各种任务快速创建解决方案。