Использование GPU
Распознавание лиц требует использования значительных вычислительных ресурсов, поэтому мы добавили возможность ускорения модулей Face SDK с использованием GPU для выполнения алгоритмов глубокого обучения.
В данном разделе вы узнаете:
- Для каких модулей Face SDK доступно ускорение.
- Как включить ускорение.
- Результаты тестирования работы модулей с использованием CPU и GPU.
- Возможные ошибки при использовании GPU и пути решения.
Desktop
Системные требования для использования GPU
На данный момент ускорение с использованием GPU доступно для следующих модулей Face SDK (доступно использование только одного GPU):
- Методы (12v30, 12v50, 12v100, 12v1000, 11v1000, 10v30, 10v100, 10v1000, 9v30, 9v300, 9v1000, 9v30mask, 9v300mask, 9v1000mask) (см. Распознавание лиц).
- Детекторы (BLF, REFA, ULD) (см. Детекция лиц).
Для запуска моделей на GPU отредактируйте файл конфигурации объекта Recognizer или Capturer, изменив значение поля use_cuda с 0 на 1.
Для запуска обработке на cuda 10.1, отредактируйте файл конфигурации объекта, добавив поле use_legacy со значением 1
Ускорение происходит за счет одного из доступных GPU (по умолчанию – на GPU с индексом 0). Индекс GPU можно изменить следующим образом:
- Через параметр
gpu_indexв файле конфигурации объекта Recognizer. - Через переменную окружения
CUDA_VISIBLE_DEVICES(Более подробно о переменных окружения CUDA смотрите по ссылке).
Результаты тестирования
В таблице ниже представлены замеры скорости построения шаблона с использованием 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.
GPU ускорение работает не на всех android устройствах