快捷搜索:

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

汽车行业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等常用图像处置惩罚相关库。

图1 S32V内部框图

二、人脸识别规划先容

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

1. 规划框图

图 2 人脸识别规划框图

2. Demo搭建

获取摄像头数据

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

图 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界面显示出来,如下图所示。

图4 人脸检测结果

经由过程测试,人脸检测耗时如下所示:

您可能还会对下面的文章感兴趣: