仅用CPU就能跑到1000FPS这是开源的C加跨渠道人脸检测项目

放大字体  缩小字体 2020-03-23 19:43:55  阅读:636 作者:责任编辑NO。石雅莉0321

选自GitHub

项目作者:Shiqi Yu

参加:肖清

总是被各种依靠环境蹂躏?看看这个 C++编写的跨渠道人脸检测项目,电脑手机都可运转!

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

人脸检测可大规模的应用于人机交互、安防监控、交际文娱等范畴,具有很强的实用价值,因而遭到广泛重视与研讨。在很多人脸检测的新办法中,运用卷积神经网络进行细心的检测是现在较为盛行的办法之一。然而在咱们运用他人开源的项目时常常需求装置各式各样的依靠环境,不同的依靠环境在不同硬件渠道或操作体系中支撑程度不一样,增加了项目跨渠道搬迁的难度。

本文介绍的是一个运用卷积神经网络进行人脸检测的开源项目,它最大的亮点是可以在一切支撑 C/C++的渠道上编译运转。作者将预练习的 CNN 模型转换为静态变量后贮存到了 C 文件里,使得该项目不需求任何其他依靠项(当然 OpenCV 仍是需求的),只是只需求一个 C++编译器,就能在任何一个渠道乃至嵌入式体系上编译并运转该项目。

特别吸引人的是该项目运用 C++编写且支撑 AVX2,在 i7 的 CPU 上就能跑出丧尽天良的 1000FPS!下图为项目作者给出的检测作用示例。

可以正常的看到该项目不只检测速度非常快,检测精度也很不错。所以,机器之心也上手测验了一番。

项目实测

咱们在 Ubuntu 18.04 下测验这个人脸检测项目的作用。首要先运用一张相对简略的合照进行测验,其总共有 15 个人,分辨率为 970x546,检测成果如下图所示:

可以正常的看到它精确的辨认出了图片中一切的人像,在 CPU 上仅耗时 133ms 且置信度都为 99%。下图为加上 bounding box 后的检测作用图:

下面咱们进步一下难度,运用一打开挂民族的图片测验一下作用。它也简直把一切火车头上正面的面孔都辨认出来了,火车车身上的人像没有辨认出来,或许是因为那些人像实在是太小太密布的原因。

编译进程

该项目编译需求 OpenCV,假如短少 OpenCV 在运用 cmake 生成 makefile 时会报如下过错:

咱们首要运用 wget https://github.com/opencv/opencv/archive/3.4.0.tar.gz 下载 OpenCV 3.4.0 的源码,紧接着装置编译 OpenCV 需求的相关依靠项:

装置完依靠项之后咱们将 OpenCV 的压缩包解压到当时目录下:

为了尽最大或许防止在编译时将源码文件弄乱,咱们新建一个名为 linuxidcbuild 的文件夹,在其下进行 OpenCV 的编译与装置:

在生成 makefile 的进程中或许会呈现卡在下图的状况,

这是因为 ippicv 下载不成功导致的,在以下链接手动下载体系对应的 ippicv 版别:

https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20170822/ippicv

之后运用 vim opencv-3.4.0/3rdparty/ippicv/ippicv.cmake 修正 OpenCV 的编译装备文件,将如下内容

"https://raw.githubusercontent.com/opencv/opencv_3rdparty/$/ippicv/ "

修正为咱们刚寄存 ippicv 的目录。再从头履行一次 cmake ../opencv-3.4.0 -DWITH_GTK_2_X=ON -DCMAKE_INSTALL_PREFIX=/usr/local,当呈现下图的内容时阐明成功生成了 makefile。

接下来咱们履行 make 进行对 OpenCV 的编译:

这儿编译的进程相对来说仍是比较绵长,大约需求 20 分钟左右,耗费时刻依据不同电脑装备会有所区别。当呈现下图所示内容时阐明编译完结。

之后运用 make install 进行装置,

装置成功后会呈现如图所示界面:

以上即完结对 OpenCV 的装置。装置完结后运用 vim /etc/ld.so.conf.d/opencv.conf 对其进行装备,在文件中参加/usr/local/lib 后保存退出。

运用 vim /etc/bash.bashrc 增加环境变量,在文末参加 export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig,运用 source /etc/bash.bashrc 让新的环境变量收效。这样就装备好了 OpenCV,之后运用如下指令编译该项目:

项目编译完结后会在 build 目录下生成对应可履行文件,可运用如下指令运转:

尽管看似操作非常复杂,但实际上首要便是编译 OpenCV,其它模块都可以直接在项目中完结编译。最终,就可以愉快地运用这个极速人脸检测模型了。

本文为机器之心编译,转载请联络本大众号取得授权。

------------------------------------------------

“如果发现本网站发布的资讯影响到您的版权,可以联系本站!同时欢迎来本站投稿!