算法系列 | DMS 简述及 S32V 平台介绍

关键字 :NXPDMSS32V

一、DMS 简述

1.1、概念简介

伴随着社会经济的不断高速发展,人们生活水平不断提高。 快速、舒适、便捷的生活也成为人们不断追求的目标,使得中国的用户数量不断增加。 但同时,我国一直是世界上因交通事故死亡人数最多的国家之一,据显示,自 2000 年以来,我国的交通事故发生率已经持续十多年高居世界第一。 根据 2001 年中国交通部的统计,我国 48% 的车祸由驾驶员疲劳驾驶引起,直接带来了 30 亿美元。 有关驾驶员汽车的疲劳检测问题,随着高速公路的发展和车速的提高,目前已成为汽车安全研究的重要一环。 疲劳驾驶也一直被引发交通事故的主要原因之一,必须引起高度的重视。 如下图所示为交通事故原因分析统计【1】

          

 

高级智能驾驶系统(ADAS)中的疲劳信息系统(DMS)能够在驾驶员在预期过程中,全天候监测驾驶员的疲劳状态、驾驶行为等。 在发现驾驶员疲劳出现、打哈欠、眯眼睛及其他错误驾驶状态后,预警系统将会对此类行为进行及时的分析,并进行文字或者语音灯光提示。 达到警示驾驶员,纠正错误驾驶行为的方式。

      

1.2、算法原理

疲劳驾驶预警系统(DMS)是基于驾驶员生理及其他非生理信号的资讯进行采集、分析和处理,判断驾驶员状态是否处于疲劳、睡眠状态。 基于处理图像的疲劳驾驶系统主要有以下几个模块组成 【2】 :
          


(1)、图像采集模块:

系统最前端为图像采集模块,搭载图像传感器的摄像头将时刻进行图像采集,采集驾驶员面部特征和其他行为动作,这部分主要是使用 ISP 进行处理。

 

(2)图像处理模块:

 

将采集到的图像进行分析处理(ISP)得到的'''键'的''的''的',对每一'的图像都需要使用 OPENCV、APEX-基于网络、降噪、滤波等处理,再传输至中央处理器利用图像处理算法不断优化结果,并将结果,判断司机的状态通过指示灯和声音进行预警。

在后续的博文中讲介绍如何在 NXP S32V 平台下实现 DMS 方案,整个系统主要利用驾驶员的面部特征、眼部信号、头部运动特征等传统的方式等推断驾驶员的疲劳状态;使用深度学习的方式对司机的行为进行识别判断。

 

下面再对 S32V 平台介绍。

  

二、S32V 平台介绍

2.1、S32V234 构架

S32V234 是 NXP 出的一款视觉处理芯片,通过汽车级认证,下面是对其芯片的构架:

          

由四个 ARM Cortex-A53 @1GHz, L1/L2 cache with ECC & Neon CPU1-4 处理器构成,板载着两个视觉处理芯片 APEX,每个 APEX 核共有 2 个 APU 处理单元,64 个 CU,处理时通过系统总线将图像数据从内存中读入到 4M 大小的 SRAM 中。

 

下面为 APEX 核构架:

            



使用 APEX 核,可以类似 opencv 一样直接调用 apexcv 数据库,也可以自己编写 kernel 实现算法,但是要注意 apex 只支持整型计,且算法收到数据传输限制,需要合理优化工程。 

 

2.2、AIRunner 框架

S32V 是一款视觉芯片,所以结合当前的人工智能的市场,NXP 推出了基于 APEX 核的 AIRunner 推理框架,在我们的 DMS 工程中便使用了 AIRunner 来实现司机危险识别。

但是使用 AIRunner 的框架,目前 NXP 是发布一个 SDK 包,里面有可供调用的库,能够在 APEX 中进行一些计法。

以下是 SDK 的包以及自带的 demos 程序一部分实例:

SDK 包

          

Demos 中支持的一些网络模型:

std::cout << "1: mobilenet classification loop demo" << std::endl;
std::cout << "2: mnetv1_ssd object detection loop demo. " << std::endl;
std::cout << "3: mnetv2_ssd object detection loop demo. " << std::endl;
std::cout << "4: mnetv2_ssdlite object detection loop demo. " << std::endl;
std::cout << "5: mobilenet classification single image demo." << std::endl;
std::cout << "6: mnetv1_ssd object detection single image demo." << std::endl;
std::cout << "7: mnetv2_ssd object detection single image demo." << std::endl;
std::cout << "8: mnetv2_ssdlite object detection single image demo." << std::endl;


参考资料】:

【1】《深入疲劳预警系统(DMS)》链接:http://mileview.cn/xingyezixun/23-40.html

 【2】《极目智能:驾驶员监测不仅仅只是疲劳检测,它的重要性远不止如此》链接:https://www.sohu.com/a/240308071_385219

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论