Пакетная загрузка фотографий через консоль

Помимо веб-интерфейса для пакетной загрузки фотографий в картотеку можно использовать консольную утилиту findface-security-uploader. Рекомендуется предпочесть данную утилиту веб-интерфейсу, если количество загружаемых фотографий превышает 10 000.

Предупреждение

В текущей версии утилита findface-security-uploader не поддерживает автомобили и силуэты, только лица.

Совет

Для вызова справки findface-security-uploader выполните команду:

findface-security-uploader --help

Usage: findface-security-uploader [OPTIONS] COMMAND [ARGS]...

Options:
  --job PATH        Job file (default: enroll-job.db)
  --log-level TEXT  Log level
  --fsync BOOLEAN   Call fsync() to prevent data loss on power failure
  --help            Show this message and exit.

Commands:
  add    Add items from CSV or TSV file to job
  print  Print contents of job file as JSON
  run    Run upload job
findface-security-uploader add --help

Usage: findface-security-uploader add [OPTIONS] FILES...

Options:
  --format [csv|tsv]  Input file format - CSV or TSV
  --delimiter TEXT    Field delimiter - by default it's "\t" for TSV and ","
                      for CSV
  --help              Show this message and exit.
findface-security-uploader print --help

Usage: findface-security-uploader print [OPTIONS]

Print contents of job file as JSON

Options:
 --failed  Show only failed images
 --noface  Show only images without detection
 --help    Show this message and exit.
findface-security-uploader run --help

Usage: uploader.py run [OPTIONS]

Run upload job

Options:
  --parallel INTEGER       Number of enroll threads (default: 10)
  --api TEXT               API url (default: http://127.0.0.1:80/)  [required]
  --user TEXT              API username  [required]
  --password TEXT          API password  [required]
  --watch-lists TEXT       Comma-separated list of card list ids  [required]
  --inactive               Mark new cards as inactive
  --failed                 Include failed images
  --noface                 Include images without detection
  --all-faces              Enroll all found faces on each image
  --logging-delta INTEGER  Logging period delta
  --help                   Show this message and exit.

Выполните следующие действия:

  1. Подготовьте CSV- или TSV-файл со списком фотографий и метаданными.

    Важно

    В качестве источника метаданных файл должен иметь следующий формат: путь к фотографии | метаданные.

    Для подготовки TSV-файла можно использовать скрипт, аналогичный данному или команду find.

    Примечание

    Как скрипт, так и команда в примерах создают файл images.tsv с данными в формате полный путь к файлу с фотографией | метаданные. В качестве метаданных будет создана строка с именем файла.

    Для запуска скрипта на создание TSV-файла со списком фотографий из указанного каталога (/home/user/25_celeb/ в примере) выполните следующую команду:

    python3 tsv_builder.py /home/user/25_celeb/
    

    Пример использования команды find:

    find photos/ -type f -iname '*g' | while read x; do y="${x%.*}"; printf "%s\t%s\n" "$x" "${y##*/}"; done
    
  2. Создайте файл задания (job-файл) из CSV- или TSV-файла, используя метод add утилиты. В результате в текущем каталоге будет создан файл enroll-job.db.

    findface-security-uploader add images.tsv
    

    Опции add:

    • --format: формат файла, по умолчанию tsv,

    • --delimiter: используемый разделитель, по умолчанию ”\t” для TSV-файла, ”,” для формата CSV.

    Примечание

    Файл job представляет собой sqlite-базу, которая может быть открыта в консоли sqlite3.

  3. Выполните задание job, используя метод run утилиты.

    findface-security-uploader run --watch-lists 2 --api http://127.0.0.1:80 --user admin --password password
    

    Важные опции run:

    • --parallel: количество потоков загрузки фотографий, по умолчанию 10. Чем больше потоков, тем быстрее будет завершена загрузка, однако также потребуется и большее количество ресурсов.

    • --all-faces: загрузить все лица, если на фотографии их несколько.

    • --api: URL API компонента findface-security, по умолчанию http://127.0.0.1:80/. Обязательная опция.

    • --user: имя пользователя. Обязательная опция.

    • --password: пароль. Обязательная опция.

    • --watch-lists: перечень разделенных запятой id списков наблюдения, в которые нужно добавить фотографии. Обязательная опция.

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

    • --inactive: отметить новые карточки как неактивные.

    • --noface: по умолчанию изображения, классифицированные как не имеющие лиц, получают статус NOFACE и автоматически исключаются из загрузки. Чтобы попытаться повторно обнаружить лица на таких изображениях, перезапустите job-задание с данной опцией. Если повторное обнаружение снова даст отрицательный результат, изображение будет пропущено, а в журнале загрузки появится соответствующая запись.

  4. (Опционально) Выведите в формате JSON результаты обработки задания job. При необходимости можно вывести только изображения, которые не удалось загрузить, и изображения без обнаруженных лиц.

    findface-security-uploader print --failed
    findface-security-uploader print --noface