System Requirements¶
To calculate the FindFace Security host(s) characteristics, use the requirements provided in this chapter.
Tip
Be sure to learn about the FindFace Security architecture first.
In this chapter:
Basic Configuration¶
Important
If the resolution of a camera(s) in use is more than 1280x720px, it is strongly recommended to use the GPU-accelerated package findface-video-worker-gpu
.
Important
The face liveness detection can be enabled only on the GPU-accelerated video face detector findface-video-worker-gpu
.
Minimum | Recommended | |
---|---|---|
CPU | Intel Core i5 CPU with 4 physical cores 2.8 GHz | Intel Xeon E5v3 with 6 physical cores, or higher or similar CPU |
The own needs of FindFace Security require 2 cores HT > 2.5 GHz. The characteristics also depend on the number of cameras in use. A single camera 720p@25FPS requires 2 cores >2.5 GHz. AVX support | ||
GPU (optional) | Nvidia Geforce® GTX 980 4GB | Nvidia Geforce® GTX 1080+ with 8+Gb RAM |
Supported series: GeForce (Maxwell, Pascal, Turing, and above), Tesla (Maxwell, Pascal, Volta v100, Turing, and above) | ||
RAM | 10 Gb | 16+ Gb |
The own needs of FindFace Security require 8 Gb. The RAM consumption also depends on the number of cameras in use. A single camera 720p@25FPS requires 2 GB RAM | ||
HDD | 16 Gb | 16+ Gb |
The own needs of the operating system and FindFace Security require 15 GB. The total volume is subject to the required depth of the event archive in the database and in the log, at the rate of 1.5 Mb per 1 event | ||
Operating system | Ubuntu 16.04 x64 only |
Tip
For more accurate hardware selection, consult the FindFace Security resource consumption and performance benchmark results.
Benchmark Results¶
Here you can see the FindFace Security resource consumption and performance benchmark results. Use these data to select your hardware configuration.
Note
RAM usage and performance may slightly vary from test to test.
Warning
Strictly not recommended to use face/elderberry_160
for work.
Testing Setup¶
Package versions:
- findface-extraction-api-cpu 2.6.999.1910+261.gebb8df6
- findface-extraction-api-gpu
- findface-video-worker 2.6.999.1910+261.gebb8df6
- findface-video-worker-gpu
- findface-tarantool-server 2.6.999.1910+261.gebb8df6
Hardware:
- Processor: Intel Core i5-8400 @ 3.60GHz (6 Cores)
- Motherboard: ASUS PRIME H370M-PLUS
- Memory: 2 x 8192 MB DDR4-2400MHz
- Graphics: Gigabyte NVIDIA GeForce GTX 1060 6GB
Software:
- OS: Ubuntu 16.04, Kernel: 4.15.0-29-generic (x86_64)
- Screen Resolution: 1920x1200
RAM consumption is calculated by:
- CPU: htop;
- GPU: nvidia-smi
CPU performance:
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Doing CPU performance benchmark
Threads started!
Done.
Maximum prime number checked in CPU test: 10000
Test execution summary:
total time: 9.1128s
total number of events: 10000
total time taken by event execution: 9.1112
per-request statistics:
min: 0.82ms
avg: 0.91ms
max: 1.47ms
approx. 95 percentile: 1.02ms
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 9.1112/0.00
GPU performance:
Unigine Heaven 4.0:
pts/unigine-heaven-1.6.4 [Resolution: 1920 x 1080 - Mode: Windowed - Renderer: OpenGL]
Test 1 of 2
Estimated Trial Run Count: 3
Estimated Test Run-Time: 15 Minutes
Estimated Time To Completion: 29 Minutes
Started Run 1 @ 17:54:37
Started Run 2 @ 17:59:15
Started Run 3 @ 18:03:52 [Std. Dev: 0.29%]
Test Results:
86.6473
86.1475
86.4553
Average: 86.42 Frames Per Second
Unigine Heaven 4.0:
pts/unigine-heaven-1.6.4 [Resolution: 1920 x 1080 - Mode: Fullscreen - Renderer: OpenGL]
Test 2 of 2
Estimated Trial Run Count: 3
Estimated Time To Completion: 15 Minutes
Started Run 1 @ 18:08:33
Started Run 2 @ 18:13:09
Started Run 3 @ 18:17:45 [Std. Dev: 1.37%]
Test Results:
87.7017
89.5186
90.023
Average: 89.08 Frames Per Second
Resource Consumption: findface-extraction-api
and findface-extraction-api-gpu
¶
RAM usage: findface-extraction-api
Model | # instances | RAM, MB | # instances | RAM, MB | # instances | RAM, MB |
---|---|---|---|---|---|---|
face/elderberry_576.cpu | 1 | 3730 | 2 | 7450 | 3 | 11000 |
face/elderberry_160.cpu | 1590 | 2800 | 4050 | |||
face/elderberry_576.cpu + features (faceattr/age.v1.cpu, faceattr/beard.v0.cpu, faceattr/emotions.v1.cpu, faceattr/gender.v2.cpu, faceattr/glasses3.v0.cpu) | 5568 | 10800 | ||||
face/elderberry_160.cpu + features (faceattr/age.v1.cpu, faceattr/beard.v0.cpu, faceattr/emotions.v1.cpu, faceattr/gender.v2.cpu, faceattr/glasses3.v0.cpu) | 3473 | 6250 | 9400 | |||
Features only (faceattr/age.v1.cpu, faceattr/beard.v0.cpu, faceattr/emotions.v1.cpu, faceattr/gender.v2.cpu, faceattr/glasses3.v0.cpu) | 2270 | 3900 | 5800 |
RAM usage: findface-extraction-api-gpu
Note
findface-extraction-api-gpu
allows only 1 model instance.
Model | RAM, MB |
---|---|
face/elderberry_576.gpu | ~2200 (up to 4.5 Gb on initialization) |
face/elderberry_160.gpu | ~850 (up to 1.8 Gb on initialization) |
face/elderberry_576.gpu + features (faceattr/age.v1.gpu, faceattr/beard.v0.gpu, faceattr/emotions.v1.gpu, faceattr/gender.v2.gpu, faceattr/glasses3.v0.gpu) | ~3100 (up to 6.3 Gb on initialization) |
face/elderberry_160.gpu + features (faceattr/age.v1.gpu, faceattr/beard.v0.gpu, faceattr/emotions.v1.gpu, faceattr/gender.v2.gpu, faceattr/glasses3.v0.gpu) | ~1871 (up to 4 Gb on initialization) |
Features only (faceattr/age.v1.gpu, faceattr/beard.v0.gpu, faceattr/emotions.v1.gpu, faceattr/gender.v2.gpu, faceattr/glasses3.v0.gpu) | 1200 |
Performance: findface-extraction-api
and findface-extraction-api-gpu
¶
Speed: findface-extraction-api
Model | Time, ms (i5-8400) |
---|---|
face/elderberry_576.cpu | 620 |
face/elderberry_160.cpu | 350 |
face/elderberry_576.cpu + features (faceattr/age.v1.cpu, faceattr/beard.v0.cpu, faceattr/emotions.v1.cpu, faceattr/gender.v2.cpu, faceattr/glasses3.v0.cpu) | 655 |
face/elderberry_160.cpu + features (faceattr/age.v1.cpu, faceattr/beard.v0.cpu, faceattr/emotions.v1.cpu, faceattr/gender.v2.cpu, faceattr/glasses3.v0.cpu) | 380 |
Features only (faceattr/age.v1.cpu, faceattr/beard.v0.cpu, faceattr/emotions.v1.cpu, faceattr/gender.v2.cpu, faceattr/glasses3.v0.cpu) | 300 |
Speed: findface-extraction-api-gpu
Model | Time, ms (1060TI) |
---|---|
face/elderberry_576.gpu | 240 |
face/elderberry_160.gpu | 225 |
face/elderberry_576.gpu + features (faceattr/age.v1.gpu, faceattr/beard.v0.gpu, faceattr/emotions.v1.gpu, faceattr/gender.v2.gpu, faceattr/glasses3.v0.gpu) | 260 |
face/elderberry_160.gpu + features (faceattr/age.v1.gpu, faceattr/beard.v0.gpu, faceattr/emotions.v1.gpu, faceattr/gender.v2.gpu, faceattr/glasses3.v0.gpu) | 235 |
Performance: findface-video-worker-cpu
and findface-video-worker-gpu
¶
CPU/RAM consumption and speed: findface-video-worker-cpu
Stream | RAM, MB | CPU utilization,% (i5-8400 6 cores) | Processing speed, FPS* (i5-8400) |
---|---|---|---|
1x 720p25FPS | 370 | 230 | 62 |
2x 720p25FPS | 755 | 500 | 56 |
3x 720p25FPS | 1040 | 580 | 45 |
4x 720p25FPS | 1437 | 600 | 36 |
5x 720p25FPS | 1900 | 600 | 24 |
8x 720p25FPS | 2650 | 600 | 18 |
1x 1080p25FPS | 502 | 250 | 41 |
2x 1080p25FPS | 1023 | 508 | 37 |
3x 1080p25FPS | 1529 | 590 | 30 |
4x 1080p25FPS | 2031 | 594 | 23 |
1x 720p25FPS + 1x 1080p25FPS | 890 | 453 | 38 |
2x 720p25FPS + 2x 1080p25FPS | 1750 | 590 | 21 |
Important
If video processing speed is less than the number of FPS in video, it means that the system is running low on resources and the lack of resources causes the video face detector to drop frames. Avoid this situation as it can lead to missing out on faces, instability and potential failures.
To check your resource consumption, execute:
sudo journalctl -f -a -u findface-video-worker-cpu | grep dropped
The following lines indicate that the system has less resources than necessary:
findface-video-worker[28882]: [2] 2 frames dropped!
findface-video-worker[28882]: [1] 6 frames dropped!
In this case, consider changing component settings or hardware configuration.
GPU RAM consumption and speed: findface-video-worker-gpu
Stream | GPU RAM, MB | Processing speed, FPS* (1060TI) |
---|---|---|
Without streams | 600 | |
1x 720p25FPS | 656 | 254 |
2x 720p25FPS | 738 | 126 |
4x 720p25FPS | 858 | 63 |
8x 720p25FPS | 1117 | 30 |
1x 1080p25FPS | 735 | 202 |
2x 1080p25FPS | 935 | 96 |
4x 1080p25FPS | 1185 | 48 |
8x 1080p25FPS | 2650 | 48 |
1x 720p25FPS + 1x 1080p25FPS | 803 | 453 |
2x 720p25FPS + 2x 1080p25FPS | 1100 | 54 |
4x 720p25FPS + 4x 1080p25FPS | 1500 | 26 |
8x 720p25FPS + 8x 1080p25FPS | 2300 | 11 |
Important
If video processing speed is less than the number of FPS in video, it means that the system is running low on resources and the lack of resources causes the video card to accumulate frames in its memory. Avoid this situation as it can lead to instability and potential failures.
To view the current processing speed, execute the following command on the findface-video-manager
host console:
curl -s http://127.0.0.1:18810/jobs | jq -r '.[]|("id="+(.id|tostring)+" url="+.stream_url+" FPS="+(.statistic.processing_fps|tostring))'
In the response, you will find each video stream processing speed. For example, enough amount of resources when processing 7 video streams with characteristics h264 (High) ([27][0][0][0] / 0x001B), yuvj420p(pc, bt709), 1920x1080, 25 fps, 25 tbr, 90k tbn, 180k tbc will result in the following response:
id=10 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=27.189745
id=5 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=27.189854
id=6 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=27.589714
id=3 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=27.189857
id=4 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=27.189857
id=7 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=27.389784
id=9 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=27.189857
Lack of resources when processing 8 video streams with the same characteristics will give FPS (processing speed) less than the video’s 25 fps:
id=8 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=23.772333
id=10 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=23.772415
id=5 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=23.772339
id=6 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=23.372803
id=3 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=23.772339
id=4 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=23.772339
id=7 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=20.775822
id=9 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=22.573729
Even smaller values will be registered when processing 10 video streams with the same characteristics:
id=7 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=20.380642
id=9 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=20.380642
id=2 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=20.380646
id=8 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=20.380642
id=10 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=9.984919e-05
id=5 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=20.380642
id=6 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=20.380642
id=1 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=20.380651
id=3 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=20.180836
id=4 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=19.581406
Important
If findface-video-worker-gpu
processes video streams of equal FPS, the number of processed streams doesn’t severely affect the GPU memory consumption, as all the streams are processed by the same worker. On the other hand, if findface-video-worker-gpu
processes video streams of different FPS, it severely increases the memory consumption as different streams have to be processed by different workers.
Examples of Hardware Configuration¶
Important
The exemplary hardware configurations in this section are only for reference. Do not use these data to select your production instance configuration. To select the optimal configuration, ask advice from our experts by support@ntechlab.com.
Resource consumption may vary depending on the following factors:
- The number of HTTP requests per second, sent to
findface-extraction-api
(depends on the number of faces in a camera field of view, the number of user search requests, etc.). - Video quality (video interference, colourful video background take up more resources).
- Motion intensity in video.
The following examples are given for standard component configuration.
Important
Changes in component settings may result in significant changes in resource consumption.
CPU-based Server¶
Cameras | CPU | RAM, GB | Extraction |
---|---|---|---|
1x720p25FPS | Intel Core i5 - 6400 (4 cores 2700MHz) | 8 | elderberry_160 + features* model_instances = 1 or elderberry_576 model_instances = 1 |
2x720p25FPS | min: Intel Core i7 - 6700 (4 core 3400MHz); recommended: Intel Core i7 - 6850K (6 cores 3600MHz) | 12 | elderberry_160 + features* model_instances = 2 or elderberry_576 + features* model_instances = 2 |
4x720p25FPS | min: Intel Core i7 - 8700K (6 cores 3700MHz); recommended: Intel Core i9 - 9900K (8 cores 3600MHz) | 16 | elderberry_576 + features* model_instances = 2 or elderberry_576 model_instances = 3 |
1x1080p25FPS | min: Intel Core i7 - 6700 (4 cores 3400MHz); recommended: Intel Core i7 - 6850K (6 core 3600MHz) | 32 | elderberry_576 + features* model_instances = 1 or elderberry_576 model_instances = 2 |
GPU-based Server¶
Cameras | CPU | RAM, GB | GPU | Installation | Extraction | Video |
---|---|---|---|---|---|---|
1x720p25FPS | Intel Core i5 - 6400 (4 cores 2700MHz) | 8 | nVidia GeForce GTX1060 6Gb | extraction-api on CPU video-worker on GPU | elderberry_160 + features* model_instances = 1 or elderberry_576.cpu model_instances = 1 | basic |
extraction-api on GPU video-worker on CPU | basic | basic | ||||
2x720p25FPS | Intel Core i5 - 6400 (4 cores 2700MHz) | 12 | nVidia GeForce GTX1060 6Gb | extraction-api on CPU video-worker on GPU | elderberry_160 + features* model_instances = 2 or elderberry_576.cpu + features model_instances = 1 or elderberry_576.cpu model_instances = 2 | basic |
extraction-api on GPU video-worker on CPU | basic | basic | ||||
4x720p25FPS | Intel Core i5 - 8400 (4 cores 2800MHz) | 16 | nVidia GeForce GTX1060 6Gb | extraction-api on CPU video-worker on GPU | elderberry_576.cpu + features* model_instances = 2 | basic |
8x720p25FPS | Intel Core i5 - 8400 (4 cores 2800MHz) Intel Core i7 - 6700 (4 cores 3400MHz) | 16 | nVidia GeForce GTX1060 TI 6Gb | extraction-api on CPU video-worker on GPU | elderberry_576.cpu + features* model_instances = 2 | basic |
16x720p25FPS | Intel Core i7 - 6700 (4 cores 3400MHz) Intel Core i7 - 8700K (6 cores 3700MHz) Intel Core i9 - 9900K (8 cores 3600MHz) | 32 | 2x nVidia GeForce GTX1060 TI 6Gb | extraction-api on CPU video-worker on GPU | elderberry_576.cpu + features* model_instances = 4 or | basic |