Пакетная загрузка лиц

Функция пакетного добавления лиц позволяет отправлять лица в компонент findface-facenapi одновременно из множества изображений.

В этом разделе:

Общие сведения

Вы можете пакетно добавлять лица одним из следующих способов:

  • из изображений в текущей папке,
  • из изображений в заданной дочерней папке,
  • из изображений во всех дочерних папках.

Для того чтобы установить компонент для пакетного добавления лиц, выполните команду:

sudo apt-get install findface-mass-enroll

Для того чтобы отобразить справку по компоненту, выполните команду:

findface-mass-enroll --help
## $ findface-mass-enroll --help
Usage: findface-mass-enroll [OPTIONS] COMMAND [ARGS]...

Options:
  --job PATH  Job file (default: ffmassenroll.job)
  --help      Show this message and exit.

Commands:
  prepare  Prepare upload job
  print    Print contents of job file as JSON
  run      Run upload job

$ findface-mass-enroll prepare --help
Usage: findface-mass-enroll prepare [OPTIONS] [IMAGES]...

  This subcommand is used to prepare one or more job files for subsequent
  runs.

  Examples:

  Enrolling all *.jpg files in current directory with meta 'Phillip J. Fry':

  $ ls
  photo1.jpg photo2.jpg photo3.jpg
  $ findface-mass-enroll prepare --meta-const='Phillip J. Fry' '*.jpg'

  Enrolling all JPEGs and PNGs from a subdirectory with meta from accompanying TXT files:

  $ ls subdir
  photo1.jpg photo1.txt photo2.png photo2.txt photo3.jpeg photo3.txt
  $ findface-mass-enroll prepare --meta-companion='txt' 'subdir/*.jpg' 'subdir/*.png' 'subdir/*.jpeg'

  Enrolling JPEGs from all subdirectories with meta from CSV file:

  $ cat meta.csv
  "Phillip J. Fry","dir1/photo1.jpg"
  "Phillip J. Fry","dir1/photo2.jpg"
  "Phillip J. Fry","dir1/photo3.jpg"
  "Turanga Leela","dir2/photo1.jpg"
  "Turanga Leela","dir2/photo2.jpg"
  "Turanga Leela","dir2/photo3.jpg"
  $ ls -R
  .:
  meta.csv

  ./dir1:
  photo1.jpg photo2.jpg photo3.jpg

  ./dir2:
  photo1.jpg photo2.jpg photo3.jpg
  $ findface-mass-enroll prepare --meta-csv=meta.csv '**/*.jpg' '**/*.jpeg'

Options:
  --meta-const TEXT      Shared metadata string
  --meta-companion TEXT  Extension of metadata files accompanying the images
                         (e.g. txt)
  --meta-csv PATH        Name of the CSV file containing metadata
  --meta-filename        Use file name (without extension) as metadata string
  --split INTEGER        Split job file into N parts (default: don't split)
  --help                 Show this message and exit.

## $ findface-mass-enroll print --help
Usage: findface-mass-enroll print [OPTIONS]

  Print contents of job file as JSON

Options:
  --failed  Show only failed images
  --help    Show this message and exit.

## $ findface-mass-enroll run --help
Usage: findface-mass-enroll run [OPTIONS]

  Run upload job

Options:
  --parallel INTEGER              Number of enroll threads (default: 10)
  --api TEXT                      API url (default: http://127.0.0.1:8000/)
                                  [required]
  --token TEXT                    API token  [required]
  --gallery TEXT                  Enroll faces into specified gallery
                                  (default: default)
  --failed                        Include failed images
  --mf-selector [all|biggest|reject]
                                  mf_selector (biggest,all,reject)
  --gender                        Extract gender
  --age                           Extract age
  --emotions                      Extract emotions
  --stats-interval INTEGER        Output stats after every STATS_INTERVAL
                                  seconds (default: 1)
  --help                          Show this message and exit.

Для пакетного добавления лиц выполните следующие действия:

  1. Подготовьте файл задания (job-файл), содержащий список изображений с метаданными (метод prepare). Если все изображения имеют одинаковую строку с метаданными, вы можете указать ее прямо в командной строке при подготовке job-файла (опция --meta-const). Если каждому изображению должна соответствовать уникальная строка с метаданными, задайте соответствие метаданных изображениям в CSV-файле (опция --meta-csv).

    Примечание

    В качестве источника метаданных CSV-файл должен иметь следующий формат: метаданные | изображение. Если некоторые изображения не были перечислены в CSV-файле, они будут добавлены с пустыми метаданными.

    Совет

    Для того чтобы записать список изображений в CSV-файл, можно использовать приведенную ниже команду. В этом случае для каждого изображения в списке в качестве строки с метаданными будет создана строка с указанием полного пути к изображению (в формате метаданные | изображение).

    find /home/user/sample | grep -E 'jpg|png' |awk '{print $0","$0}' > list.csv
    
  2. При необходимости отобразите содержимое job-файла (метод print).

  3. Отправьте лица в компонент findface-facenapi для дальнейшей обработки (метод run).

    Примечание

    В случае неудачи при обработке job-файла исправьте ошибку и повторите попытку с опцией --failed (см. пример ниже).

Пример

Добавьте лица из всех файлов .jpg в папке /home/user/images/ с общими метаданными Phillip J. Fry:

Для отображения списка всех файлов в папке выполните команду:

ls /home/user/images/
photo1.jpg photo2.jpg photo3.jpg ...

Подготовьте job-файл:

findface-mass-enroll prepare --meta-const='Phillip J. Fry' '/home/user/images/*'

Looking for images matching '*.jpg'
2055 files prepared for upload
2055 files in job file samplejob

Выполните job-файл:

findface-mass-enroll run --token 'RczGgVEMizR1njHHQegNH_g9mwGl6-A1' --api http://127.0.0.1:8000/ --gender --age --emotions --mf-selector=all

[33/2055] faces processed (4 succeeded, 9 failed, 10 skipped). 2.14 rps. [00:00:17/00:16:04]

---------------------------------------- Summary -------------------------------------------

Found 2055 images in job file
Skipped 0 already processed images
Successfully processed 2000 images
Failed to process 55 images

В случае неудачи при обработке job-файла исправьте ошибку и повторите попытку с опцией --failed.

findface-mass-enroll run --token 'RczGgVEMizR1njHHQegNH_g9mwGl6-A1' --api http://127.0.0.1:8000/ --gender --age --emotions --mf-selector=all --failed