Skip to content

Appendix A. Specifications#

Classification performance#

Classification performance was measured on a two datasets:

  • Cooperative dataset ( containing 20K images from various sources obtained at several banks);
  • Non cooperative dataset ( containing 20K ).

The two tables below contain true positive rates corresponding to select false positive rates.

"Classification performance @ low FPR on cooperative dataset"

FPR TPR CNN 54 TPR CNN 56 TPR CNN 57 TPR CNN 58 TPR CNN 59 TPR CNN 54m TPR CNN 56m TPR CNN 59m
10^-7^ 0.9765 0.9907 0.9906 0.9910 0.9911 0.9699 0.9652 0.9876
10^-6^ 0.9849 0.9914 0.9915 0.9916 0.9915 0.9829 0.9814 0.9904
10^-5^ 0.9892 0.9916 0.9917 0.9918 0.9919 0.9887 0.9886 0.9915
10^-4^ 0.9909 0.9917 0.9918 0.9919 0.9921 0.9910 0.9910 0.9919

"Classification performance @ low FPR on non cooperative dataset"

FPR TPR CNN 54 TPR CNN 56 TPR CNN 57 TPR CNN 58 TPR CNN 59 TPR CNN 54m TPR CNN 56m TPR CNN 59m
10^-7^ 0.9638 0.9698 0.9723 0.9767 0.9832 0.8813 0.8844 0.9377
10^-6^ 0.9773 0.9809 0.9817 0.9839 0.9880 0.9233 0.9229 0.9629
10^-5^ 0.9852 0.9871 0.9873 0.9880 0.9908 0.9538 0.9561 0.9794
10^-4^ 0.9896 0.9902 0.9905 0.9909 0.9924 0.9752 0.9757 0.9880

Runtime performance#

Server environment#

Face detection performance depends on input image parameters such as resolution and bit depth as well as the size of the detected face.

Input data characteristics:

  • Image resolution: 1200x1600px;
  • Image format: 24 BPP RGB;
  • Typical face size: ~260x260px.

Performance measurements are presented for CPU, GPU and NPU execution modes in tables below. Measured values are averages of at least 100 experiments.

All batch measurements are performed with minFaceSize = 50.

The results for minimum batch size and optimal batch size are shown in the tables below. All the intermediate and non-optimal values are omitted.

Face detections are performed using FaceDetV3 NN.

CPU performance#

Benchmarking for CPU was performed on the server with the following hardware configuration:

CPU:

  • Intel(R) Xeon(R) Silver 4210 CPU @ 2.20GHz;
  • CPU(s): 40
  • Thread(s) per core: 2
  • Core(s) per socket: 10
  • Socket(s): 2
  • NUMA node(s): 2
  • CPU with AVX2 instruction set was used

OS: CentOS Linux release 8.3.2011

RAM: 128 GB DDR4 (Clock Speed: 2133 MHz)

In experiments listed in tables below face detection and descriptor extraction algorithms used all available CPU cores, whereas matching performance is specified per-core.

Descriptor matching is only implemented on CPU.

"CPU. Detection and estimation performance"

Measurement CPU threads BatchSize Average (ms)
Detector (minFaceSize=20) 1 - 355.1
Detector (minFaceSize=20) 8 1 161.4
Detector (minFaceSize=20) 8 4 157.9
Detector (minFaceSize=20) 8 8 158.3
Detector (minFaceSize=50) 1 - 57
Detector (minFaceSize=50) 8 1 27.6
Detector (minFaceSize=50) 8 4 25.5
Detector (minFaceSize=50) 8 8 26.7
Detector (minFaceSize=90) 1 - 22.1
Detector (minFaceSize=90) 8 - 12
Redetect 8 1 5.7
Redetect 8 4 6.1
Redetect 8 8 3
HumanLandmarksDetector (resize to 640) 1 - 72.6
HumanLandmarksDetector (resize to 640) 8 - 36.2
HumanDetector (resize to 640) 1 - 39.8
HumanDetector (resize to 640) 8 1 19.2
HumanDetector (resize to 640) 8 4 16.4
HumanDetector (resize to 640) 8 8 16.8
HumanDetector redetect 8 1 1.3
HumanDetector redetect 8 4 1.3
HumanDetector redetect 8 8 1.1
HumanLandmarksDetector (resize to 320) 1 - 44.5
HumanLandmarksDetector (resize to 320) 8 - 25.1
HumanDetector (resize to 320) 1 - 6.5
HumanDetector (resize to 320) 8 1 7.2
HumanDetector (resize to 320) 8 4 4.4
HumanDetector (resize to 320) 8 8 4.4
HeadPoseByLandmarks 1 - 1.57
HeadPoseByLandmarks 8 - 1.59
EyesGaze 1 - 2.5
EyesGaze 8 - 1.7
Emotions 1 - 13.8
Emotions 8 - 5.9
Attributes 1 - 64
Attributes 8 - 27.4
Quality 1 - 1.6
Quality 8 - 0.7
HeadPoseByImage 1 - 0.48
HeadPoseByImage 8 - 0.31
HeadPose 8 1 0.3
HeadPose 8 8 0.09
Warper 1 - 1.7
Warper 8 - 2.1
Eyes (useStatusPlan=0) 1 - 0.62
Eyes (useStatusPlan=0) 8 1 0.43
Eyes (useStatusPlan=0) 8 8 0.3
Infra-Red 1 - 2
Infra-Red 8 1 1.1
Infra-Red 8 8 0.8
AGS 1 - 0.25
AGS 8 1 0.21
AGS 8 8 0.06
Overlap 1 - 4.5
Overlap 8 - 1.2
Glasses 1 - 1.7
Glasses 8 - 1
Eyes (useStatusPlan=1) 1 - 1.22
Eyes (useStatusPlan=1) 8 1 0.92
Eyes (useStatusPlan=1) 8 8 0.57
Child 1 - 20.2
Child 8 1 11.8
Child 8 8 6.6
BestShotQuality 1 - 0.35
BestShotQuality 8 1 0.24
BestShotQuality 8 8 0.07
Mouth 1 - 1.7
Mouth 8 - 0.9
LivenessFlyingFaces 1 - 9.8
LivenessFlyingFaces 8 - 5.0
LivenessRGBMEstimator 1 - 20
LivenessRGBMEstimator 8 - 13.2
MedicalMask 1 - 6.4
MedicalMask 8 1 3.4
MedicalMask 8 8 1.6
LivenessOneShotRGBEstimator 1 - 220.9
LivenessOneShotRGBEstimator 8 1 58.8
LivenessOneShotRGBEstimator 8 8 69.9
Orientation 1 - 19.6
Orientation 8 1 10.9
Orientation 8 8 8.1
CredibilityCheck 1 - 111.0
CredibilityCheck 8 1 39.6
CredibilityCheck 8 8 34.1
FacialHair 1 - 2.9
FacialHair 8 1 2.1
FacialHair 8 8 1.0

"CPU. Extractor performance"

Type Model CPU threads Average (ms)
Extractor 57 1 217
Extractor 57 8 79.9
Extractor 58 1 214.7
Extractor 58 8 80.3
Extractor 59 1 213.6
Extractor 59 8 68.3
Extractor 102 1 3.0
Extractor 102 8 3.0
Extractor 103 1 140.0
Extractor 103 8 50.0
Extractor 104 1 14.4
Extractor 104 8 6.5

The following table includes average matcher per second for descriptors received using the following CNN model versions:

  • face descriptors: 57, 58, 59
  • human body descriptors: 102, 103, 104

"CPU. Matcher performance"

Type Model CPU threads Batch Size Average (matches/sec)
Matcher 57, 58, 59 1 1000 42.2 M
Matcher 57, 58, 59 1 100 000 26.60 M
Matcher 102, 103, 104 1 1000 10.17 M
Matcher 102, 103, 104 1 100 000 5.48 M

GPU performance#

Benchmarking for GPU was performed on the following hardware configuration:

GPU: NVIDIA Tesla T4.

OS: CentOS Linux release 8.3.2011

"GPU. Detection and estimation performance"

Measurement Batch Size Average (ms)
Detector (minFaceSize=90) - 13.6
Detector (minFaceSize=50) 1 9.4
Detector (minFaceSize=50) 4 9.5
Detector (minFaceSize=50) 8 8.0
Detector (minFaceSize=20) 1 40.3
Detector (minFaceSize=20) 4 43.1
Detector (minFaceSize=20) 8 46.7
Redetect 16 3.9
Redetect 32 0.2
HumanLandmarksDetector (resize to 640) - 35.7
HumanDetector (resize to 640) 1 6.1
HumanDetector (resize to 640) 4 5.5
HumanDetector (resize to 640) 8 5.3
HumanLandmarksDetector (resize to 320) - 24.7
HumanDetector (resize to 320) 1 4.7
HumanDetector (resize to 320) 4 2.7
HumanDetector (resize to 320) 8 2.5
Human redetection - 1.3
HeadPoseByLandmarks - 1.5
EyesGaze - 1.7
Emotions - 1.9
Attributes - 3.4
Quality - 0.9
HeadPoseByImage - 1.8
HeadPose 1 1.84
HeadPose 32 1.05
Warper - 1.9
Eyes (useStatusPlan=0) 1 0.66
Eyes (useStatusPlan=0) 16 0.24
Eyes (useStatusPlan=0) 32 0.23
Infra-Red 1 1.14
Infra-Red 32 0.53
AGS 1 1.76
AGS 16 1.05
Overlap - 1.08
Glasses - 1.05
Eyes (useStatusPlan=1) 1 1.22
Eyes (useStatusPlan=1) 16 0.5
Eyes (useStatusPlan=1) 32 0.47
Child 1 2.36
Child 16 1.37
BestShotQuality 1 2.13
BestShotQuality 16 1.1
Mouth - 1.05
LivenessFlyingFaces - 4.47
LivenessRGBMEstimator - 8.96
MedicalMask 1 4.2
MedicalMask 16 1.8
LivenessOneShotRGBEstimator 1 30.5
LivenessOneShotRGBEstimator 16 20.0
Orientation 1 5.6
Orientation 16 3.71
CredibilityCheck 1 6.1
CredibilityCheck 16 4.2
FacialHair 1 1.7
FacialHair 16 0.34

"GPU. Extractor performance"

Type Model Batch Size Average (ms)
Extractor 57 1 11.06
Extractor 57 16 8.34
Extractor 58 1 11.1
Extractor 58 16 8.35
Extractor 59 1 11.1
Extractor 59 16 11.4
Extractor 102 1 3.5
Extractor 102 16 1.1
Extractor 103 1 7.0
Extractor 103 16 4.6
Extractor 104 1 3.0
Extractor 104 16 1.2

NPU Performance#

Benchmarking for NPU was performed on the server with the following hardware configuration:

NPU: Huawei Atlas 300I (inference card).

OS: CentOS Linux release 8.2.2004 (Core)

CPU: Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz x 48

RAM: 64GB

"NPU. Detection and estimation perfomance"

Measurement Batch Size Average (ms)
Detector (minFaceSize=90) - 24.2
Detector (minFaceSize=50) - 23.9
Detector (minFaceSize=20) - 24.02
Redetect 1 13.53
Redetect 8 1.8
HeadPoseByImage - 7.22
HeadPose 1 7.48
HeadPose 32 3
AGS 1 7.11
AGS 32 3.09

"NPU. Extractor perfomance"

Type Model Batch Size Average (ms)
Extractor 57 1 12.08
Extractor 57 4 11.64
### Embedded environment

Face detection performance depends on input image parameters such as resolution and bit depth as well as the size of the detected face.

Input data characteristics:

  • Image resolution: 640x480px;
  • Image format: 24 BPP RGB;
  • Typical face size: ~260x260px.

All batch measurements are performed with minFaceSize = 50.

The results for minimum batch size and optimal batch size are shown in the tables below. All the intermediate and non-optimal values are omitted.

Face detections are performed using FaceDetV3 NN.

Jetson#

 

Jetson does not use mobilenet by default.

Performance measurements are presented for Jetson. Measured values are averages of at least 100 experiments. Mobilenet is not used by default.

Jetson TX#

"Jetson TX GPU. Detection and estimation performance"

Type Batch Size Average (ms)
Detector (minFaceSize=90) - 45.197
Detector (minFaceSize=50) - 105.26
Detector (minFaceSize=20) - 613.528
Redetect 1 18.3
Redetect 32 6.08
HumanLandmarksDetector (resize to 640) - 222.4
HumanDetector (resize to 640) 1 55.2
HumanDetector (resize to 640) 4 51.8
HumanDetector (resize to 640) 8 49.8
HumanLandmarksDetector (resize to 320) - 170.7
HumanDetector (resize to 320) 1 18.04
HumanDetector (resize to 320) 4 17.45
HumanDetector (resize to 320) 8 16.16
HeadPoseByLandmarks - 3.32
EyesGaze - 6
Emotions - 18.14
Attributes - 41.7
Quality - 3.93
HeadPoseByImage - 5.35
HeadPose 1 5.58
HeadPose 32 2.88
Warper - 4.41
Eyes (useStatusPlan=0) 1 3.13
Eyes (useStatusPlan=0) 16 1.37
Eyes (useStatusPlan=0) 32 1.14
Infra-Red 1 4.75
AGS 1 4.6
AGS 16 2.79
Overlap - 4.39
Glasses - 6
Eyes (useStatusPlan=1) 1 2.65
Eyes (useStatusPlan=1) 16 2.07
Eyes (useStatusPlan=1) 32 2.06
Child 1 21.51
Child 16 17.78
BestShotQuality 1 5.78
BestShotQuality 16 2.86
Mouth - 4.98
LivenessFlyingFaces - 22.94
LivenessRGBMEstimator - 76.65
MedicalMask 1 12.8
MedicalMask 32 5.61
LivenessOneShotRGBEstimator 1 258.3
Orientation 1 34.9
CredibilityCheck 1 61.2
CredibilityCheck 8 67.4
CredibilityCheck 16 62.8
CredibilityCheck 32 61.9
FacialHair 1 6.6
FacialHair 16 9.8

"Jetson TX GPU. Extractor performance"

Type Model Batch Size Average (ms)
Extractor 57 1 132.5
Extractor 57 8 82.41
Extractor 58 1 131.6
Extractor 58 8 82.07
Extractor 59 1 119.6
Extractor 59 8 94.6
Extractor 102 1 11.8
Extractor 102 8 2.9
Extractor 103 1 54.0
Extractor 103 8 44.1
Extractor 104 1 16.4
Extractor 104 8 7.9

Jetson Xavier#

"Jetson Xavier GPU. Detection and estimation performance"

Type Batch Size Average (ms)
Detector (minFaceSize=90) - 16.72
Detector (minFaceSize=50) 1 25.83
Detector (minFaceSize=50) 4 22.02
Detector (minFaceSize=50) 8 21.43
Detector (minFaceSize=20) 1 125.17
Detector (minFaceSize=20) 4 229.58
Detector (minFaceSize=20) 8 226.82
Redetect 1 8.29
Redetect 32 0.76
HumanLandmarksDetector (resize to 640) - 36.81
HumanDetector (resize to 640) 1 16.34
HumanDetector (resize to 640) 4 13.7
HumanDetector (resize to 640) 8 13.11
HumanLandmarksDetector (resize to 320) - 39.26
HumanDetector (resize to 320) 1 9.59
HumanDetector (resize to 320) 4 5.32
HumanDetector (resize to 320) 8 4.63
HeadPoseByLandmarks - 2.63
EyesGaze - 5.99
Emotions - 5.18
Attributes - 10.85
Quality - 5.52
HeadPoseByImage - 6.69
HeadPose 1 4.36
HeadPose 32 0.9
Warper - 3.56
Eyes (useStatusPlan=0) 1 1.11
Eyes (useStatusPlan=0) 16 0.49
Eyes (useStatusPlan=0) 32 0.46
Infra-Red 1 3
Infra-Red 32 1.54
AGS 1 3.47
AGS 32 0.92
Overlap - 3.29
Glasses - 2.26
Eyes (useStatusPlan=1) 1 1.4
Eyes (useStatusPlan=1) 16 0.66
Eyes (useStatusPlan=1) 32 0.63
Child 1 5.49
Child 8 3.91
BestShotQuality 1 7.46
BestShotQuality 32 0.88
Mouth - 2.26
LivenessFlyingFaces - 8.12
LivenessRGBMEstimator - 17.78
MedicalMask 1 5.46
MedicalMask 32 2.39
LivenessOneShotRGBEstimator 1 81.8
LivenessOneShotRGBEstimator 8 47.5
Orientation 1 8.69
Orientation 32 7.2
CredibilityCheck 1 18.85
CredibilityCheck 8 21.85
CredibilityCheck 16 21.55
CredibilityCheck 32 20.15
FacialHair 1 3.2
FacialHair 16 0.9

"Jetson Xavier GPU. Extractor performance"

Type Model Batch Size Average (ms)
Extractor 57 1 36.46
Extractor 57 4 32.58
Extractor 58 1 38.36
Extractor 58 8 32.26
Extractor 59 1 35.48
Extractor 59 8 33.86
Extractor 102 1 6.7
Extractor 102 8 1.2
Extractor 103 1 17.4
Extractor 103 8 13.7
Extractor 104 1 9.6
Extractor 104 8 3.4

Jetson Xavier NX#

"Jetson Xavier NX GPU. Detection and estimation performance"

Type Batch Size Average (ms)
Detector (minFaceSize=90) - 16.1
Detector (minFaceSize=50) 1 42.9
Detector (minFaceSize=50) 4 40.56
Detector (minFaceSize=50) 8 37.8
Detector (minFaceSize=20) 1 216.56
Detector (minFaceSize=20) 4 351.61
Detector (minFaceSize=20) 8 365.04
Redetect 1 7.15
Redetect 32 1.32
HumanLandmarksDetector (resize to 640) - 59.2
HumanDetector (resize to 640) 1 24.39
HumanDetector (resize to 640) 4 23.12
HumanDetector (resize to 640) 8 22.51
HumanLandmarksDetector (resize to 320) - 38.5
HumanDetector (resize to 320) 1 9.49
HumanDetector (resize to 320) 4 7.86
HumanDetector (resize to 320) 8 7.26
HeadPoseByLandmarks - 3.55
EyesGaze - 3.3
Emotions - 7.83
Attributes - 21.35
Quality - 2.2
HeadPoseByImage - 2.73
HeadPose 1 3.03
HeadPose 32 1.25
Warper - 5.11
Eyes (useStatusPlan=0) 1 1.6
Eyes (useStatusPlan=0) 16 0.78
Eyes (useStatusPlan=0) 32 0.72
Infra-Red 1 2.85
Infra-Red 32 1.8
AGS 1 2.77
AGS 32 1.22
Overlap - 2.7
Glasses - 2.75
Eyes (useStatusPlan=1) 1 2.32
Eyes (useStatusPlan=1) 16 1.31
Eyes (useStatusPlan=1) 32 1.27
Child 1 9.49
Child 8 7.19
BestShotQuality 1 3.7
BestShotQuality 32 1.27
Mouth - 1.94
LivenessFlyingFaces - 10.9
LivenessRGBMEstimator - 29.9
MedicalMask 1 7.57
MedicalMask 32 4.85
LivenessOneShotRGBEstimator 1 120.2
LivenessOneShotRGBEstimator 16 108.1
Orientation 1 14.96
Orientation 32 12.97
CredibilityCheck 1 40.75
CredibilityCheck 8 50.64
CredibilityCheck 16 49.76
CredibilityCheck 32 46.55
FacialHair 1 3.3
FacialHair 16 1.9

"Jetson Xavier NX GPU. Extractor performance"

Type Model Batch Size Average (ms)
Extractor 57 1 78.2
Extractor 57 16 68.2
Extractor 58 1 78.1
Extractor 58 16 67.7
Extractor 59 1 77.7
Extractor 59 16 78.2
Extractor 102 1 6.6
Extractor 102 16 2.0
Extractor 103 1 34.2
Extractor 103 16 29.4
Extractor 104 1 9.3
Extractor 104 16 6.8

Descriptor size#

Table \ref{Tab.A.3.1} shows size of serialized face descriptors to estimate memory requirements.

"Descriptor size" \label{Tab.A.3.1}

Face descriptor version Data size (bytes) Metadata size (bytes) Total size
CNN 54 512 8 520
CNN 56 512 8 520
CNN 57 512 8 520
CNN 58 512 8 520
CNN 59 512 8 520

Table \ref{Tab.A.3.2} shows size of serialized human descriptors to estimate memory requirements. Human descriptors are used only for reidentification tasks/

"Human descriptor size (used only for reidentification tasks)" \label{Tab.A.3.2}

Human descriptor version Data size (bytes) Metadata size (bytes) Total size
CNN 102 2048 8 2056
CNN 103 2048 8 2056
CNN 104 2048 8 2056

Metadata includes signature and version information that may be omitted during serialization if the NoSignature flag is specified.

When estimating individual descriptor size in memory or serialization storage requirements with default options, consider using values from the "Total size" column.

When estimating memory requirements for descriptor batches, use values from the "Data size" column instead, since a descriptor batch does not duplicate metadata per descriptor and thus is more memory-efficient.

These numbers are for approximate computation only, since they do not include overhead like memory alignment for accelerated SIMD processing and the like.

Back to top