目录
1.动态人脸识别原理流程图
2.精度指标
2.1 人脸检测
人脸检测模块采用的是SCRFD系列模型中的scrfd_500m_kps模型,该模型是2021年5月提出的,目前已被收录进Insightface,其鲁棒性和实时性已得到广泛验证,可以灵活应用于多个人脸检测的场景中,其相关指标数据如下。
ResNet系列模型的对比结果
Method | Backbone | Easy | Medium | Hard | #Params(M) | #Flops(G) | Infer(ms) |
---|---|---|---|---|---|---|---|
DSFD (CVPR19) | ResNet152 | 94.29 | 91.47 | 71.39 | 120.06 | 259.55 | 55.6 |
RetinaFace (CVPR20) | ResNet50 | 94.92 | 91.90 | 64.17 | 29.50 | 37.59 | 21.7 |
HAMBox (CVPR20) | ResNet50 | 95.27 | 93.76 | 76.75 | 30.24 | 43.28 | 25.9 |
TinaFace (Arxiv20) | ResNet50 | 95.61 | 94.25 | 81.43 | 37.98 | 172.95 | 38.9 |
ResNet-34GF | ResNet50 | 95.64 | 94.22 | 84.02 | 24.81 | 34.16 | 11.8 |
SCRFD-34GF | Bottleneck Res | 96.06 | 94.92 | 85.29 | 9.80 | 34.13 | 11.7 |
ResNet-10GF | ResNet34x0.5 | 94.69 | 92.90 | 80.42 | 6.85 | 10.18 | 6.3 |
SCRFD-10GF | Basic Res | 95.16 | 93.87 | 83.05 | 3.86 | 9.98 | 4.9 |
ResNet-2.5GF | ResNet34x0.25 | 93.21 | 91.11 | 74.47 | 1.62 | 2.57 | 5.4 |
SCRFD-2.5GF | Basic Res | 93.78 | 92.16 | 77.87 | 0.67 | 2.53 | 4.2 |
Mobile系列模型的比对结果
Method | Backbone | Easy | Medium | Hard | #Params(M) | #Flops(G) | Infer(ms) |
---|---|---|---|---|---|---|---|
RetinaFace (CVPR20) | MobileNet0.25 | 87.78 | 81.16 | 47.32 | 0.44 | 0.802 | 7.9 |
FaceBoxes (IJCB17) | - | 76.17 | 57.17 | 24.18 | 1.01 | 0.275 | 2.5 |
MobileNet-0.5GF | MobileNetx0.25 | 90.38 | 87.05 | 66.68 | 0.37 | 0.507 | 3.7 |
SCRFD-0.5GF | Depth-wise Conv | 90.57 | 88.12 | 68.51 | 0.57 | 0.508 | 3.6 |
SCRFD-0.5GF在X64 CPU上的性能,其中精度和推理时间是AMD Ryzen 9 3950X上测评得到的。
Test-Input-Size | CPU Single-Thread | Easy | Medium | Hard |
---|---|---|---|---|
Original-Size(scale1.0) | - | 90.91 | 89.49 | 82.03 |
640x480 | 28.3ms | 90.57 | 88.12 | 68.51 |
320x240 | 11.4ms | - | - | - |
通过以上数据,可以得出SCRFD模型在人脸检测方面是有着不错的表现。根据我们需要应用的场景为机器人平台,对实时性有着较高的要求,通过实际测试得出,SCRFD_0.5g_kps模型对于尺度大于32x32的人脸均能较好的检测出,且在NVIDIA NX平台上测试,对于640x480pixel的输入图像,基于NCNN GPU框架下,其推理时耗为28ms左右,且能提供人脸的5个KPS信息,精度和实时性都较好的满足了我们应用场景的需求,且能满足后续人脸识别等工作的展开,故选用该模型进行人脸检测。
2.2人脸识别
考虑机器人的硬件平台为边缘端,故能支持的算力有限,因此人脸识别模型主要考虑轻量级的网络。对近两年相关的算法、数据进行调研后,人脸识别模型采用MobileFaceNet为主干网络,在此基础上做一些调整,其模型参数量只有0.99M,MAdds乘加数计算量为221M,相对于常见的人脸识别模型沉重的计算量,该模型轻量级,适用于机器人边缘端的应用,其相关测试结果如下。
(1)常见的轻量级人脸识别模型在CASIA-Webface数据集进行训练后,在LFW、AgeDB-30数据集上测试得到的结果如下表(其测试的硬件平台为高通骁龙4核CPU,在NCNN框架上进行推理)
LFW | AgeDB-30 | Params | Speed | |
---|---|---|---|---|
LFW | AgeDB-30 | Params | Speed | |
MobileNetV1 | 98.63% | 88.95% | 3.2M | 60ms |
ShuffleNet | 98.70% | 89.27% | 0.83M | 27ms |
MobileNetV2 | 98.58% | 88.81% | 2.1M | 49ms |
MobileNetV2-GDConv | 98.88% | 90.67% | 2.1M | 50ms |
Our | 99.28% | 93.05% | 0.99M | 24ms |
(2)在清洗后的数据集MS-Celeb-1M(其中有85k受试者)上进行训练后,在LFW数据集上其测试结果如下表
Model Size | LFW Acc | |
---|---|---|
DeepFR | 0.5GB | 98.95% |
Center Face | 105MB | 99.28% |
ArcFace(LResNet100E-IR) | 250MB | 99.83% |
FaceNet | 30MB | 99.63% |
ShiftFaceNet | 3.1MB | 96.00% |
Our | 4.0MB | 99.55% |
通过以上表格对比数据可以看到我们使用的模型在不同数据集上的表现良好,精度和计算量达到了一个较好的平衡,适用于机器人端的应用。
考虑机器人目前的应用场景,应用时采用了格林深瞳提供的glint360数据集(主要为亚洲人脸)进行训练,并使用业务场景中采集的数据集进行finetune。在数据集lfw、cfp_fp、agedb30数据集(主要为欧美人脸)上测试结果如下:
agedb30 | cfp_fp | lfw | |
---|---|---|---|
Our | 98.38% | 97.27% | 97.17% |
得到的模型大小为8M,在NVIDIA NX上测试,对于112x112大小的输入图像,单次提取人脸特征时耗为8ms左右,对于>=60x60pixel大小的较正面人脸,均能较好的提取人脸特征,满足机器人场景应用需求。
3.测试视频
在NVIDIA NX设备上,使用deepstream框架,运行结果如下。
VIDEO_20230302_152420862
单路视频,帧率大概为31FPS。
VIDEO_20230302_152420895
四路视频同时运行,帧率为86FPS。