Использование GPU
Распознавание лиц требует использования значительных вычислительных ресурсов, поэтому мы добавили возможность ускорения модулей Face SDK с использованием GPU для выполнения алгоритмов глубокого обучения.
На данный момент GPU может быть использован для ускорения на следующих платформах:
- Windows x86 64-bit
- Linux x86 64-bit
- Android
- NVIDIA Jetson (JetPack 4.3/4.4)
В данном разделе вы узнаете:
- для каких модулей Face SDK доступно ускорение;
- как включить ускорение;
- результаты тестирования работы модулей с использованием CPU и GPU;
- возможные ошибки при использовании GPU и пути решения.
Desktop
На данный момент ускорение с использованием GPU доступно для следующих модулей Face SDK (доступно использование только одного GPU):
- Методы (11v1000, 10v30, 10v100, 10v1000, 9v30, 9v300, 9v1000, 9v30mask, 9v300mask, 9v1000mask) (см. Распознавание лиц)
- Детекторы (BLF, REFA, ULD) (см. Детекция лиц)
Для запуска моделей на GPU отредактируйте файл конфигурации объекта Recognizer, изменив значение поля use_cuda с 0 на 1.
Windows/Linux
Общие требования:
Системные требования:
Windows
- Nvidia GPU Driver >= 441.22
- Microsoft Visual C++ Redistributable for Visual Studio 2019
Linux
- Nvidia GPU Driver >= 440.33
Требования к оборудованию:
- Графический процессор (GPU) с поддержкой CUDA (NVIDIA GTX 1050 Ti и выше)
Для CUDA 10
Системные требования:
Windows:
Linux:
Требования к оборудованию:
- Графический процессор (GPU) с поддержкой CUDA (NVIDIA GTX 1050 Ti и выше, но ниже 30xx серий)
Для CUDA 11
Системные требования:
Windows:
Linux:
Требования к оборудованию:
- Графический процессор (GPU) с поддержкой CUDA (от NVIDIA GTX 1050 Ti до RTX 3090 включительно)
Другие:
- Переместить все библиотеки из директории /version/bin/cuda11/ в папку /bin/ с заменой файлов.
Также реализована возможность применять предсобранные docker-контейнеры с поддержкой CUDA, например, nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04 (некоторые виды лицензий при этом могут быть недоступны).
Ускорение происходит за счет одного из доступных GPU (по умолчанию – на GPU с индексом 0). Индекс GPU можно изменить следующим образом:
- через параметр
gpu_indexв файле конфигурации объекта Recognizer - через переменную окружения
CUDA_VISIBLE_DEVICES(Более подробно о переменных окружения CUDA смотрите по ссылке)
NVIDIA Jetson
- Системные требования:
- JetPack 4.3 или 4.4*
* Тестирование производилось на модулях Jetson TX2 и Jetson NX.
Компонент jetson_jetpack_4.3_4.4 можно выбрать в инсталлере Face SDK. По умолчанию в нем используется сборка для jetpack 4.4. Если вам требуется сборка для jetpack 4.3, переместите все файлы из директории lib/jetpack-4.3 в директорию lib.
Результаты тестирования
В таблице ниже представлены замеры скорости построения шаблона с использованием CPU и GPU:
| Method | GPU | CPU |
| 12v1000 | 47 мс | 442 мс |
| 9v300 | 10 мс | 292 мс |
| 12v100 | 8 мс | 49 мс |
| 12v50 | 6 мс | 21 мс |
| 12v30 | 5 мс | 12 мс |
Примечание: при проведении замеров скорости использовалась видеокарта NVIDIA GTX 1070 и процессор Intel Core i5-9400 4.0GHz
Устранение ошибок
| Ошибка | Решение |
| 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 ) |
Android
На данный момент ускорение с использованием GPU на Android доступно для следующих модулей Face SDK:
- Методы (9v30, 9v300, 9v1000, 9v30mask, 9v300mask, 9v1000mask) (см. раздел Распознавание лиц)
- Детектор blf (см. раздел Детекция лиц)
Использование GPU можно включить/отключить через флаг use_mobile_gpu в файлах конфигурации объектов Capturer, Recognizer,VideoWorker (в файле конфигурации объекта VideoWorker использование GPU активируется для детекторов). По умолчанию поддержка мобильных GPU включена (значение 1). Чтобы отключить использование GPU, измените значение флага use_mobile_gpu на 0.
Результаты тестирования
В таблице ниже представлены замеры скорости построения шаблона с использованием CPU и GPU:
| Метод | CPU | GPU |
| 9v1000 | 3660 мс | 610 мс |
| 9v300 | 1960 мс | 280 мс |
| 9v30 | 170 мс | 70 мс |
Примечание: при проведении замеров скорости использовалось устройство Google Pixel 3.