Распознавание силуэтов и их атрибутов
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/bodydet.gustav_accurate.022.gpu.fnk options: min_object_size: 32 resolutions: - 2048x2048 ...
CPU
detectors: ... models: ... body_gustav: aliases: - body - edie - shiloette - glen model: detector/bodydet.gustav_accurate.022.cpu.fnk options: min_object_size: 32 resolutions: - 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: default: model: '' body_action_car: default: model: '' body_action_fights: default: model: '' body_age_gender: default: model: pedattr/pedattr.age_gender.v0.gpu.fnk body_bags: default: model: pedattr/pedattr.bags.v0.gpu.fnk body_clothes: default: model: pedattr/pedattr.clothes_type.v0.gpu.fnk body_clothes34671: default: model: '' body_color: default: model: pedattr/pedattr.color.v1.gpu.fnk body_emben: default: model: pedrec/pedrec.durga.gpu.fnk body_fall: default: model: pedattr/pedattr.fall.v1.gpu.fnk body_handface: default: model: pedattr/pedattr.handface.v1.gpu.fnk body_mideast_clothes: default: model: '' body_pose: default: model: '' body_protective_equipment: default: model: pedattr/pedattr.protective.v1.gpu.fnk body_quality: default: model: pedattr/pedattr.quality.v0.gpu.fnk ...
CPU
extractors: ... models: body_action_base6: default: model: '' body_action_car: default: model: '' body_action_fights: default: model: '' body_age_gender: default: model: pedattr/pedattr.age_gender.v0.cpu.fnk body_bags: default: model: pedattr/pedattr.bags.v0.cpu.fnk body_clothes: default: model: pedattr/pedattr.clothes_type.v0.cpu.fnk body_clothes34671: default: model: '' body_color: default: model: pedattr/pedattr.color.v1.cpu.fnk body_emben: default: model: pedrec/pedrec.durga.cpu.fnk body_fall: default: model: pedattr/pedattr.fall.v1.cpu.fnk body_handface: default: model: pedattr/pedattr.handface.v1.cpu.fnk body_mideast_clothes: default: model: '' body_pose: default: model: '' body_protective_equipment: default: model: pedattr/pedattr.protective.v1.cpu.fnk body_quality: default: model: pedattr/pedattr.quality.v0.cpu.fnk ...
Примечание
Экстрактор
body_handface4не указан в файле/opt/findface-multi/configs/findface-extraction-api/findface-extraction-api.yaml. Добавьте этот атрибут вручную в разделextractors → models, если хотите его включить:GPU
extractors: ... models: ... body_handface4: default: model: pedattr/pedattr.handface4.v0.gpu.fnk ...
CPU
extractors: ... models: ... body_handface4: default: model: pedattr/pedattr.handface4.v0.cpu.fnk ...
Доступны следующие экстракторы:
Экстрактор
Настройка
возраст и пол
body_age_gender: pedattr/pedattr.age_gender.v0.gpu.fnkbody_age_gender: pedattr/pedattr.age_gender.v0.cpu.fnkналичие сумки
body_bags: pedattr/pedattr.bags.v0.gpu.fnkbody_bags: pedattr/pedattr.bags.v0.cpu.fnkтип одежды
body_clothes: pedattr/pedattr.clothes_type.v0.gpu.fnkbody_clothes: pedattr/pedattr.clothes_type.v0.cpu.fnkцвет одежды
body_color: pedattr/pedattr.color.v1.gpu.fnkbody_color: pedattr/pedattr.color.v1.cpu.fnkвектор признаков объекта силуэт
body_emben: pedrec/pedrec.durga.gpu.fnkbody_emben: pedrec/pedrec.durga.cpu.fnkналичие СИЗ
body_protective_equipment: pedattr/pedattr.protective.v1.gpu.fnkbody_protective_equipment: pedattr/pedattr.protective.v1.cpu.fnkкачество изображения силуэта
body_quality: pedattr/pedattr.quality.v0.gpu.fnkbody_quality: pedattr/pedattr.quality.v0.cpu.fnkпадение человека
body_fall: pedattr/pedattr.fall.v1.gpu.fnkbody_fall: pedattr/pedattr.fall.v1.cpu.fnkкурение, использование телефона
body_handface: pedattr/pedattr.handface.v1.gpu.fnkbody_handface: pedattr/pedattr.handface.v1.cpu.fnkфотографирование экрана
body_handface4: pedattr/pedattr.handface4.v0.gpu.fnkbody_handface4: pedattr/pedattr.handface4.v0.cpu.fnkВажно
Для того чтобы распознавание силуэтов работало корректно, для параметров
body_embenиbody_qualityдолжны быть указаны соответствующие модели экстракторов.GPU
extractors: ... models: ... body_emben: default: model: pedrec/pedrec.durga.gpu.fnk ... body_quality: default: model: pedattr/pedattr.quality.v0.gpu.fnk ...
CPU
extractors: ... models: ... body_emben: default: model: pedrec/pedrec.durga.cpu.fnk ... body_quality: default: model: pedattr/pedattr.quality.v0.cpu.fnk ...
Внесите изменения в конфигурационный файл
/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/bodydet.gustav_normal.022.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/bodydet.gustav_normal.022.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: ''
Откройте файл конфигурации
/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 filter_track_min_duration_frames: 1 extractors_track_triggers: {}
Включите распознавание силуэтов и атрибутов силуэтов в файле конфигурации
/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, fall, handface, handface4 'BODY_EVENTS_FEATURES': ['age_gender', 'clothes', 'handface', 'color', 'bags', 'handface4', 'protective_equipment', 'fall'],
Выполните перезапуск контейнеров FindFace Multi.
cd /opt/findface-multi/ sudo docker-compose restart
В веб-интерфейсе перейдите на вкладку Источники видео. Выберите камеру на вкладке Камеры (либо загруженный файл на вкладке Загрузки, либо внешний детектор на соответствующей вкладке). Перейдите на вкладку Основные. Поставьте флажок Силуэты в разделе Детекторы.