Пакетная загрузка карточек через консоль
Помимо веб-интерфейса для пакетной загрузки фотографий в картотеку можно использовать консольную утилиту uploader.py. Рекомендуется предпочесть данную утилиту веб-интерфейсу, если количество загружаемых фотографий превышает 10 000.
Совет
Для вызова справки uploader.py выполните команду:
docker exec findface-multi-findface-multi-legacy-1 /opt/findface-security/bin/python3 /tigre_prototype/ffsecurity/uploader.py --help
Usage: uploader.py [OPTIONS] COMMAND [ARGS]...
Options:
--job FILE 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
docker exec findface-multi-findface-multi-legacy-1 /opt/findface-security/bin/python3 /tigre_prototype/ffsecurity/uploader.py add --help
Usage: uploader.py 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.
docker exec findface-multi-findface-multi-legacy-1 /opt/findface-security/bin/python3 /tigre_prototype/ffsecurity/uploader.py print --help
Usage: uploader.py 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.
docker exec findface-multi-findface-multi-legacy-1 /opt/findface-security/bin/python3 /tigre_prototype/ffsecurity/uploader.py 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
--detect-timeout INTEGER Request timeout for detect photos
--logging-delta INTEGER Logging period delta
--help Show this message and exit.
Выполните следующие действия:
Подготовьте CSV- или TSV-файл со списком фотографий и метаданными.
Важно
В качестве источника метаданных файл должен иметь следующий формат:
путь к фотографии | метаданные.Для подготовки TSV-файла можно использовать скрипт, аналогичный
tsv_builder.py, либо сгенерировать его с помощью python или другой утилиты.Примечание
Как скрипт, так и команда в примерах создают файл
images.tsvс данными в форматеполный путь к файлу с фотографией | метаданные. В качестве метаданных будет создана строка с именем файла.Чтобы создать TSV-файл со списком фотографий, загрузите скрипт в свою домашнюю директорию (
/home/ubuntu) и выполните следующую команду:sudo docker run -it --rm --network host --volume ${PWD}:/home/ubuntu/create_cards --volume /home/ubuntu/photos:/home/ubuntu/photos docker.int.ntl/ntech/multi/multi/legacy:ffmulti-2.4.1 sh -c "cd /home/ubuntu/create_cards && /opt/findface-security/bin/python3 tsv_builder.py /home/ubuntu/photos"--volume ${PWD}:/home/ubuntu/create_cards: монтирует текущую рабочую директорию хоста${PWD}в директорию/home/ubuntu/create_cardsвнутри контейнера,--volume /home/ubuntu/photos:/home/ubuntu/photos: монтирует директорию/home/ubuntu/photosс хоста в ту же директорию/home/ubuntu/photosвнутри контейнера.
В результате файл будет выглядеть следующим образом:
images.tsv.Примечание
TSV файл может быть сгенерирован с помощью следующей команды, если каталоги фотографий совпадают на хосте и в контейнере:
python3 tsv_builder.py /home/ubuntu/photos/
Создайте файл задания (job-файл) из CSV- или TSV-файла, используя следующую команду. В результате в текущем каталоге будет создан файл
enroll-job.db.sudo docker run -it --rm --network host --volume ${PWD}:/home/ubuntu/create_cards docker.int.ntl/ntech/multi/multi/legacy:ffmulti-2.4.1 sh -c "cd /home/ubuntu/create_cards && /opt/findface-security/bin/python3 /tigre_prototype/ffsecurity/uploader.py add /home/ubuntu/create_cards/images.tsv"Опции команды
addутилиты:--format: формат файла, по умолчаниюtsv,--delimiter: используемый разделитель, по умолчанию”\t”для TSV-файла,”,”для формата CSV.
Примечание
Файл job представляет собой sqlite-базу, которая может быть открыта в консоли sqlite3.
Выполните задание job, указав монтируемые тома (
volume) и передав необходимые аргументы утилитыrun:sudo docker run -it --rm --network host --volume ${PWD}:/home/ubuntu/create_cards --volume /home/ubuntu/photos:/home/ubuntu/photos docker.int.ntl/ntech/multi/multi/legacy:ffmulti-2.4.1 sh -c "cd /home/ubuntu/create_cards && /opt/findface-security/bin/python3 /tigre_prototype/ffsecurity/uploader.py run --user admin --password password --watch-lists 1"--volume ${PWD}:/home/ubuntu/create_cards: монтирует текущую рабочую директорию хоста${PWD}в директорию/home/ubuntu/create_cardsвнутри контейнера,--volume /home/ubuntu/photos:/home/ubuntu/photos: монтирует директорию/home/ubuntu/photosс хоста в ту же директорию/home/ubuntu/photosвнутри контейнера.
Опции команды
runутилиты:--parallel: количество потоков загрузки фотографий, по умолчанию 10. Чем больше потоков, тем быстрее будет завершена загрузка, однако также потребуется и большее количество ресурсов.--api: API URL, компонентаfindface-security, по умолчаниюhttp://127.0.0.1:80/. Обязательная опция.--user: имя пользователя. Обязательная опция.--password: пароль для указанной учетной записи пользователя. Обязательная опция.--watch-lists: перечень разделенных запятой ID списков наблюдения, в которые нужно добавить фотографии. Обязательная опция.--inactive: отметить новые карточки как неактивные.--failed: в случае неудачи при обработке job-файла исправьте ошибку и повторите попытку с данной опцией.--noface: по умолчанию изображения, классифицированные как не имеющие лиц, получают статусNOFACEи автоматически исключаются из загрузки. Чтобы попытаться повторно обнаружить лица на таких изображениях, перезапустите job-задание с данной опцией. Если повторное обнаружение снова даст отрицательный результат, изображение будет пропущено, а в журнале загрузки появится соответствующая запись.--all-faces: загрузить все лица, если на фотографии их несколько.--detect-timeout: тайм-аут запросов на обнаружение фотографий.--logging-delta: частота логирования статуса загрузки.
Если вы используете самоподписанный сертификат для шифрования данных, смонтируйте файл цифрового сертификата, содержащий открытый ключ SSL-сертификата, с хоста в контейнер.
sudo docker run -it --rm --network host --volume ${PWD}:/home/ubuntu/create_cards --volume /home/ubuntu/photos:/home/ubuntu/photos --volume /opt/findface-multi/configs/ssl/domain.crt:/usr/local/share/ca-certificates/domain.crt docker.int.ntl/ntech/multi/multi/legacy:ffmulti-2.4.1 sh -c "update-ca-certificates && cd /home/ubuntu/create_cards && /opt/findface-security/bin/python3 /tigre_prototype/ffsecurity/uploader.py run --api https://<external_address>:443/ --user admin --password password --watch-lists 1"--api https://<external_address>:443/: API URL, замените<external_address>на фактический IP-адрес вашего сервера, определяемый во время установки FindFace Multi.
В случае использования доверенного SSL-сертификата потребуется смонтировать всю цепочку сертификатов.
(Опционально) Выведите в формате JSON результаты обработки задания job. Используйте следующую команду:
sudo docker run --rm --network host --volume ${PWD}:/home/ubuntu/create_cards --volume /home/ubuntu/Photo_test:/home/ubuntu/photos docker.int.ntl/ntech/multi/multi/legacy:ffmulti-2.4.1 sh -c "cd /home/ubuntu/create_cards && /opt/findface-security/bin/python3 /tigre_prototype/ffsecurity/uploader.py print" | jqПри необходимости можно вывести только изображения, которые не удалось загрузить, и изображения без обнаруженных лиц, используя опции утилиты
print:sudo docker run --rm --network host --volume ${PWD}:/home/ubuntu/create_cards --volume /home/ubuntu/photos:/home/ubuntu/photos docker.int.ntl/ntech/multi/multi/legacy:ffmulti-2.4.1 sh -c "cd /home/ubuntu/create_cards && /opt/findface-security/bin/python3 /tigre_prototype/ffsecurity/uploader.py print --noface --failed" | jq--failed: вывести только изображения, которые не удалось загрузить.--noface: вывести только изображения без обнаруженных лиц.