findface-extraction-api
¶
Компонент findface-extraction-api
с помощью нейронных сетей обнаруживает лицо на изображении, извлекает из лица биометрический образец, а также распознает пол, возраст, эмоции и другие атрибуты лица.
Компонент взаимодействует с сервисом findface-sf-api
следующим образом:
- Получает от него фотографию с лицом или нормализованное изображение лица.
- Возвращает координаты рамки с лицом, а также вектор признаков, данные о поле, возрасте, эмоциях и других атрибутах лица (если они были запрошены
findface-sf-api
).
Полный список функций:
- детекция (обнаружение) лица на исходном изображении с возвращением координат рамки с лицом,
- получение из исходного изображения нормализованного изображения лица,
- извлечение из нормализованного изображения лица вектора признаков (биометрического образца),
- распознавание атрибутов лица (пол, возраст, эмоции, борода, очки, медицинская маска и др.).
Сервис findface-extraction-api
может работать с ускорением на CPU (устанавливается из пакета findface-extraction-api
) или GPU (устанавливается из пакета findface-extraction-api-gpu
). Как для CPU-, так и для GPU-сервиса, настройка выполняется через файл конфигурации /etc/findface-extraction-api.ini
, однако содержимое данного файла на CPU и GPU отличается.
Файл конфигурации сервиса на CPU:
detectors:
max_batch_size: 1
instances: 4
models:
cheetah:
model: facedet/cheetah.cpu.fnk
options:
min_object_size: 32
resolutions:
- 256x256
- 384x384
- 512x512
- 768x768
- 1024x1024
- 1536x1536
- 2048x2048
quality_estimator: true
normalizers:
max_batch_size: 8
instances: 4
models:
crop1x:
model: ''
crop2x:
model: facenorm/crop2x.v2_maxsize400.cpu.fnk
cropbbox:
model: ''
norm200:
model: facenorm/bee.v2.cpu.fnk
extractors:
max_batch_size: 8
instances: 4
models:
age: ''
beard: ''
carattr_color: ''
carattr_description: ''
carattr_make: ''
carattr_trash: ''
countries47: ''
emotions: ''
face: face/ifruit_320.cpu.fnk
gender: ''
glasses3: ''
headpose: ''
liveness: ''
luminance_overexposure: ''
luminance_underexposure: ''
medmask3: ''
quality: faceattr/quality.v0.cpu.fnk
sharpness: ''
validity: ''
gpu_device: 0
models_root: /usr/share/findface-data/models
cache_dir: /var/cache/findface/models_cache
listen: 127.0.0.1:18666
license_ntls_server: 127.0.0.1:3133
fetch:
enabled: true
size_limit: 10485760
max_dimension: 6000
allow_cors: false
ticker_interval: 5000
prometheus:
timing_buckets: [0.001, 0.005, 0.01, 0.02, 0.03, 0.05, 0.1, 0.2, 0.3, 0.5, 0.75,
0.9, 1, 1.1, 1.3, 1.5, 1.7, 2, 3, 5, 10, 20, 30, 50]
resolution_buckets: [10000, 20000, 40000, 80000, 100000, 200000, 400000, 800000,
1e+06, 2e+06, 3e+06, 4e+06, 5e+06, 6e+06, 8e+06, 1e+07, 1.2e+07, 1.5e+07, 1.8e+07,
2e+07, 3e+07, 5e+07, 1e+08]
faces_buckets: [0, 1, 2, 5, 10, 20, 50, 75, 100, 200, 300, 400, 500, 600, 700, 800,
900, 1000]
Файл конфигурации сервиса на GPU:
detectors:
max_batch_size: 1
instances: 1
models:
cheetah:
model: facedet/cheetah.gpu.fnk
options:
min_object_size: 32
resolutions: [256x256, 384x384, 512x512, 768x768, 1024x1024, 1536x1536, 2048x2048]
quality_estimator: true
normalizers:
max_batch_size: 8
instances: 1
models:
crop1x:
model: ""
crop2x:
model: facenorm/crop2x.v2_maxsize400.gpu.fnk
cropbbox:
model: ""
norm200:
model: facenorm/bee.v2.gpu.fnk
extractors:
max_batch_size: 8
instances: 1
models:
age: faceattr/age.v1.gpu.fnk
beard: ""
carattr_color: ""
carattr_description: ""
carattr_make: ""
carattr_trash: ""
countries47: ""
emotions: faceattr/emotions.v1.gpu.fnk
face: face/ifruit_320.gpu.fnk
gender: faceattr/gender.v2.gpu.fnk
glasses3: ""
headpose: ""
liveness: ""
luminance_overexposure: ""
luminance_underexposure: ""
medmask3: ""
quality: faceattr/quality.v0.gpu.fnk
sharpness: ""
validity: ""
gpu_device: 0
models_root: /usr/share/findface-data/models
cache_dir: /var/cache/findface/models_cache
listen: :18666
license_ntls_server: 127.0.0.1:3133
fetch:
enabled: true
size_limit: 10485760
max_dimension: 6000
allow_cors: false
ticker_interval: 5000
prometheus:
timing_buckets: [0.001, 0.005, 0.01, 0.02, 0.03, 0.05, 0.1, 0.2, 0.3, 0.5, 0.75,
0.9, 1, 1.1, 1.3, 1.5, 1.7, 2, 3, 5, 10, 20, 30, 50]
resolution_buckets: [10000, 20000, 40000, 80000, 100000, 200000, 400000, 800000,
1e+06, 2e+06, 3e+06, 4e+06, 5e+06, 6e+06, 8e+06, 1e+07, 1.2e+07, 1.5e+07, 1.8e+07,
2e+07, 3e+07, 5e+07, 1e+08]
faces_buckets: [0, 1, 2, 5, 10, 20, 50, 75, 100, 200, 300, 400, 500, 600, 700, 800,
900, 1000]
Пользовательская настройка findface-extraction-api
(как CPU, так и GPU) выполняется с использованием следующих параметров:
Параметр | Описание |
---|---|
detectors ->
quality_estimator |
Включает/отключает оценку качества лица. В этом случае компонент findface-extraction-api будет возвращать показатель качества лица в параметре detection_score . Показатель качества можно анализировать. Прямые изображения лиц анфас считаются наиболее качественными. Для них возвращаются значения вблизи 0, как правило, отрицательные (такие как -0.00067401276, например). Перевернутые лица и лица, повернутые под большими углами, оцениваются отрицательными значениями от -5 и меньше. |
cheetah ->
min_object_size |
Минимальный размер лица, которое будет гарантированно найдено. Определяется размером рамки с лицом (bbox). Чем больше значение, тем менее ресурсоемок процесс обнаружения лица. |
license_ntls_server |
IP-адрес и порт сервера лицензирования findface-ntls . |
gpu_device |
(Только для GPU) Номер GPU-устройства, используемого findface-extraction-api-gpu . |
В зависимости от нужд вашего бизнеса, вам также может потребоваться включить модели распознавания атрибутов лица, таких как пол, возраст, эмоции, очки и/или борода. Удостоверьтесь, что для каждой модели вы указали правильный тип ускорения CPU или GPU: он должен совпадать с типом ускорения findface-extraction-api
. Обратите внимание, что findface-extraction-api
на CPU может работать только с CPU-моделями, в то время как findface-extraction-api
на GPU поддерживает как GPU-, так и CPU-модели.
models:
age: faceattr/age.v1.cpu.fnk
emotions: faceattr/emotions.v1.cpu.fnk
face: face/ifruit_320.cpu.fnk
gender: faceattr/gender.v2.cpu.fnk
beard: faceattr/beard.v0.cpu.fnk
glasses3: faceattr/glasses3.v0.cpu.fnk
medmask3: faceattr/medmask3.v0.cpu.fnk
Доступны следующие модели:
Атрибут лица | Ускорение | Параметр в файле конфигурации |
---|---|---|
биометрия лица | CPU | face: face/ifruit_320.cpu.fnk face: face/ifruit_160.cpu.fnk |
GPU | face: face/ifruit_320.gpu.fnk face: face/ifruit_160.gpu.fnk |
|
возраст | CPU | age: faceattr/age.v1.cpu.fnk |
GPU | age: faceattr/age.v1.gpu.fnk |
|
пол | CPU | gender: faceattr/gender.v2.cpu.fnk |
GPU | gender: faceattr/gender.v2.gpu.fnk |
|
эмоции | CPU | emotions: faceattr/emotions.v1.cpu.fnk |
GPU | emotions: faceattr/emotions.v1.gpu.fnk |
|
очки | CPU | glasses3: faceattr/glasses3.v0.cpu.fnk |
GPU | glasses3: faceattr/glasses3.v0.gpu.fnk |
|
борода | CPU | beard: faceattr/beard.v0.cpu.fnk |
GPU | beard: faceattr/beard.v0.gpu.fnk |
|
медицинская маска | CPU | medmask3: faceattr/medmask3.v0.cpu.fnk |
GPU | medmask3: faceattr/medmask3.v0.gpu.fnk |
Совет
Для того чтобы отключить модель распознавания, передайте в соответствующий параметр пустое значение. Не удаляйте сам параметр, поскольку в этом случае будет выполняться поиск модели по умолчанию.
models:
gender: ""
age: ""
emotions: ""