当前位置: 首页 > 科技观察

它可以仅使用CPU运行高达1000FPS,这是一个开源的C++跨平台人脸检测项目

时间:2023-03-20 14:08:28 科技观察

总是被各种依赖环境蹂躏?看看这个用C++写的跨平台人脸检测项目,电脑手机都能跑!项目地址:https://github.com/ShiqiYu/libfacedetection人脸检测可广泛应用于人机交互、安全监控、社交娱乐等领域,具有很强的实用价值,因此受到了广泛的关注和研究。在众多的人脸检测方法中,使用卷积神经网络进行检测是目前比较流行的方法之一。但是,我们在使用别人的开源项目时,往往需要安装各种依赖环境。不同的依赖环境对不同的硬件平台或操作系统的支持程度不同,增加了项目跨平台迁移的难度。本文介绍了一个使用卷积神经网络进行人脸检测的开源项目。它最大的亮点是可以在所有支持C/C++的平台上编译运行。作者将预训练好的CNN模型转为静态变量保存在C文件中,这样项目就不需要任何其他依赖(当然OpenCV还是需要的),只需要一个C++编译器就可以运行在任何平台甚至嵌入式系统上编译运行项目。特别吸引人的是,该项目是用C++编写的,支持AVX2,在i7CPU上可以疯狂跑1000FPS!下图是项目作者给出的检测效果示例。可以看出,这个项目的检测速度不仅很快,而且检测精度也非常好。于是,机器之心也开始测试起来。项目实测我们在Ubuntu18.04下测试了这个人脸检测项目的效果。首先,使用一张比较简单的合影进行测试。一共15个人,分辨率970x546。时间为133ms,置信度为99%。下图是添加boundingbox后的检测效果:我们来增加难度,用一张民族图片来测试一下效果。它还认出了机车前部几乎所有的面孔。车体上的人像没有被识别出来,可能是因为那些人??像太小太密了。编译过程项目编译需要OpenCV。如果缺少OpenCV,使用cmake生成makefile会报如下错误:我们先使用wgethttps://github.com/opencv/opencv/archive/3.4.0.tar.gz下载OpenCV3.4.0源码代码,然后安装编译OpenCV所需的相关依赖:apt-getinstallbuild-essentialapt-getinstallcmakegitlibgtk2.0-devpkg-configlibavcodec-devlibavformat-devlibswscale-devadd-apt-repository"debhttp://security.ubuntu.com/ubuntuxenial-securitymain"apt-getinstallpython-devpython-numpylibtbb2libtbb-devlibjpeg-devlibpng-devlibtiff-devlibjasper-devlibdc1394-22-dev安装好依赖后我们将OpenCV压缩包解压到当前目录:tarxvzf3.4.0.tar.gz为避免乱码编译时的源代码文件,我们新建一个名为linuxidcbuild的文件夹,并在其下编译安装OpenCV:mkdirlinuxidcbuildcdlinuxidcbuild/cmake../opencv-3.4.0-DWITH_GTK_2_X=ON-DCMAKE_INSTALL_PREFIX=/usr/local可能会卡在关注f在生成makefile的过程中。这是ippicv下载不成功导致的。在以下链接手动下载系统对应的ippicv版本:https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20170822/ippicv后,使用vimopencv-3.4.0/3rdparty/ippicv/ippicv.cmake修改OpenCV编译配置文件,将以下内容改为“https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"切换到我们刚才存放ippicv的目录,重新执行cmake../opencv-3.4.0-DWITH_GTK_2_X=ON-DCMAKE_INSTALL_PREFIX=/usr/local,当出现下图所示的内容时,表示makefile已经生成成功,接下来我们执行make编译OpenCV:这里的编译过程比较长,大约需要20分钟左右,消耗的时间会有所不同根据不同的电脑配置,当出现下图所示的内容表示编译完成,然后使用makeinstall进行安装,安装成功后会出现如图所示的界面:OpenCV的安装,安装完成后,使用vim/etc/ld.so.conf.d/opencv.conf进行配置,在文件中添加/usr/local/lib,保存退出,使用vim/etc/bash.bashrc添加环境变量,并添加exportPKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/文末lib/pkgconfig,使用source/etc/bash.bashrc使新环境变量生效。这样OpenCV就配置好了,然后使用如下命令编译工程:gitclonehttps://github.com/ShiqiYu/libfacedetectioncdlibfacedetectionmkdirbuild;cdbuild;cmake。.;make工程编译后会在build目录下生成对应的可执行文件。可以使用如下命令运行:./detect-image-demo../images/test.png虽然操作看起来很复杂,其实主要是编译OpenCV,其他模块直接编译即可在项目中。终于可以愉快的使用这个速度极快的人脸检测模型了。