libfacedetection是一个用于图像中人脸检测的开源库。人脸检测速度可达1500FPS。
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 文件显示了如何使用该开源库。
注:图片来自本Github项目(https://github.com/ShiqiYu/libfacedetection)
在使用 g++ 编译源代码时,请添加 -O3 来启用优化。
在使用Microsoft Visual Studio编译源代码的时候,请选择“Maximize Speed(最大化速度)/-O2”。
创建构建文件夹
mkdir build; cd build; rm -rf *
aarch64的交叉构建
cmake \ -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
结果如下所示:
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 |
注:
结果如下所示:
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 |
注:
于仕琪,深圳大学计算机科学与软件工程学院副教授,shiqi.yu @ gmail.com
Jia Wu、Shengyin Wu、Dong Xu
本研究部分得到了深圳市科学基金会的资助(批准号:JCYJ20150324141711699)。