Как обработать распознавание лица (обрабатывается через вызов API) без задержки в потоке веб-камеры - PullRequest
0 голосов
/ 15 октября 2018

Я использую флеш-флеш-фреймворк, библиотеки opencv и face_recognition для распознавания лиц.Я пытаюсь запустить веб-камеру, используя python -opencv, и если в кадре обнаружено лицо, оно отправляется на сервер, где обрабатывается кадр и выполняется распознавание человека, но этот вызов API с ответом занимает около 0,3секунд, эта задержка вызывает задержку в плавном движении веб-камеры.

я хотел бы, чтобы веб-камера работала непрерывно, а при обнаружении лица в кадре она не должна блокировать свободный поток веб-камеры.потоковая передача вместо этого должна обрабатываться отдельно в фоновом режиме, пока основной поток работает с веб-камерой.

Любая помощь в этом отношении очень ценится

1 Ответ

0 голосов
/ 15 октября 2018

Есть несколько вещей, которые вы можете сделать, чтобы решить эту проблему,

  1. Не передавайте каждый кадр в обнаружение, есть вероятность, что вы используете хорошую веб-камеру, которая дает вам 30FPSили выше, вам не нужен такой высокий FPS для обнаружения в реальном времени, что вы могли бы сделать, это, отправлять только каждый 3-й или 4-й кадр для обнаружения, а для других кадров просто перетянуть старые блоки в поток, это дастдостаточно точные прогнозы

  2. Переключение вашей модели на графический процессор, face_recognition дает вам выбор между использованием процессора и графического процессора (только cnn), переключение его на любой доступный графический процессор ускорит процесс

  3. Измените размер входного кадра, вам действительно не нужен HD-кадр 1080p для обнаружения кадров, подойдет и что-нибудь меньшее, например 480p (хотя это полностью зависит от вашей проблемы), измените размер вашегокадрируйте и делайте его меньше, чем меньше матрица ввода, тем быстрее это будет

  4. Векторизация ваших операций вместо использованияAPI-интерфейс face_recognition по умолчанию для сравнения идентификаторов. Я предлагаю вам кодировать векторизованную версию сравнений в numpy, которая вычисляет расстояние L2 в больших матрицах, вместо того, чтобы делать это в цикле, это сэкономит много вычислительных затрат.

  5. Ограничить количество сравнений на человека.Вы можете иметь 10 вложений человека A и 10 человек B, находя расстояние неизвестных вложений с каждым из этих 20 вложений, могут быть вычислительно дорогими, прибегать к выполнению чего-то вроде, брать средние вложения или центроиды этих вложений,группируя их

...