业界动态

基于S32V来实现人脸识别的应用

发布日期:2019-11-20
来源:广州立功科技股份有限公司

  摘要:汽车行业ADAS功能需求日益增长,防疲劳驾驶是一个热门方向,对于驾驶员状态的检测,人脸识别是基础,只有快速准确地识别到人脸,才能对人脸状态进行分析。本文将介绍基于S32V来实现人脸识别的应用。

  一、S32V视觉处理平台

  NXP于2015开始推出S32V平台,现在已经推出了第二代型号S32V234,第三代目前已经在样品阶段,该平台定位为ADAS视觉处理,提供了视觉系统应用所需的性能和功能。

  对于图像处理,S32V具有自己的特色,硬件方面:具有两路CSI和两路并口摄像头接口,提供了可图形化编程的ISP、APEX,以及3D渲染的GPU。其中可编程的ISP可以对通过CSI输入的摄像头图像数据进行处理,支持HDR、颜色转换、色调映射等。APEX提供了并行图像处理的能力。还提供了H264硬件编解码等,基本覆盖了图像处理所需要的硬件资源。

  软件方面:提供了VSDK,包含S32V平台的各个外设驱动,并配有相关例程。API方面提供了OpenCV、FFmpeg、OpenCL、OpenGL、EGL等常用图像处理相关库。

基于S32V来实现人脸识别的应用476.png

  图1 S32V内部框图

  二、人脸识别方案介绍

  采用索尼的IMX224摄像头作为图像输入,移植人脸识别库,建立演示demo将检测到的人脸实时用方框标记出来。

  1.方案框图

基于S32V来实现人脸识别的应用587.png

  

图 2 人脸识别方案框图

  2.Demo搭建

  获取摄像头数据

  首先,基于VSDK实现iMX224摄像头的数据获取。通过NXP提供S32 Design Studio for Vision Version软件建立iMX224的ISP处理流程,如下图所示。

基于S32V来实现人脸识别的应用713.png

  图 3 ISP处理流程

  这里通过运行在IPUS0中的debayer_rgb_simple_interleaced,实现了摄像头Debayer数据转RGB,然后通过FDMA传输到DDR中供算法调用。如果对于图像有特殊要求的,可以自己建立对应的IPUS核,对图像数据进行相关处理。

  交叉编译相关库

  移植人脸识别算法库,该库基于NCNN神经网络上搭建人脸识别系统,依赖的库有OpenCV、NCNN以及Sqlit3。这些库需要交叉编译,其中OpenCV和Sqlit3的ARM版S32V已经提供不需要再进行编译,编译后的NCNN和人脸识别算法库都是静态库,不需要拷贝到目标板上。

  人脸检测demo

  通过Qt来实现界面显示,首先在pro文件中添加VSDK中获取摄像头数据的相关库,算法移植的相关库,然后通过如下API接口获取图像数据。

  int getCImg(cv::Mat &cimg);

  再调用如下接口进行人脸检测:

  void detectMaxFace(ncnn::Mat& img_, std::vector<Bbox>& finalBbox);

  3.Demo效果

  最后将检测结果通过Qt界面显示出来,如下图所示。

基于S32V来实现人脸识别的应用1224.png

  图4 人脸检测结果

  通过测试,人脸检测耗时如下所示:

1574260395(1).png



本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306116;邮箱:aet@chinaaet.com。
S32V 人脸识别 ADAS