>科技>>正文

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

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

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”。

创建构建文件夹

mkdirbuild; cdbuild; rm-rf *

aarch64的交叉构建

  • 为aarch64设置交叉编译器(请参考aarch64-toolchain.cmake)
  • 设置opencv的路径,因为示例代码依赖于opencv

-DENABLE_INT8=ON

-DENABLE_NEON=ON

-DCMAKE_BUILD_TYPE=RELEASE

-DCMAKE_TOOLCHAIN_FILE=../aarch64-toolchain.cmake

..

make

avx2的原生构建

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。

结果如下所示:

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

鸣谢

本研究部分得到了深圳市科学基金会的资助(批准号:JCYJ20150324141711699)。返回搜狐,查看更多

责任编辑:

声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
阅读 ()
投诉
免费获取
今日搜狐热点
今日推荐