Использование GPU
Поскольку распознавание лиц требует использования значительных вычислительных ресурсов, была добавлена возможность ускорения модулей Face SDK с использованием GPU для выполнения алгоритмов глубокого обучения.
На данный момент GPU может быть использован для ускорения на следующих платформах:
- Windows x86 64-bit
- Linux x86 64-bit
- Android
- Jetson (JetPack 4.3/4.4)
В данном разделе представлена информация о том, для каких модулей Face SDK доступно ускорение, каким образом включить данную функцию, а также информация о скорости работы модулей с использованием CPU и GPU, возможные ошибки при использовании GPU и пути решения.
Desktop [beta]
На данный момент ускорение с использованием GPU доступно для следующих модулей Face SDK (доступно использование только одного GPU):
- Распознаватели (recognizers) (11v1000, 10v30, 10v100, 10v1000, 9v30, 9v300, 9v1000, 9v30mask, 9v300mask, 9v1000mask) (см. Идентификация лиц)
- Детекторы (BLF, REFA, ULD) (см. Детекция лиц)
Для запуска моделей на GPU требуется отредактировать конфигурационный файл поддерживаемого распознавателя, изменив поле use_cuda
с 0
на 1
.
Windows/Linux
- Системные требования:
- Nvidia GPU Driver >= 410.48
- CUDA Toolkit 10.1
- cuDNN 7
- (Для Windows) Microsoft Visual C++ Redistributable for Visual Studio 2019
- Требования к оборудованию:
- графический процессор (GPU) с поддержкой CUDA (NVIDIA GTX 1050 Ti и выше)
Также есть возможность применять предсобранные docker-контейнеры с поддержкой CUDA, например, nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04 (некоторые виды лицензий при этом могут быть недоступны).
Ускорение происходит за счет одного из доступных GPU (по умолчанию – на GPU с индексом 0
). Индекс GPU можно изменить следующим образом:
- через параметр конфигурационного файла
gpu_index
- через переменную окружения
CUDA_VISIBLE_DEVICES
(см. более подробную информацию о переменных окружения CUDA)
Jetson
- Системные требования:
- JetPack 4.3 или 4.4*
* Тестирование производилось на модулях Jetson TX2 и Jetson NX.
Архив с требуемыми библиотеками – jetson_jetpack_4.3_4.4.tar.xz
. По умолчанию в нем используется сборка для jetpack 4.4. Если вам требуется сборка для jetpack 4.3, переместите все файлы из директории lib/jetpack-4.3 в директорию lib.
Временные характеристики
В таблице ниже представлены замеры скорости построения шаблона с использованием CPU и GPU:
Method | GPU | CPU |
11v1000 | 35 мс | 865 мс |
9v300 | 10 мс | 260 мс |
10v100 | 13 мс | 40 мс |
10v30 | 11 мс | 24 мс |
Временные характеристики детекции лиц с использованием GPU см. в разделе Детекция лиц.
Примечание: при проведении замеров скорости использовалась видеокарта NVIDIA GeForce GTX 1080 Ti и процессор Intel Core i7.
Устранение неполадок
Ошибка | Решение |
Assertion failed (Cannot open shared object file libtensorflow.so.2) | Убедитесь, что файл библиотеки libtensorflow.so.2 находится в одной директории с используемой библиотекой libfacerec.so |
Assertion failed (Cannot open shared object file tensorflow.dll) | Убедитесь, что файл библиотеки tensorflow.dll находится в одной директории с используемой библиотекой facerec.dll |
Медленная инициализация | Увеличьте размер JIT кэша: `export CUDA_CACHE_MAXSIZE=2147483647` (подробнее - [JIT Caching](https://developer.nvidia.com/blog/cuda-pro-tip-understand-fat-binaries-jit-caching/)) |
Android [beta]
На данный момент ускорение с использованием GPU доступно для следующих модулей Face SDK:
- распознаватели (recognizers) (9v30, 9v300, 9v1000, 9v30mask, 9v300mask, 9v1000mask) (см. Идентификация лиц)
- детектор blf (см. Детекция лиц)
Использование GPU можно включить/отключить через флаг use_mobile_gpu
в конфигурационных файлах объектов Capturer
, Recognizer
, VideoWorker
(в конфигурационном файле объекта VideoWorker
использование GPU активируется для детекторов). По умолчанию поддержка мобильных GPU включена (значение 1
). Чтобы отключить использование GPU, измените значение флага use_mobile_gpu
на 0
.
Временные характеристики
В таблице ниже представлены замеры скорости модулей Face SDK с использованием CPU и GPU:
Метод | CPU | GPU |
9v1000 | 3660 мс | 610 мс |
9v300 | 1960 мс | 280 мс |
9v30 | 170 мс | 70 мс |
Примечание: при проведении замеров скорости использовалось устройство Google Pixel 3.