Использование 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 устройствах