Skip to content

FaceDlibAttribute

Moscowsky Anton edited this page Nov 2, 2021 · 17 revisions

FaceDlib

Признак детектирования лица, с возможностью идентификации. Используется библиотека dlib. Для использования требуется её установка.

Режимы Оценка точности 3D-перенос 3D-поворот Определение контура Извлекаемая информация
DE DE <Attribute_name>:face_label

1. Режимы

1.1. Детектирование (Detect)

Определяет лица на изображении средствами dlib. Если предоставлена база с лицами, предиткор формы и модель идентификации, то сразу способен выполнеть идентификацию лица.

1.2. Проверка (Check)

Не реализовано.

1.3. Извлечение (Extract)

Сравнивает распознанное лицо с предоставленной базой лиц находя максимально похожее лицо, расстояние между векторами которых менее 1-Probability. Идентификация доступна в отдельном режиме, если требуется использовать другой детектор лиц.

2. XML-описание

2.1. Основные параметры

  • Name (string, must be set) уникальное имя признака
  • Type (string, must be "FaceDlib") тип признака
  • Weight (double, default: 1) вес признака
  • Probability (double, default: 0.75) допустимая точность идентификации, распознанному лицу будет назначен лейбл, только если расстояние между ним и лицом из базы меньше 1-Probability. Если признак используется только как детектор, то не используется
  • Contour (bool, default: true) Не используется для данного признака

2.2. Особые параметры

Если планируется использовать признак только в режиме детектирования лица, то параметры ниже не требуются

Если любой из параметров ниже начинается с символа /, то путь считается глобальным, если нет, то относительным от директории с конфигурационным файлом

  • base_dir_path (string, default: "") Путь до директории с лицами. Файлы в директории должны быть в формате .jpeg, .jpg, .png. Имя файла будет соотвествоать возвращаемому лейблу. Если на изображении в базе детектор определяет более одного лица, то они не добавляются в базу. При старте узла создается набор векторов, кодирующих лица, это может быть длительной операцией, поэтому рекомендуется воспользоваться утилитой и заранее подготовить файл, уже с закодированными лицами, который можно передать признаку параметром base_file_path.
  • base_file_path (string, default: "") Путь до файла, уже с посчитанными векторами лиц. Если передан путь к файлу и к директории то используется файл. Создать файл можно при помощи утилиты face_dlib_descriptors_extractor.
  • sp_path (string, default: "") Путь к предиктору формы лица, используется, чтобы "нормировать" лицо в фас. Можно скачать с сайта dlib http://dlib.net/files/shape_predictor_5_face_landmarks.dat.bz2 и разархивировать в нужную папку.
  • net_path (string, default: "") Путь к обученной модели распознавания лиц, можно скачать с сайта dlib http://dlib.net/files/dlib_face_recognition_resnet_model_v1.dat.bz2 и разархивировать в нужную папку.

2.3. Пример

Ниже показано два варианта работы признака, самостоятельный и с каскадом Хаара в качестве детектора лица.

<?xml version="1.0" ?>

<AttributeLib>
    <Attribute Name="HaarFace" Type="HaarCascade" Cascade="cascades/mallick_haarcascade_frontalface_default.xml"/>

    <Attribute Name="DlibFace" Type="FaceDlib" Probability="0.4" base_file_path="face_recognition/base_faces.db" base_dir_path="face_recognition/base_faces/" sp_path="face_recognition/shape_predictor_5_face_landmarks.dat" net_path="face_recognition/dlib_face_recognition_resnet_model_v1.dat"/>
    
</AttributeLib>

<SimpleObjectBase>       
    
    <SimpleObject Name="FaceRecognition1" ID="12">                      
        <Attribute Type="Detect">DlibFace</Attribute>        
    </SimpleObject>
    
    <SimpleObject Name="FaceRecognition2" ID="13">              
        <Attribute Type="Detect">HaarFace</Attribute>        
        <Attribute Type="Extract">DlibFace</Attribute>            
    </SimpleObject>
    
</SimpleObjectBase>

Face dlib example Face dlib example Как можно наблюдать признак добавляет распознанного лица. В случае когда с заданным порогом нет подходящего лица, то добавляется лейбл Unknown и вклад признака становится 0. В качестве опорного изображения использовалось следующее с именем Moscowsky.jpg которое было подано с лицами 8 других человек.

3. Утилиты извлечения параметров

Clone this wiki locally