Пакетная загрузка лиц¶
Функция пакетного добавления лиц позволяет отправлять лица в компонент 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.
Для пакетного добавления лиц выполните следующие действия:
Подготовьте файл задания (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
При необходимости отобразите содержимое job-файла (метод
print
).Отправьте лица в компонент 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