Благодаря большому количеству отличных обновлений

Если вам интересно, почему команда Trueface в последнее время ведет себя так тихо, то это потому, что команда инженеров усердно работала над выпуском версии 1.0 нашего флагманского SDK. Это крупное обновление содержит критические изменения для повышения точности, скорости и общей архитектуры SDK. Этот пост в блоге посвящен упомянутым улучшениям. Мы рассмотрим:

  • Совершенно новая модель распознавания лиц: TFV6.
  • Новый бэкэнд TensorRT для логического вывода GPU
  • Переход на SDK без сохранения состояния
  • Улучшенная пассивная подделка
  • Поддержка динамической библиотеки

Давайте погрузимся прямо в!

TFV6: наша самая точная модель для лиц в масках

Мы выпустили новую модель распознавания лиц TFV6, которая является нашей самой точной моделью для изображений лиц в масках. Эта модель имеет сравнимое время вывода ЦП и использование памяти с нашей моделью TFV5, но может похвастаться 24-процентным улучшением точности для изображений с замаскированным зондом, как сообщает NIST FRVT.

Выберите использование этой модели в ситуациях, когда предполагается, что изображение зонда содержит замаскированное лицо (для поиска от 1 до N) или когда одно или оба изображения лица замаскированы (для сравнений от 1 до 1).

Достигните более низкой задержки и более высокой пропускной способности с помощью TensorRT

Пакет SDK для графического процессора был изменен для использования TensorRT для логических выводов. TensorRT — это высокопроизводительная платформа логического вывода на графическом процессоре, оптимизированная для графических процессоров NVIDIA. Эта новая серверная опция не только значительно снижает задержку при увеличении пропускной способности, но также предоставляет пользователю больше возможностей для управления своим дизайном, например позволяя пользователю выбирать уровень точности, оптимальный размер пакета и максимальное использование памяти графического процессора.

На приведенных выше изображениях показано сравнение времени создания шаблона и использования памяти графического процессора для нашей наиболее точной модели распознавания лиц с предыдущей и новой версиями SDK. Как видно, новый бэкенд TensorRT (обозначенный SDK V1) имеет меньшую задержку/более высокую пропускную способность и использует меньше памяти графического процессора для логических выводов. Когда используется пакетная обработка, мы можем достичь среднего времени вывода менее миллисекунды. Обратитесь к странице тесты для полной разбивки производительности.

Этот бэкэнд доступен для TFV6 и более новых моделей. Стоит отметить, что генерация файла движка TensorRT при первом запуске логического вывода может занять до одной минуты или больше (подробнее здесь).

Архитектура SDK: переход к безгражданству

Это, пожалуй, самое значительное изменение, внесенное в наш API на сегодняшний день. SDK был переработан для удаления состояния. В предыдущей архитектуре SDK внутренне хранил изображение, и любые последующие операции логического вывода применялись к указанному изображению. Эта конструкция имела серьезные ограничения и заставляла пользователя помнить о безопасности потоков. В новом дизайне SDK больше не хранит изображения внутри; вместо этого предварительно обработанное изображение должно быть передано каждой функции логического вывода.

Применительно к SDK API это означает, что Trueface::SDK::setImage() заменено на Trueface::SDK::preprocessImage(), которое возвращает Trueface::TFImage, содержащее предварительно обработанное изображение CPU или GPU. Затем этот Trueface::TFImage должен быть передан различным функциям логического вывода.

Удалив состояние из SDK, CPU SDK теперь полностью потокобезопасен. Кроме того, пользователь SDK теперь может использовать более универсальные шаблоны проектирования. Например, пользователь может потреблять видео из одного потока, вызывать метод Trueface::SDK::preprocessImage и ставить в очередь полученный результат Trueface::TFImage, а затем из отдельного потока использовать предварительно обработанные изображения из очереди для выполнения логического вывода. Обратитесь к примерам кода C++ и Python, чтобы продемонстрировать, как использовать этот новый API.

Улучшенная модель пассивной подделки

Мы улучшили нашу модель пассивной подделки в SDK. Напоминаем, что пассивная подделка способна обнаруживать атаки на презентации, например, когда злонамеренный пользователь держит изображение лица или записывает лицо на камеру, пытаясь получить доступ к системе. В отличие от активной подделки, которая требует нескольких входных изображений и определенных действий со стороны конечного пользователя, для пассивной подделки требуется только одно неограниченное входное изображение. Добавьте пассивную подделку в конвейер распознавания лиц, чтобы защититься от атак на презентации.

Поддержка динамической библиотеки

Некоторые из вас просили об этом, и мы послушались! SDK теперь поставляется как статическая и динамическая библиотека для Linux. Связывание с динамической библиотекой позволяет заменить SDK обновленной версией без необходимости повторной компиляции приложения (при условии, что в API не было критических изменений).

Хотя обновление с версии 0 до версии 1 потребует от вас определенных усилий, мы, безусловно, надеемся, что теперь вы понимаете, почему оно того стоит. Если вы являетесь существующим клиентом и вам требуется поддержка в процессе перехода, отправьте запрос в службу поддержки здесь, и наша команда инженеров будет рада помочь.