我们的人脸检测项目libfacedetection是2015年创建的开源项目,算法模型为YuNet,已经持续维护8年至今,在GitHub上已经获得11.7K星。欢迎大家三连:使用、反馈和建议
2022-2023年我们对训练部分进行了大幅改进。我们更加大胆地对算法进行优化迭代,放弃了第二版的Anchor-based机制而采用Anchor-free机制,并对损失函数、正负样本标签匹配等部分进行改进,得到了第三版YuNet。第三版YuNet有两个版本:追求高速度的YuNet-s和追求高精度的YuNet-n。
YuNet-s:该版本将参数量降低到54K,降幅约40%。精度略有下降,达到了0.887/0.871/0.768(比上一版85K参数版本好)。在C++库上,我们采用YuNet-s重新编写了新模型的执行代码,推理速度提升约20%。
YuNet-n:将参数量降低到76K,在WIDER Face验证集上,Easy/Medium/Hard三个难度分别达到了0.892/0.883/0.811,达到了人脸检测领域内的高水平。
过去四年YuNet提升情况(AP数值越大表示准确率越高):
参数量 | APeasy | APmedium | APhard | |
2020年3月 | 130K | 0.849 | 0.816 | 0.601 |
2021年5月 | 85K | 0.834 | 0.824 | 0.708 |
2021年9月 | 85K | 0.856 | 0.842 | 0.727 |
2023 YuNet-n | 76K | 0.892 | 0.883 | 0.811 |
2023 YuNet-s | 54K | 0.887 | 0.871 | 0.768 |
我们也将YuNet与近5年的优秀轻量级人脸检测算法进行了对比,参数量和检测精度对比结果如下图所示(纵轴为精度,横轴为大小,越靠近左上角越好),可以看到YuNet在保持模型规模极小的同时,还拥有高水平的检测精度。
我们也在不同指令集平台上对YuNet进行推理速度测试,如下表。在小图像上可以达到3000FPS。
使用方法
如果你想在你的程序中使用YuNet进行人脸检测,有以下几种简单的方式:
通过OpenCV库使用。目前OpenCV库已经集成了最新版的YuNet作为人脸检测模块,只要你的环境中安装了OpenCV库,就可以直接调用人脸检测的API。
通过pip安装yuface包。我们团队使用pybind11对C++的人脸检测库进行了封装,并且将其上传到pypi,现在你只需要执行pip install yuface,就可以直接在Python中使用YuNet进行人脸检测。
直接从我们的开源库libfacedetection中克隆代码,然后根据你的需求修改相关的函数调用。我们已经在开源库中提供了预训练好的模型权重文件。
使用onnx推理引擎进行推理。我们已经将YuNet导出为onnx格式,并且使用Numpy库对输入和输出进行了高效的处理。
相关论文
如果您希望深入了解算法设计,可以阅读本团队的相关论文。
吴伟.面向边缘设备的高精度毫秒级人脸检测技术的研究[D].南方科技大学(硕士学位论文), 2023.
吴伟同学的硕士学位论文,全面且详细地介绍了人脸检测算法的设计和所有细节。Wei Wu, Hanyang Peng and Shiqi Yu, YuNet: A Tiny Millisecond-level Face Detector. Machine Intelligence Research. (2023). https://doi.org/10.1007/s11633-023-1423-y
介绍YuNet设计的期刊论文,第一作者吴伟。Yuantao Feng, Shiqi Yu, Hanyang Peng, Yan-ran. Li and Jianguo Zhang, Detect Faces Efficiently: A Survey and Evaluations, IEEE Transactions on Biometrics, Behavior, and Identity Science, vol. 4, no. 1, pp. 1-18, Jan. 2022, doi: 10.1109/TBIOM.2021.3120412.
人脸检测的综述论文,第一作者冯远滔。Hanyang Peng and Shiqi Yu, A Systematic IoU-Related Method: Beyond Simplified Regression for Better Localization, IEEE Transactions on Image Processing, vol. 30, pp. 5032-5044, 2021, doi: 10.1109/TIP.2021.3077144.
人脸检测算法训练中的关键损失函数EIoU,第一作者彭涵阳。EIoU已被MMDetection采纳。