DMS 简述及 S32V 平台介绍

关键字 :DMSNXP

一、DMS 简述

1.1、概念简介

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


 

 

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

      

1.2、算法原理

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

           

(1)、图像采集模块: 

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

 

(2)图像处理模块:

 

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

在后续的博文中讲介绍如何在 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 中进行一些运算 ops。

       以下是 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次,发文人进小黑屋喔~

评论

li

li

2020年12月18日
您好,基于 APEX 核的 AIRunner 推理框架怎么才能使用,提供的SDK可以下载吗