1.SeetaFace教程(一) 在 VS 中的源码编译安装和环境配置
2.CPU下实时,最快人脸检测速度近2000FPS,源码这位硬核老师将训练代码开源了
SeetaFace教程(一) 在 VS 中的源码编译安装和环境配置
SeetaFace开源库整合了FaceDetection、FaceAlignment、源码FaceIdentification三大模块。源码其中,源码nlppython源码FaceDetection在图像中检测人脸区域,源码通过方形框表示。源码FaceAlignment在FaceDetection定位出人脸框后,源码进一步精确定位出两眼中心、源码鼻尖和两嘴角五个关键点。源码最后,源码FaceIdentification利用FaceAlignment的源码五个关键点信息,提取单个人脸特征。源码鸿蒙2.0源码编译使用SeetaFace库,源码首当其冲的步骤是库的编译。接下来,我们将分步骤介绍SeetaFace在Visual Studio中各个模块的编译过程以及环境配置。
一、编译FaceDetection部分
FaceDetection位于SeetaFaceEngine\FaceDetection目录下。遵循官方指南进行安装。在处理kStdDevThresh初始化方法存在问题时,仅需在类构造函数中初始化:LABBoostedClassifier() : use_std_dev_(true), kStdDevThresh(.0f)。编译后产出FaceDetection.lib与FaceDetection.dll。
二、编译FaceAlignment部分
FaceAlignment同样位于SeetaFaceEngine\FaceAlignment目录内,安装流程与FaceDetection相似。小红书关注源码对于函数模板重载无法确定的问题,在引用时将两个参数强制转换为double类型;若未定义isnan函数,则自行定义如下:
#ifndef isnan
#define isnan(x) ((x)!=(x))
#endif
编译后产出FaceAlignment.dll与FaceAlignment.lib。
三、编译FaceIdentification部分
此模块无需创建工程,直接打开SeetaFaceEngine\FaceIdentification\examples目录下的VS解决方案文件examples.sln。项目内含Identification和Tester两个工程,先编译Identification工程即可得到Identification.dll与Identification.lib。
在编译时,若工具集设置为不正确(如VS使用v),可将其更改为对应的版本。在搭建独立项目环境后,新建一个空项目,房产单页源码并将FaceAlignment.dll、FaceAlignment.lib、FaceDetection.lib、FaceDetection.dll、Identification.dll、Identification.lib六个文件复制到项目根目录下。
设置包含目录:D:\SeetaFaceEngine\FaceIdentification\include、D:\SeetaFaceEngine\FaceAlignment\include、D:\SeetaFaceEngine\FaceDetection\include。在连接器的输入中添加Identification.lib、FaceAlignment.lib、FaceDetection.lib的附加依赖项。
至此,iapp抠图源码环境搭建完成。在项目内新建cpp文件,复制SeetaFaceEngine\FaceIdentification\src\test\test_face_recognizer.cpp中的内容,通常能实现成功编译。
然而,在运行时可能遇到“../../model/seeta_fr_v1.0.bin not exist!”错误。此错误源于SeetaFace需要提前训练好的model文件,还应包括对应的数据文件。model文件位于SeetaFaceEngine\FaceIdentification\model目录下,数据文件在SeetaFaceEngine\FaceIdentification\data目录内。将程序中model和data的定义位置修改为本地电脑对应的路径即可解决。运行程序后,问题得以解决。
CPU下实时,最快人脸检测速度近FPS,这位硬核老师将训练代码开源了
于仕琪老师来自南方科技大学,他最近将训练代码开源,面向公众分享其在CPU环境下实现的人脸检测技术。这一成果在小分辨率下达到了惊人的.6FPS,支持5个人脸关键点检测,并且无需任何依赖库,直接以纯C++代码形式呈现,展现了高效的性能。
于老师最初在年开源了名为libfacedetection的C++版本人脸检测工程。此项目无需库依赖,在VGA分辨率下,i7 CPU可实现帧/秒,而在x输入分辨率时,速度高达帧/秒。实测在树莓派3上,小分辨率下也达到FPS。
经过三次升级,v2版本模型参数量倍增,通过8位量化加速,速度未受影响;v3版本增加了五个人脸关键点检测。最新一步,于老师将训练代码开源,供公众学习与应用。
于老师的模型是SSD类型目标检测模型,包含四个检测分支,Backbone网络共层。模型轻量级,与之前开源的人脸口罩检测模型有相似之处。模型使用PriorBox层生成锚点,适用于任意大小输入,这一特性将在后续研究中被借鉴。
模型结构如下:在特征图上接入分类定位层,四个尺度的特征图分别有3、2、2、3个锚点。所有锚点长宽比为1:1。整体网络结构精简,参数量为万,较轻量级。
该模型在四个尺度的特征图上进行检测,每个锚点额外增加个节点,用于五个关键点的偏移量预测,类似于RetinaNet的策略。在推理阶段,Batch Norm层参数被融合进卷积层,实现网络加速。关于这一技术的详细解析,将在后续文章中深入探讨。
于老师的开源项目不仅提供了高效的人脸检测技术,也为学术界和实践应用带来了宝贵资源,有望推动相关领域的发展。