Распознавание силуэтов и их атрибутов
FindFace Multi позволяет распознавать отдельные человеческие силуэты и атрибуты силуэтов.
Атрибуты силуэтов следующие:
пол:
мужской;
женский;
возраст (по группам):
0-16 лет;
17-35 лет;
36-50 лет;
50+ лет;
тип одежды:
обобщенная категория одежды верхней части тела: с длинными рукавами, с короткими рукавами, без рукавов;
детализированный тип одежды верхней части тела: куртка, пальто, жилет без рукавов, толстовка, футболка, рубашка, платье;
тип одежды нижней части тела: брюки, юбка, шорты, неопределенный;
тип головного убора: шапка/шляпа/кепка, капюшон/платок, без головного убора;
цвет одежды (верх/низ);
наличие средств индивидуальной защиты (СИЗ):
наименование СИЗ: жилет, каска;
цвет СИЗ;
точность распознавания СИЗ;
наличие сумки:
на спине;
в руке(-ах).
Распознавание силуэтов и атрибутов силуэтов можно настроить на уровне установки продукта. В этом разделе описывается как включить распознавание силуэтов и атрибутов силуэтов, если этот шаг был пропущен при установке.
Для включения распознавания силуэтов и их атрибутов выполните следующие действия:
В файле конфигурации
/opt/findface-multi/configs/findface-extraction-api/findface-extraction-api.yaml
укажите модели нейронных сетей для распознавания объектов типа силуэт и их атрибутов.Важно
Удостоверьтесь, что для каждой модели вы указали правильный тип ускорения CPU или GPU: он должен совпадать с типом ускорения
findface-extraction-api
. Обратите внимание, чтоfindface-extraction-api
на CPU может работать только с CPU-моделями, в то время какfindface-extraction-api
на GPU поддерживает как GPU-, так и CPU-модели.Откройте файл конфигурации
findface-extraction-api.yaml
.sudo vi /opt/findface-multi/configs/findface-extraction-api/findface-extraction-api.yaml
Укажите модель детектора силуэтов в разделе
detectors -> models
, вставив следующий код:GPU
detectors: ... models: ... body_gustav: aliases: - body - edie - shiloette - glen model: detector/body.gustav_accurate.019.gpu.fnk options: min_object_size: 32 resolutions: - 256x256 - 384x384 - 512x512 - 768x768 - 1024x1024 - 1536x1536 - 2048x2048 ...
CPU
detectors: ... models: ... body_gustav: aliases: - body - edie - shiloette - glen model: detector/body.gustav_accurate.019.cpu.fnk options: min_object_size: 32 resolutions: - 256x256 - 384x384 - 512x512 - 768x768 - 1024x1024 - 1536x1536 - 2048x2048 ...
Убедитесь, что раздел
objects -> body
содержитquality_attribute: body_quality
и, в зависимости от вашего типа ускорения,base_normalizer: facenorm/cropbbox.v2.gpu.fnk
илиbase_normalizer: facenorm/cropbbox.v2.cpu.fnk
:GPU
objects: ... body: base_normalizer: facenorm/cropbbox.v2.gpu.fnk quality_attribute: body_quality ...
CPU
objects: ... body: base_normalizer: facenorm/cropbbox.v2.cpu.fnk quality_attribute: body_quality ...
Убедитесь, что раздел
normalizers
содержит модель нормализатораcropbbox
, как показано в примере ниже. Данный нормализатор требуется для работы экстракторов.GPU
normalizers: ... models: ... cropbbox: model: facenorm/cropbbox.v2.gpu.fnk ...
CPU
normalizers: ... models: ... cropbbox: model: facenorm/cropbbox.v2.cpu.fnk ...
Укажите модели для экстракции векторов признаков в разделе
extractors -> models
, в зависимости от необходимых экстракторов:GPU
extractors: ... models: body_action_base6: '' body_action_car: '' body_action_fights: '' body_age_gender: pedattr/pedattr.age_gender.v0.gpu.fnk body_bags: pedattr/pedattr.bags.v0.gpu.fnk body_clothes: pedattr/pedattr.clothes_type.v0.gpu.fnk body_clothes34671: '' body_color: pedattr/pedattr.color.v1.gpu.fnk body_emben: pedrec/pedrec.durga.gpu.fnk body_fall: '' body_handface: '' body_protective_equipment: pedattr/pedattr.protective.v1.gpu.fnk body_quality: pedattr/pedattr.quality.v0.gpu.fnk
CPU
extractors: ... models: body_action_base6: '' body_action_car: '' body_action_fights: '' body_age_gender: pedattr/pedattr.age_gender.v0.cpu.fnk body_bags: pedattr/pedattr.bags.v0.cpu.fnk body_clothes: pedattr/pedattr.clothes_type.v0.cpu.fnk body_clothes34671: '' body_color: pedattr/pedattr.color.v1.cpu.fnk body_emben: pedrec/pedrec.durga.cpu.fnk body_fall: '' body_handface: '' body_protective_equipment: pedattr/pedattr.protective.v1.cpu.fnk body_quality: pedattr/pedattr.quality.v0.cpu.fnk
Доступны следующие экстракторы:
Экстрактор
Настройка
возраст и пол
body_age_gender: pedattr/pedattr.age_gender.v0.gpu.fnk
body_age_gender: pedattr/pedattr.age_gender.v0.cpu.fnk
наличие сумки
body_bags: pedattr/pedattr.bags.v0.gpu.fnk
body_bags: pedattr/pedattr.bags.v0.cpu.fnk
тип одежды
body_clothes: pedattr/pedattr.clothes_type.v0.gpu.fnk
body_clothes: pedattr/pedattr.clothes_type.v0.cpu.fnk
цвет одежды
body_color: pedattr/pedattr.color.v1.gpu.fnk
body_color: pedattr/pedattr.color.v1.cpu.fnk
вектор признаков объекта силуэт
body_emben: pedrec/pedrec.durga.gpu.fnk
body_emben: pedrec/pedrec.durga.cpu.fnk
наличие СИЗ
body_protective_equipment: pedattr/pedattr.protective.v1.gpu.fnk
body_protective_equipment: pedattr/pedattr.protective.v1.cpu.fnk
качество изображения силуэта
body_quality: pedattr/pedattr.quality.v0.gpu.fnk
body_quality: pedattr/pedattr.quality.v0.cpu.fnk
Совет
Для того чтобы отключить модель, передайте в соответствующий параметр пустое значение
''
. Не удаляйте сам параметр, поскольку в этом случае будет выполняться поиск модели по умолчанию.Важно
Для того чтобы распознавание силуэтов работало корректно, для параметров
body_emben
иbody_quality
должны быть указаны соответствующие модели экстракторов.GPU
extractors: ... models: body_action_base6: '' body_action_car: '' body_action_fights: '' body_age_gender: '' body_bags: '' body_clothes: '' body_clothes34671: '' body_color: '' body_emben: pedrec/pedrec.durga.gpu.fnk body_fall: '' body_handface: '' body_protective_equipment: '' body_quality: pedattr/pedattr.quality.v0.gpu.fnk
CPU
extractors: ... models: body_action_base6: '' body_action_car: '' body_action_fights: '' body_age_gender: '' body_bags: '' body_clothes: '' body_clothes34671: '' body_color: '' body_emben: pedrec/pedrec.durga.cpu.fnk body_fall: '' body_handface: '' body_protective_equipment: '' body_quality: pedattr/pedattr.quality.v0.cpu.fnk
Перезапустите контейнер
findface-multi-findface-extraction-api-1
.sudo docker container restart findface-multi-findface-extraction-api-1
Внесите изменения в конфигурационный файл
/opt/findface-multi/configs/findface-video-worker/findface-video-worker.yaml
.В разделе
models
укажите модели нейронных сетей для объектаbody
по аналогии с примером:GPU
sudo vi /opt/findface-multi/configs/findface-video-worker/findface-video-worker.yaml models: ... detectors: ... body: fnk_path: /usr/share/findface-data/models/detector/body.jasmine_fast.018.gpu.fnk min_size: 60 ... normalizers: ... body_norm: fnk_path: /usr/share/findface-data/models/facenorm/cropbbox.v2.gpu.fnk body_norm_quality: fnk_path: /usr/share/findface-data/models/facenorm/cropbbox.v2.gpu.fnk ... extractors: ... body_quality: fnk_path: /usr/share/findface-data/models/pedattr/pedattr.quality.v0.gpu.fnk normalizer: body_norm_quality
CPU
sudo vi /opt/findface-multi/configs/findface-video-worker/findface-video-worker.yaml models: ... detectors: ... body: fnk_path: /usr/share/findface-data/models/detector/body.jasmine_fast.018.cpu.fnk min_size: 60 ... normalizers: ... body_norm: fnk_path: /usr/share/findface-data/models/facenorm/cropbbox.v2.cpu.fnk body_norm_quality: fnk_path: /usr/share/findface-data/models/facenorm/cropbbox.v2.cpu.fnk ... extractors: ... body_quality: fnk_path: /usr/share/findface-data/models/pedattr/pedattr.quality.v0.cpu.fnk normalizer: body_norm_quality
Убедитесь, что добавлен раздел
objects -> body
:objects: ... body: normalizer: body_norm quality: body_quality track_features: ''
Перезапустите контейнер
findface-multi-findface-video-worker-1
.sudo docker container restart findface-multi-findface-video-worker-1
Откройте файл конфигурации
/opt/findface-multi/configs/findface-video-manager/findface-video-manager.yaml
и убедитесь, что он содержит разделbody
вdetectors
, аналогичный приведенному ниже.sudo vi /opt/findface-multi/configs/findface-video-manager/findface-video-manager.yaml detectors: ... body: filter_min_quality: 0.6 filter_min_size: 70 filter_max_size: 8192 roi: '' fullframe_crop_rot: false fullframe_use_png: false jpeg_quality: 95 overall_only: true realtime_post_first_immediately: false realtime_post_interval: 1 realtime_post_every_interval: false track_interpolate_bboxes: true track_miss_interval: 1 track_overlap_threshold: 0.25 track_max_duration_frames: 0 track_send_history: false post_best_track_frame: true post_best_track_normalize: true post_first_track_frame: false post_last_track_frame: false tracker_type: simple_iou track_deep_sort_matching_threshold: 0.65 track_deep_sort_filter_unconfirmed_tracks: true track_object_is_principal: false track_history_active_track_miss_interval: 0
Включите распознавание силуэтов и атрибутов силуэтов в файле конфигурации
/opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py
. Выполните следующие действия:В разделе
FFSECURITY
установите'ENABLE_BODIES: True
.sudo vi /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py FFSECURITY = { ... # optional objects to detect 'ENABLE_BODIES': True, ...
Чтобы улучшить качество распознавания силуэтов, мы рекомендуем включить дополнительный анализ атрибутов. В этом случае система сравнивает не только векторы признаков двух силуэтов, но и их атрибуты. Вывод о совпадении силуэтов делается только в том случае, если совпадают как векторы признаков, так и атрибуты.
Для дополнительного анализа вы можете использовать следующие атрибуты:
bottom_color
: цвет одежды нижней части тела;top_color
: цвет одежды верхней части тела;headwear
: тип и наличие/отсутствие головного убора;detailed_upper_clothes
: детализированный тип одежды верхней части тела, например, куртка;upper_clothes
: обобщенная категория одежды верхней части тела: с длинными рукавами, с короткими рукавами, без рукавов;lower_clothes
: тип одежды нижней части тела, например, брюки;helmet_type
: включает такие характеристики, как цвет каски, определение ее видимости на человеке, отсутствие/наличие;vest_type
: включает такие характеристики, как цвет жилета, определение его видимости на человеке, отсутствие/наличие;age_group
: принадлежность к одной из четырех возрастных групп: 0-16, 17-35, 36-50, 50+ лет;gender
: пол: мужской, женский.
Для того чтобы включить дополнительный анализ атрибутов, установите
True
в разделеFFSECURITY
->EXTRA_BODY_MATCHING
для атрибутов, которые вы хотите сравнивать. Установите значениеmin_confidence
в диапазоне от 0 до 1.FFSECURITY = { # use additional features for extra confidence when matching body by emben 'EXTRA_BODY_MATCHING': { 'bottom_color': {'enabled': False, 'min_confidence': 0}, 'top_color': {'enabled': False, 'min_confidence': 0}, 'headwear': {'enabled': False, 'min_confidence': 0}, 'detailed_upper_clothes': {'enabled': False, 'min_confidence': 0}, 'upper_clothes': {'enabled': False, 'min_confidence': 0}, 'lower_clothes': {'enabled': False, 'min_confidence': 0}, 'helmet_type': {'enabled': False, 'min_confidence': 0}, 'vest_type': {'enabled': False, 'min_confidence': 0}, 'age_group': {'enabled': False, 'min_confidence': 0}, 'gender': {'enabled': False, 'min_confidence': 0}, },
Примечание
Проконсультируйтесь с нашими техническими экспертами (support@ntechlab.com), чтобы установить оптимальное значение для
min_confidence
.Если вы решили, что дополнительный анализ атрибутов вам не нужен, пропустите эту настройку и переходите к следующему шагу.
В разделе
FFSECURITY
укажите атрибуты силуэтов, которые требуется отображать в событиях распознавания.# available features: age_gender, bags, clothes, color, protective_equipment 'BODY_EVENTS_FEATURES': ['protective_equipment', 'age_gender', 'bags', 'color', 'clothes'],
Выполните перезапуск контейнеров FindFace Multi.
cd /opt/findface-multi/ sudo docker-compose restart
В веб-интерфейсе перейдите на вкладку Источники видео. Выберите камеру на вкладке Камеры (либо загруженный файл на вкладке Загрузки, либо внешний детектор на соответствующей вкладке). Перейдите на вкладку Основные. Поставьте флажок Силуэты в разделе Детекторы.