如何使用RZ/A2M和DRP技术实现高效的口罩人脸检测

描述

在前两篇文章中我们分别介绍了如何使用RZ/A2M和它独有的DRP技术实现工业自动化中的目标物体检测与追踪以及如何实现二维码编码类型的快速检测。现在让我们看一下RZ/A2M的DRP与嵌入式AI结合实现口罩人脸检测。

在示例中我们通过MIPI接口连接Sony IMX219 CMOS传感器,输入一个1280x720分辨率的图像,通过RZ/A2M的DRP对输入图像做Simple ISP处理,图像缩放处理,然后运行一个轻量级且高效的口罩,人脸检测模型。它能够实现在人脸检测模式下30FPS的检测速度,在区分是否戴口罩的模式下实现20FPS的检测速度。下面让我们看一下它是如何实现的。

嵌入式

下图是他的数据处理流程:

蓝色部分的处理由DRP硬件加速实现,其中Simple ISP库将CMOS传感器的Bayer格式数据转换为灰阶数据,并统计一帧图像中三个预设区域的平均亮度用于调整自动曝光参数。

第二个DRP库实现图像的缩放处理,将1280x720分辨率的灰阶图像压缩成640x360大小的图像,它将大大提高人脸的检测速度。

图中绿色部分是由Cortex A9处理器运行的轻量级口罩及人脸检测模型,用于标定出当前帧是否有人脸,是否带有口罩。

嵌入式

在此示例中我们将不依赖外部RAM,只使用RZ/A2M的4MB片上高速RAM。

步骤1

由于人脸检测只需要使用灰阶图像,我们需要将CMOS传感器的Bayer格式图像转换成灰度图,此时我们载入一个simple_isp_2_tiles的DRP库,这个DRP库需要具有以下特性:

占用2个Tile的DRP硬件资源

实现Bayer转灰阶

对3个独立的区域中所有像素的亮度值进行累加

支持多Tile并行处理

嵌入式

由于这个库具有多Tile并行化(segmented)的处理特性,我们可以把它载入到3组DRP 的tile中。其中Tile0和1的simple_isp_2_tiles库处理顶部1/3的图像,Tile2和3的simple_isp_2_tiles库处理中间1/3的图像,Tile4和5的simple_isp_2_tiles库处理底部1/3的图像。且这三部分图像是同时并行化处理的,这让处理速度又增加了3倍。

嵌入式

由于DRP库提供了非常便捷的API接口,实现以上功能只需要简单的编程操作即可实现。

嵌入式

请根据DRP库的应用文档中关于 Number of tiles和Segmented Processing属性来决定如何加载DRP库

嵌入式

Number of tiles: 表示DRP库需要占用几个硬件Tile

Segmented processing:表示DRP任务十分可以拆分到多个tile中并行执行

DRP库在Tile中的摆放方式共有11种,可根据DRP的Number of tiles 和 Segmented属性灵活选择使用哪种加载方式,举例如下:

嵌入式

步骤2

在得到一帧灰阶图像后,我们载入一个resize_bilinear_fixed的DRP库将这一帧图像进行缩放。这个DRP库具有以下特性:

输入8bpp灰阶图像

支持 ⅛ ¼ ½ 1x 2x 4x 8x 16x 固定缩放比例

水平和垂直缩放比例单独控制

输入宽度范围128~1280,输入高度范围8~960

占用4 tiles硬件资源,不支持segmented

经过步骤2的处理,我们将灰阶图像从Video RAM1读入,宽和高均缩小为原来的½,并将图像写入到Video RAM2,用于下一步的人脸检测。

嵌入式

这两步的执行时间约为4.6ms和8.2ms,采用并行化处理和小于1ms的DRP库加载速度极大优化了人脸识别之前图像预处理的执行速度。

嵌入式

步骤3

我们移植了一个轻量级的开源人脸识别算法https://github.com/nenadmarkus/pico

在此基础上添加了口罩人脸的数据集,并对新数据集进行了训练,经过测试其识别速度和识别精度均比较理想。

首先需要准备数据集,可以直接通过我们示例包中的数据集训练或从网络下载。

嵌入式

此数据集包含7092张人脸图片及4283张口罩人脸图片,并对图片中的人脸关键特征进行了标定。

嵌入式

AI模型并非普遍采用的神经元网络模型,而是使用了决策树模型,其具有执行速度快的特点,而且其模型大小只有几十KB到2百多KB,

以下是AI领域比较常用的算法:

嵌入式

决策树是一种非参数化的监督学习模型,它能够让你跟随树状的决策分支结果一步一步从根节点到达顶端叶节点,从而根据顶端叶节点的结果来预测目标值,常用于目标分类(classification)和回归(regression)

嵌入式

在人脸检测过程中,我们使用一个滑动窗口一步一步的扫描步骤2生成的图像,先使用最小滑动窗口,然后逐步增大窗口的大小。使用决策树模型检测每一个滑动窗口内是否存在人脸。

嵌入式

如下是一些关键参数的配置,我们可以通过参数调整在检测精度和性能之间进行平衡。

嵌入式

以下为1280x720分辨率输入,分别针对画面中1张人脸,3张人脸和7张人脸进行检测,在口罩人脸模式下可实现

嵌入式

如下视频是针对快速切换的图像进行人脸检测的测试结果,可以看到RZ/A2M在经过了DRP加速及和运行轻量级高效AI算法后,能够实时捕获到图像中的人脸。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分