前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开源 | 比快更快!速度超越OpenCV的人脸检测库 libfacedetection 开源!

开源 | 比快更快!速度超越OpenCV的人脸检测库 libfacedetection 开源!

作者头像
AI科技评论
发布2019-10-31 16:38:51
1.1K0
发布2019-10-31 16:38:51
举报
文章被收录于专栏:AI科技评论AI科技评论

Github项目地址:https://github.com/ShiqiYu/libfacedetection

这是一个用在图像中的基于CNN的人脸检测开源库。 CNN模型已转换为C源文件中的静态变量。 源代码不依赖于任何其他库。 你只需要一个C++编译器,在Windows,Linux、ARM和任何平台下均可以编译源代码。

SIMD指令用于加速检测。 如果使用Intel CPU或NEON for ARM,则可以采用AVX2。

模型文件也已在项目的 ./models/ 目录中提供。

examples/libfacedetectcnn-example.cpp 文件显示了如何使用该开源库。

如何编译

在使用 g++ 编译源代码时,请添加 -O3 来启用优化。

在使用Microsoft Visual Studio编译源代码的时候,请选择“Maximize Speed(最大化速度)/-O2”。

创建构建文件夹

代码语言:javascript
复制
mkdir build; cd build; rm -rf *

aarch64的交叉构建

  • 为aarch64设置交叉编译器(请参考aarch64-toolchain.cmake)
  • 设置opencv的路径,因为示例代码依赖于opencv
代码语言:javascript
复制
cmake \
    -DENABLE_INT8=ON \
    -DENABLE_NEON=ON \
    -DCMAKE_BUILD_TYPE=RELEASE \
    -DCMAKE_TOOLCHAIN_FILE=../aarch64-toolchain.cmake \
     ..

make

avx2的原生构建

代码语言:javascript
复制
cmake \
    -DENABLE_INT8=ON \
    -DENABLE_AVX2=ON \
    -DCMAKE_BUILD_TYPE=RELEASE \
    -DDEMO=ON \
     ..

make

在Windows系统上进行基于CNN的人脸检测

结果如下所示:

Method - 方法

Time

FPS

Time

FPS

X64

X64

X64

X64

Single-thread - 单线程

Single-thread - 单线程

Multi-thread - 多线程

Multi-thread - 多线程

OpenCV Haar+AdaBoost (640x480)

--

--

12.33ms

81.1

cnn (CPU, 640x480)

64.21ms

15.57

15.59ms

64.16

cnn (CPU, 320x240)

15.23ms

65.68

3.99ms

250.4

cnn (CPU, 160x120)

3.47ms

288.08

0.95ms

1052.2

cnn (CPU, 128x96)

2.35ms

425.95

0.64ms

1562.1

注:

  • OpenCV Haar + AdaBoost 运行的最小面部尺寸为48x48
  • 仅作面部检测,不包括地标检测。
  • 最小面部尺寸为 12x12
  • 处理器:Intel(R)Core(TM)i7-7700 CPU @ 3.6GHz。

基于CNN的ARM Linux人脸检测(树莓派 3 B +)

结果如下所示:

Method - 方法

Time

FPS

Time

FPS

Single-thread - 单线程

Single-thread - 单线程

Multi-thread - 多线程

Multi-thread - 多线程

cnn (CPU, 640x480)

512.04ms

1.95

174.89ms

5.72

cnn (CPU, 320x240)

123.47ms

8.1

42.13ms

23.74

cnn (CPU, 160x120)

27.42ms

36.47

9.75ms

102.58

cnn (CPU, 128x96)

17.78ms

56.24

6.12ms

163.5

注:

  • 仅作面部检测,不包括地标检测。
  • 最小面部尺寸为 12x12
  • 处理器:Raspberry Pi 3 B +,Broadcom BCM2837B0,Cortex-A53(ARMv8)64位 SoC @ 1.4GHz

作者

于仕琪,深圳大学计算机科学与软件工程学院副教授,shiqi.yu @ gmail.com

贡献者

Jia Wu、Shengyin Wu、Dong Xu

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技评论 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何编译
  • 在Windows系统上进行基于CNN的人脸检测
  • 基于CNN的ARM Linux人脸检测(树莓派 3 B +)
  • 作者
  • 贡献者
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档