Бенчмарки
Режимы:
- Создание конфигурационного файла
- Детекция
- Процессинг
- Тест распознавания 1:1
- Тест распознавания 1:N
- Тест скорости поиска
Создание конфигурационного файла базы данных
- Конфигурационный файл базы данных – текстовый файл по 3 строки на каждое изображение (
<person_id> <image_id> <path_to_image>
).
Пример:
person0_id
image0_id
path_to_image0
person0_id
image1_id
path_to_image1
...
Пример создания конфигурационного файла базы данных:
Создание списка файлов изображений
find -type f | sort > ../lfw_simple_format.txt
Пути в конфигурационных файлах должны располагаться относительно директории, передаваемой через параметр dataset_root_dir
lfw_simple_format.txt
– текстовый файл со строками вида:<path/to/person/dir/image_file>
. Изображения с одинаковыми path/to/person/dir принадлежат одному человеку. Изображения для одного человека должны идти подряд.
Пример:
person1_dir/image1
person1_dir/image2
person2_dir/image1
...
Конвертация списка в конфигурационный файл
В этом режиме программа преобразовывает файл-список в формат конфигурационного файла базы данных (используется в остальных режимах):
Параметры запуска:
mode
– режим программы (convert_config_format
)result_dataset_config
– конфигурационный файл базы изображенийFILE
– один файл с данными в формате1
Пример запуска:
./test_sdk \
--mode convert_config_format \
--result_dataset_config dataset_config.txt \
lfw_simple_format.txt
Результаты конвертации: конфигурационный файл базы изображений
Детекция
В этом режиме программа детектирует лица в базе изображений c id в промежутке [begin_image_id, end_image_id)
. Каждое изображение должно содержать только одно лицо. Изображения, на которых будет детектировано больше одного лица, будут проигнорированы.
Примечание: при использовании GPU рекомендуется проводить не более одного любого теста одновременно.
Перед запуском программы, необходимо получить файл базы данных с изображениями (см. Создание конфигурационного файла)
Параметры запуска:
mode
– режим программы (detection
)dll_path
– путь до файла библиотекиlibfacerec.so
илиfacerec.dll
sdk_config_dir
– путь до каталога conf/facerecdataset_config
– конфигурационный файл базы изображений (см. Создание конфигурационного файла)capturer_config
– имя конфигурационного файла детектораdataset_root_dir
– путь до базы данныхdetection_result_file
– файл для хранения результатов детекции[begin_image_id]
– индекс изображения, с которого начинается детекция (по умолчанию0
)[end_image_id]
– индекс изображения, до которого осуществляется детекция (по умолчанию выполняется обработка до конца файла)[use_cpu_cores_count]
– количество используемых ядер для детекции (по умолчанию1
)
Пример запуска из каталога bin:
./test_sdk \
--mode detection \
--dll_path ../lib/libfacerec.so \
--sdk_config_dir ../conf/facerec \
--capturer_config common_capturer4_lbf.xml \
--dataset_config dataset_config.txt \
--dataset_root_dir /path/to/data \
--detection_result_file \
detection_result.bin
Результаты детекции: текстовый файл со строками в формате: <image_id> <количество_точек> <задетектированные_точки>
Процессинг
В этом режиме программа создает шаблоны детектированных лиц, обнаруженных на изображениях с id в промежутке [begin_image_id, end_image_id)
.
Перед запуском программы, необходимо получить файл детекций для тестируемого распознавателя (см. Детекция)
Параметры запуска:
mode
– режим программы (processing
)dll_path
– путь до файла библиотекиlibfacerec.so
илиfacerec.dll
sdk_config_dir
– путь до каталога conf/facerecdataset_config
– конфигурационный файл базы изображений (см. Создание конфигурационного файла)dataset_root_dir
– путь до базы данныхrecognizer_config
– имя конфигурационного файла распознавателяprocessing_result_file
– файл для сохранения результирующих шаблонов[begin_image_id]
– индекс изображения, с которого начинается процессинг (по умолчанию0
)[end_image_id]
– индекс изображения, до которого осуществляется процессинг (по умолчанию обработка выполняется до конца файла)[use_cpu_cores_count]
– количество используемых ядер для процессинга (по умолчанию1
)FILES
– файл(ы) хранящие результат детекции
Примечание: пробная лицензия позволяет запустить тест только при [use_cpu_cores_count] 1
.
Пример запуска из каталога bin:
./test_sdk \
--mode processing \
--dll_path ../lib/libfacerec.so \
--sdk_config_dir ../conf/facerec \
--dataset_config dataset_config.txt \
--dataset_root_dir /path/to/data \
--recognizer_config method6v7_recognizer.xml \
--processing_result_file ./templates_6v7.bin \
detection_result.bin
Результаты процессинга: бинарный файл, содержащий по одной записи на шаблон; каждая запись содержит 64-битное беззнаковое целое число (image_id
) и шаблон.
Тест распознавания 1:1
В этом режиме программа выполняет тест распознавания 1:1, используя шаблоны, сгенерированные на изображениях из промежутка [begin_image_id, end_image_id)
.
Перед запуском теста, необходимо вычислить файл шаблона для тестируемого распознавателя (см. Процессинг)
Параметры запуска:
mode
– режим программы (recognition_test_11
)dll_path
– путь до файла библиотекиlibfacerec.so
илиfacerec.dll
sdk_config_dir
– путь до каталога conf/facerecdataset_config
– конфигурационный файл базы изображений (см. Создание конфигурационного файла)recognizer_config
– имя конфигурационного файла распознавателяresult_roc_file
– файл для сохранения ROC-кривойresult_closest_mismatches_file
– файл для сохранения ближайших ложных пар[begin_image_id]
– индекс первого изображения, используемого в тесте (по умолчанию0
)[end_image_id]
– индекс первого изображения послеbegin_image_id
, не используемого в тесте (по умолчанию используются все начиная сbegin_image_id
до конца файла)[use_cpu_cores_count]
– количество используемых ядер для теста (по умолчанию1
)FILES
– файл(ы) с шаблонами (результаты c шага процессинга)
Примечание: пробная лицензия позволяет запустить тест только при [use_cpu_cores_count] 1
.
Пример запуска из каталога bin:
./test_sdk \
--mode recognition_test_11 \
--dll_path ../lib/libfacerec.so \
--sdk_config_dir ../conf/facerec \
--dataset_config dataset_config.txt \
--recognizer_config method6v7_recognizer.xml \
--result_roc_file ./roc11_6v7.txt \
--result_closest_mismatches_file ./closest_mismatches_file.txt \
templates_6v7.bin
Результаты теста:
result_roc_file
– текстовый файл с ROC-кривой; строка файла описывает точку кривой в формате:<far> <tar> <distance>
result_closest_mismatches_file
– текстовый файл со строками вида:<distance> <image_id1> <image_id2> <path_to_image1> <path_to_image2>
. Этот файл содержит пары изображений, размеченных как принадлежащие разным людям, но имеющие минимальное расстояние между шаблонами. Рекомендуется сгенерировать этот файл с лучшим распознавателем и просмотреть изображения из первых записей, чтобы проверить ошибки разметки набора данных.
Для построения ROC кривой необходимо запустить утилиту draw_roc_curves (см. Построение ROC-кривой)
Тест распознавания 1:N
В этом режиме программа выполняет тест распознавания 1:N, используя шаблоны, сгенерированные на изображениях из промежутка [begin_image_id, end_image_id)
.
Перед запуском теста, необходимо вычислить файл шаблона для тестируемого распознавателя (см. Процессинг)
Параметры запуска:
mode
– режим программы (recognition_test_1N
)dll_path
– путь до файла библиотекиlibfacerec.so
илиfacerec.dll
sdk_config_dir
– путь до каталогаconf/facerec
dataset_config
– конфигурационный файл базы изображений (см. Создание конфигурационного файла)recognizer_config
– имя конфигурационного файла распознавателяresult_roc_file
– файл для сохранения ROC-кривой[begin_image_id]
– индекс первого изображения, используемого в тесте (по умолчанию0
)[end_image_id]
– индекс первого изображения послеbegin_image_id
, не используемого в тесте (по умолчанию используются все начиная сbegin_image_id
до конца файла)[use_cpu_cores_count]
– количество используемых ядер для теста (по умолчанию1
)[acceleration]
– тип ускорения поиска (по умолчанию0
):0
– поиск с помощьюpbio::Recognizer::search
с типом ускоренияpbio::Recognizer::SearchAccelerationType::NO_SEARCH_ACCELERATION
1
– поиск с помощьюpbio::Recognizer::search
с типом ускоренияpbio::Recognizer::SearchAccelerationType::SEARCH_ACCELERATION_1
-1
– поиск с помощьюpbio::Recognizer::verifyMatch
в один поток (не зависит отsearch_threads_count
)
FILES
– файл(ы) с шаблонами (результаты c шага процессинга)
Примечание: пробная лицензия позволяет запустить тест только при [use_cpu_cores_count] 1
. Кроме того, может потребоваться указать такое значение параметра [end_image_id]
, при котором "gallery_templates size
" не превышает 1000 (выводится в консоль после запуска теста).
Пример запуска из каталога bin:
./test_sdk \
--mode recognition_test_1N \
--dll_path ../lib/libfacerec.so \
--sdk_config_dir ../conf/facerec \
--dataset_config dataset_config.txt \
--recognizer_config method6v7_recognizer.xml \
--result_roc_file ./roc1N_6v7.txt \
--acceleration 1 \
templates_6v7.bin
Результат теста: текстовый файл с ROC-кривой; строка файла описывает точку кривой в формате: <far> <tar> <distance>
Для построения ROC кривой необходимо запустить утилиту draw_roc_curves (см. Построение ROC-кривой)
Тест скорости поиска
В этом режиме программа выполняет тест скорости поиска, используя шаблоны, которые были сгенерированы в режиме processing
или с помощью утилиты (см. Генератор шаблонов).
Параметры запуска:
mode
– режим программы (search_speed_test
)dll_path
– путь до файла библиотекиlibfacerec.so
илиfacerec.dll
sdk_config_dir
– путь до каталога conf/facerecrecognizer_config
– имя конфигурационного файла распознавателя[templates_count]
– количество используемых шаблонов (по умолчанию обработка выполняется до конца файла)[queries_count]
– количество запросов (по умолчанию1
)[query_k_nearest]
– количество ближайших шаблонов для поиска (по умолчанию1
)[search_threads_count]
– количество потоков, используемых во время поиска (по умолчанию1
)[acceleration]
– тип ускорения поиска (по умолчанию 0):0
– поиск с помощьюpbio::Recognizer::search
с типом ускоренияpbio::Recognizer::SearchAccelerationType::NO_SEARCH_ACCELERATION
1
– поиск с помощьюpbio::Recognizer::search
с типом ускоренияpbio::Recognizer::SearchAccelerationType::SEARCH_ACCELERATION_1
-1
– поиск с помощьюpbio::Recognizer::verifyMatch
в один поток (не зависит отsearch_threads_count
)
FILES
– файл(ы) с шаблонами, полученными из режимаprocessing
или с помощью утилиты
Примечание: если используется пробная лицензия, значение параметра [templates_count]
не может превышать 1000
.
Пример запуска из каталога bin:
./test_sdk \
--mode search_speed_test \
--dll_path ../lib/libfacerec.so \
--sdk_config_dir ../conf/facerec \
--recognizer_config method6v7_recognizer.xml \
templates_6v7.bin
Результаты теста: сообщение с результатами тестирования
Утилиты
Генератор шаблонов
Утилита для создания случайных шаблонов.
Параметры запуска:
recognizer_version
– версия распознавателя (необходимо выбрать одну из [11v1000, 10v30, 10v100, 10v1000, 9v30, 9v300, 9v1000, 8v7, 8v6, 7v7, 7v6, 7v3, 7v2, 7, 6v7, 6v6, 6v5, 6v4, 6v3, 6v2, 6])templates_count
– генерируемое количество шаблоновresult_file
– бинарный файл, в который сохраняются сгенерированные шаблоны
Пример запуска:
./template_generator \
6v7 \
100000 \
random_templates.bin
Результаты работы утилиты: бинарный файл со случайными шаблонами, такого же формата, как и в режиме processing
Исходный код: examples/cpp/test_sdk
Построение ROC-кривой
Утилита для построения ROC-кривой по полному набору точек.
- Перед запуском программы, необходимо установить пакет matplotlib:
pip3 install matplotlib
- Для запуска требуется версия Python 3
Параметры запуска:
rocs_folder
– путь до папки где хранятся файлы с вычисленным набором точек для ROC кривойroc_points_files
– имена файлов для которых необходимо построить кривую(возможно указывать несколько файлов). Наименование файла будет отоборажаться как имя ROC-кривой на графике
Пример запуска:
python3 ./draw_roc_curves.py \
./base_roc \
roc11_11v1000.txt \
roc11_10v100.txt \
roc11_10v30.txt \
roc11_9v300.txt
Исходный код: examples/python/draw_roc_curves.py