驾驶员困倦是导致机动车事故的一个主要因素,可能会造成严重后果,包括受伤或死亡。驾驶员困倦导致事故的原因有多种。当一个人疲倦时,他们的反应时间会变慢,决策能力会受损,并且可能难以保持注意力集中在路上。因此,他们可能会错过重要的视觉提示,无法注意到危险或在驾驶时做出错误的决定。
除了这些身体影响外,疲劳驾驶也是一种认知障碍,这意味着它会影响一个人思考和做出正确决定的能力。当驾驶员疲劳时,他们的判断力和意识就会受损,这可能会导致驾驶时出现危险或危险的行为。某些人群的疲劳驾驶风险更高,包括商用卡车司机、轮班工人以及未确诊或未治疗睡眠障碍的人。但是,如果睡眠不足或长时间驾驶而不休息,任何人都可能面临疲劳驾驶的风险。
由于疲劳驾驶仍然是我们道路上的一个主要安全问题,我们正在开发一个尖端系统来解决这个问题。
我们的解决方案结合了计算机视觉和人工智能 (AI) 的强大功能来监控驾驶员的眼睛并检测他们何时连续闭上两秒钟。为了确保我们系统的准确性和可靠性,我们在 Arduino Nicla Vision 中使用了 AI 算法。这些算法经过训练,可以识别摄像头收集的数据中的模式和趋势,并识别驾驶员的眼睛何时长时间闭上。
如果系统检测到驾驶员闭眼两秒或更长时间,就会发出警报,将驾驶员唤醒,提醒他们在路上保持专注和警惕。该警报可以采用视觉或听觉信号的形式,例如闪光灯或响亮的哔哔声。
除了检测疲劳驾驶外,我们的系统还可以扩展到监控可能影响道路安全的其他行为,例如分心驾驶或药物或酒精导致的损伤。通过提醒司机注意这些行为并提醒他们保持专注和警觉,我们可以帮助降低事故风险,让我们的道路对每个人都更安全。
用于数据收集的硬件设置包括安装在三脚架上的 Nicla Vision。
Nicla Vision 是一款功能强大且用途广泛的产品,旨在使用户能够开发和原型化涉及边缘图像处理和机器视觉的项目。它具有支持 TinyML 的 2MP 彩色摄像头,以及智能 6 轴运动传感器、麦克风和距离传感器,可提供一系列传感功能。
该产品由功能强大的 STM32H747AII6 双 ARM Cortex M7/M4 IC 处理器提供支持,可实现设备端智能,并使用户能够在边缘托管机器学习模型和其他高级算法。此外,Nicla Vision 体积小巧,外形尺寸仅为 22.86 x 22.86 mm,可轻松融入各种项目和场景。Nicla Vision 结合了机器视觉和处理能力以及小巧的外形,是开发或原型设计涉及边缘图像处理和机器视觉项目的理想解决方案。
如果您不熟悉将 Nicla Vision 设置为与 EdgeImpulse 一起使用的过程,并且尚未将设备连接到 EdgeImpulse 仪表板,我们建议您按照快速教程来指导您完成设置过程。
在设备和 EdgeImpulse 仪表板之间成功建立连接后,您应该会看到设备出现在“设备”选项卡中。
如果您没有在“设备”选项卡中看到该设备,则可能是设备的连接或配置存在问题。在这种情况下,可能需要对问题进行故障排除或参考其他资源以获得帮助。
现在已经配置了必要的软件和硬件,我们可以继续构建对象检测模型。此过程的第一步是收集将用于训练模型的数据。收集数据有两种主要方法:使用连接的设备直接捕获数据或使用上传器工具上传预先存在的数据。在这个特定项目中,我们将使用第一种方法并直接从连接的设备收集数据。然后,这些数据将用于训练物体检测模型,使其能够在未来更准确地识别和分类物体。
数据上传到 EdgeImpulse 平台后,需要对标注队列中未标注的图片进行标注。在这种情况下,模型将接受训练以识别两个不同的类别:闭眼和睁眼。因此,有两个对应的标签将应用于标签队列中的图像。这个标记数据的过程是训练对象检测模型的重要步骤,因为它允许模型学习每个类别的特征和特征,使其能够在未来准确地分类图像和识别对象。通过仔细准确地标记标记队列中的图像,我们可以确保模型训练有素并且能够有效地执行。
对于我们的项目,我们需要具有可靠准确度的高性能模型。为了满足这些要求,我们正在使用 Edge Impulse FOMO(更快的对象,更多的对象),这是一种专为高度受限设备上的对象检测而设计的机器学习算法。FOMO 生成高效、快速的模型,非常适合处理能力和内存有限的应用程序。
为了针对我们的用例优化 FOMO 的性能,我们将图像尺寸设置为 96px,因为 FOMO 在 96x96 图像上表现最佳。为了在我们的项目中实施 FOMO,我们在脉冲中添加了一个图像处理块和一个对象检测(图像)学习块,并将调整大小模式设置为适合最短轴。通过将 FOMO 与这些模块结合使用,我们可以以高水平的准确性和效率有效地实时检测驾驶员的睡意。
在我们项目的下一阶段,我们将专注于生成特征。为此,我们将转到“图像”选项卡并选择所需的颜色深度。在我们的例子中,我们选择使用RGB ,现在我们将启动特征生成过程。
虽然生成的特征被很好地分割并不是严格必要的,但它通常是一个很好的迹象,表明生成的模型将表现良好。一组划分良好的特征通常会导致模型表现良好,因为它表明所使用的两个类之间存在明显区别。一旦生成了特征,我们就可以进入项目的训练阶段。
完成必要的脉冲设计后,我们现在可以继续训练我们的机器学习模型的过程。我们为模型训练选择的具体设置如下所示。需要注意的是,可以调整这些设置以提高训练模型的准确性,但必须注意避免过度拟合。
通过仔细调整模型训练设置并采用适当的技术来防止过度拟合,我们可以优化机器学习模型的性能并实现高水平的准确性。在仔细选择和准备足够数量的训练数据后,我们的机器学习模型已经能够达到令人印象深刻的准确度。使用指定的训练设置,我们能够达到 100% 的训练准确率,这是一个非常好的结果。
现在我们已经训练了我们的机器学习模型,是时候评估它在看不见的测试数据上的性能了。为此,我们将转到“模型测试”选项卡并使用“全部分类”功能。这将使我们能够看到模型在测试数据上的表现如何,并深入了解其泛化能力。
我们也获得了 100% 的测试准确率,这排除了任何过度拟合的可能性,我们的模型运行良好。重要的是测试机器学习模型在未见数据上的性能,以便对其能力进行真实的评估。仅对训练数据进行测试可能会导致过于乐观的结果,因为模型已经看到并从这些数据中学习到了。通过对看不见的数据进行测试,我们可以更准确地衡量模型对新的未知输入进行概括和预测的能力。
现在是时候进入测试的最后阶段,或者更确切地说,是我们机器学习模型的模拟部署了。在此阶段,我们将模拟模型在真实环境中的使用,并评估其在这些条件下的性能。这将使我们能够看到模型在更现实的环境中的表现如何,并确保它已准备好部署。
现在是时候进入“实时分类”选项卡并从设备中获取样本了。获得样本后,我们将对其进行分类并观察结果。如果我们的模型能够准确地区分闭眼和睁眼,我们就可以自信地进行部署。
我们的机器学习模型已经展示了它的能力,我们准备在现实环境中部署它。
为了部署我们的机器学习模型,我们需要创建一个 Arduino 库。该库将包含在 Arduino Nicla Vision 上运行模型所需的所有必要代码和资源。
要构建库,我们需要导航到“部署”选项卡并按照此处概述的步骤进行操作。完成此过程后,我们将拥有一个功能齐全的库,可以在 Arduino 平台上使用。我们可以采取的一个可选步骤是使用 EON 编译器启用优化。该编译器旨在优化我们库中的代码,使其更快、更高效。
完成构建过程后,我们将得到一个包含我们的模型和一组示例的 zip 文件。要在 Arduino 平台上使用这个库,我们需要将它添加到 Arduino 集成开发环境 (IDE) 中。
为此,我们需要打开 Arduino IDE 并导航至Sketch > Include Library > Add.ZIP library 。从这里,我们将能够浏览我们之前创建的 zip 文件并将其添加到 IDE。将库添加到 Arduino IDE 后,我们将能够使用它在 Arduino 平台上运行我们的机器学习模型。
修改位于“文件”>“示例”>“您的项目名称”>“nicla_vision”>“nicla_vision_camera”的代码,将您添加的内容合并进来。
部署后,我们开发了一个集成了 Nicla Vision、蜂鸣器和 LED 的设备。该设备封装在一个整洁的 3D 打印外壳中,可以轻松连接到汽车的仪表盘上。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !