适合ARM 的轻量级人脸检测算法汇总

1、场景需求

  人脸检测可能是一个比较老的话题,你会发现网上有一大堆的state-of-art人脸检测算法。但是本文关注的是轻量级的人脸检测算法,主要的目的是将其应用到ARM等一些嵌入式设备中,在满足性能的同时获得实时的检测速度。通过大量的筛选之后,你会发现真正适合于ARM端的人脸检测算法屈指可数。下面就让我们进入正题吧。

2、libfacedetection

2.1 相关链接

Github链接

2.2 算法简介
  • 这是一个开放算法包,用于基于cnn 的图像人脸检测。cnn 模型已转换为c源文件中的静态变量。源代码不依赖于任何其他库。你需要的只是一个C++编译器。您可以在Windows、Linux、ARM 和任何平台上编译源代码,并使用C++编译器。
  • SIMD指令用于加快检测速度。如果使用Intel CPU 或Neon for ARM,则可以启用AVX2。
2.3 算法效果展示

在这里插入图片描述

2.4 算法性能展示

在这里插入图片描述
  上图展示了部分该算法的检测速度,640x480分辨率的图片在CPU上使用多线程可以获得81fps,基本上可以满足现实场景中的一些需要。除此之外,该算法在Cortex-A53 (ARMv8) 64-bit SoC @ 1.4GHz上使用多线程后的运行时间为174.89ms左右;如果使用ARM多核+NEON+INT8量化等有望达到实时的运行速度。

3、Ultra-Light-Fast-Generic-Face-Detector-1MB

3.1 相关链接

Github链接

3.2 算法简介

  该模型是针对边缘计算设备基于libfacedetection 替换压缩网络设计的轻
量人脸检测模型。该模型具有以下的特点:

  • 在模型大小上,默认FP32 精度下(.pth)文件大小为1.04~1.1MB,推理框
    架int8 量化后大小为300KB 左右;
  • 在模型计算量上,320x240 的输入分辨率下90~109 MFlops 左右;
  • 模型有两个版本,version-slim(主干精简速度略快),version-RFB(加入了
    修改后的RFB 模块,精度更高);
  • 提供320x240、640x480 不同输入分辨率下使用widerface 训练的预训练模型,
    更好的工作于不同的应用场景;
  • 支持onnx 导出,便于移植推理。
3.3 算法效果展示

在这里插入图片描述在这里插入图片描述在这里插入图片描述

3.4 算法性能展示

在这里插入图片描述
在这里插入图片描述
  上图展示了该算法的运行速度和模型大小。通过观察,我们可以得出该算法模型大小仅有1M左右,小于libfacedetection算法;除此之外,320x240大小的输入在ARM A72x4的设备上的运行时间是11ms左右,运行的速度大概是100fps,达到了实时性的要求。

4、BlazeFace

4.1 相关链接

项目主页-论文链接

4.2 算法简介

  BlazeFace,一种轻量级且性能良好的人脸检测器,专门用于ARM GPU 推理。它在ARM设备上以 200–1000+fps 的速度运行。这种超实时性能使其能够应用于任何需要精确的面部感兴趣区域作为任务特定模型(如 2d/3d 面部关键点或几何估计、面部特征或表情分类和面部区域分割)增强现实等。我们的贡献包括一个轻量级的特征提取网络,但不同于 MobileNetV1/V2,一个 基于SSD的GPU 友好的anchor机制,和一个改进的 分辨率策略替代NMS。

4.3 算法效果展示

在这里插入图片描述

4.4 算法性能展示

在这里插入图片描述
  上图展示了该算法的运行速度,通过观察我们可以得出:1)改进的BlazeFace算法比原始的MobileNet-V2速度更快,大约提升了3倍左右;2)BlazeFace的检测速度很快,在Huawei P20上面的运行时间是5.8ms。

5、FaceBoxes

5.1 相关链接

Github链接-论文链接

5.2 算法简介

  FaceBoxe是一种新的人脸检测方法,称之为 FaceBoxe,它在速度和准确度上都具有优异的性能。此外,FaceBoxes 的检测速度和人脸的个数无关该算法在单核 CPU 上的运行速度是 20FPS,在 VGA 分辨率的 GPU 上面的速度是 125FPS

5.3 算法效果展示

在这里插入图片描述
在这里插入图片描述

5.4 算法性能展示

在这里插入图片描述
  上图展示了FaceBoxe算法的性能。与MTCNN相比,该算法具有更高的mAP值;除此之外,该算法在E5-2660V3CPU上面可以获得20fps的运行速度,如果采用OpenVIO进行优化加速之后,应该可以获得更加惊艳的效果

6、RetinaFace

6.1 相关链接

Github链接-论文链接

6.2 算法简介

  RetinaFace 是一种鲁棒的单阶段人脸检测算法,该算法联合外部监督和自监督的多任务学习来在不同尺度的人脸图片上进行精确定位,通过使用轻量级骨干网,RetinaFace 可以实时运行在单个 CPU 核上。

6.3 算法效果展示

在这里插入图片描述

6.4 算法性能展示

在这里插入图片描述
  上图展示了RetinaFace算法的性能。通过观察我们可以发现,当使用MobileNet-v2作为Backbones时,640x480的输入图片在ARM上的运行时间为61.2ms,即运行的速度为16fps,这个速度基本可以满足某些场景的需要。

7、LFFD

7.1 相关链接

Github链接-论文链接

7.2 算法简介

  LFFD 是一种用于边缘器件的轻量且快速的人脸检测算法。LFFD 在准确度和时延上都有很大的平衡,不仅模型体积小,而且具有较快的推理速度,同时可以获得较高的准度。在实际应用中,我们已经将其部署在云和边缘设备(如nvidia jetson 系列和基于ARM 的嵌入式系统)中。实际上,LFFD 是一个通用的检测框架,适用于多个类型的检测,如人脸检测、行人检测、头部检测、车辆检测等。一般来说,长边和短边的平均比率小于5 的对象适合使用该算法进行检测。

7.3 算法效果展示

在这里插入图片描述
在这里插入图片描述

7.4 算法性能展示

在这里插入图片描述
  上图展示了LFFD算法的性能。640x480的图片输入到ARM设备中,该算法的运行时间为4114.15ms,和前面的几个算法相比,这个算法的运行速度相对来说比较慢,我测试过该算法在Android设备上面的速度,还是可以满足 一些对时间要求不是很苛刻的场景。

8、EagleEye

8.1 相关链接

论文链接

8.2 算法简介

  EagleEye,在低功耗的设备上在速度和精度之间达到了很好的折衷。EagleEye 具有低的 FLOPS 的同时具有低的容量。论文中提出了五种策略来提升算法的速度和精度,主要包括卷积分解、设计了一个高效的上下文模块,Focal loss 等。

8.3 算法效果展示

在这里插入图片描述
在这里插入图片描述

8.4 算法性能展示

在这里插入图片描述
  上图展示了EagleEye算法的性能。精度方面而言,该算法比MTCNN的mAP值高出了2个点;速度方面而言,640x480的输入在ARM设备中的运行时间为20fps,基本能够满足现实场景的需要;模型大小方面而言,该算法的模型参数为0.23M,模型大小为1M左右,内存占用率为13.9M。

9、DBFace

9.1 相关链接

Github链接

9.2 算法简介

  DBFace是一种用于人脸检测的实时单级检测器,具有速度快、精度高等优点

9.3 算法效果展示

在这里插入图片描述

9.4 算法性能展示

在这里插入图片描述
在这里插入图片描述

10、CenterFace

10.1 相关链接

Github链接-论文链接

10.2 算法简介

  CenterFace(尺寸为7.3MB)是一种实用的边缘设备无锚人脸检测与定位方法。

10.3 算法效果展示

在这里插入图片描述
在这里插入图片描述

10.4 算法性能展示

在这里插入图片描述
在这里插入图片描述

参考资料

[1] libfacedetection
[2] Ultra-Light-Fast-Generic-Face-Detector-1MB
[3] blazeface
[4] FaceBoxes
[5] RetinaFace
[6] LFFD
[7] EagleEye
[8] DBFace
[9] CenterFace

注意事项

[1] 如果您对AI、自动驾驶、AR、ChatGPT等技术感兴趣,欢迎关注我的微信公众号“AI产品汇”,有问题可以在公众号中私聊我!
[2] 该博客是本人原创博客,如果您对该博客感兴趣,想要转载该博客,请与我联系(qq邮箱:1575262785@qq.com),我会在第一时间回复大家,谢谢大家的关注.
[3] 由于个人能力有限,该博客可能存在很多的问题,希望大家能够提出改进意见。
[4] 如果您在阅读本博客时遇到不理解的地方,希望您可以联系我,我会及时的回复您,和您交流想法和意见,谢谢。
[5] 本文测试的图片可以通过关注微信公众号AI产品汇之后找我索取!
[6] 本人业余时间承接各种本科毕设设计和各种小项目,包括图像处理(数据挖掘、机器学习、深度学习等)、matlab仿真、python算法及仿真等,有需要的请加QQ:1575262785详聊,备注“项目”!!!

  • 14
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Arm TrustZone的轻量级嵌入式虚拟化架构》是一篇介绍Arm TrustZone技术的论文,论文从虚拟化和安全角度阐述了TrustZone技术的应用以及面临的挑战。 TrustZone技术是一种硬件级别的安全解决方案,其可以将处理器分成两个相互独立的域:NS(非安全域)和S(安全域)。在S域中,可以运行受保护的安全应用程序,这些应用程序无法被NS域中的应用程序和操作系统访问或篡改。这个划分能够保证敏感数据和代码的安全性,例如密码,指数,证书等等。 随着物联网和智能设备的增多,TrustZone技术也正逐渐被广泛接受和应用,但是应用中还存在一些挑战。论文提出Arm V8-M的轻量级虚拟化技术作为解决方案,这个技术可以提高TrustZone的灵活性、可扩展性和安全性。该技术可以在NS和S域之间构建多个虚拟环境,并支持虚拟化的存储和网络设备。这对于实现可信任的设备、系统或者云环境是非常有益的。 同时,论文也介绍了轻量级虚拟化技术的一些缺陷和挑战,如虚拟化开销、内存占用和安全性等。作者提出这些挑战并分析其可能的解决方案。最后,论文总结了轻量级虚拟化技术在TrustZone中的应用,并给出了未来研究方向的建议。 总之,该论文详细地介绍了Arm TrustZone技术以及轻量级虚拟化技术的应用和挑战,在TrustZone技术的发展和应用上有着积极的推动作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值