Кейс: автотест нагрузки системы распознавания лиц

Источник: Блог IBS

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

Я — Алексей Мищенко, тружусь старшим тестировщиком в IBS. Почему я решил сегодня об этом поговорить? Система распознавания лиц принимает непрерывный видеопоток и создаёт базы, в которых хранится огромное количество данных о лицах людей. Как убедиться, что однажды «река не выйдет из берегов»? Проводить нагрузочное тестирование.

На что я хочу обратить внимание из своего опыта:

  • основные инструменты, которые использовал для нагрузочного тестирования системы распознавания лиц — FFmpeg и PowerShell,
  • rtsp-протокол, автоматизация запуска трансляции видео по этому протоколу для эмуляции видеокамер, детали процесса, создание конфигурационного файла.

Система идентификации лиц: как это работает

Распознавать изображения людей с видеокамер обучает искусственный интеллект. Лицо человека имеет уникальные черты. На их анализ и «натаскивают» нейросеть. Технология распознавания лиц использует две. Сверившись с хранилищем данных, они определяют, кто попал в объектив камеры. Как это происходит?

Первая нейросеть («выравниватель» или «aligner») умеет находить лица на фотографиях и видео и «выравнивать» их, если они попали в кадр под углом или в профиль (иначе распознать будет сложно). Для этого искусственный интеллект преобразует изображение так, чтобы основные точки (глаза, нос и рот) находились в определённом положении, как будто человек смотрел непосредственно в видеокамеру.

Вторая нейросеть («распознаватель» или «recognizer») берёт полученную картинку и создаёт вектор: присваивает числа характеристикам определяемых лиц. На выходе каждое из них – цифровой набор.

А дальше система распознавания лиц сверяет вектор с похожими «числовыми отпечатками» из баз данных. Чем меньше количество расхождений, тем больше вероятность верификации.

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

Несмотря на это система распознавания лиц широко применятся во многих странах мира.  В России в число лидеров в области решений для видеоаналитики на основе биометрической идентификации входят такие компании, как NTechLab, Sensemaking Lab, VisionLabs и группа ЦРТ.

Нагрузочное тестирование: выбираем цель

Вот несколько вариантов моделирования работы, исходя из того, какую цель преследует тестирование:

  • стабильный и плавный рост количества видеокамер,
  • непрогнозируемое, «взрывное» увеличение числа камер,
  • растёт количество объектов в кадре,
  • ухудшается качество изображения, поступающего с видеокамер.

Наша задача — автоматизация запуска процесс вещания по стриминговому протоколу rtsp. Его назначение — трансляция данных мультимедиа, управление ею удалённо с сервера путём ряда команд. Rtsp-протокол позволяет начать передачу, остановить, поставить на паузу, а также получить доступ к данным за определённый отрезок времени.

Какой инструментарий используем

FFmpeg

Мощный кроссплатформенный набор библиотек, позволяющий совершать почти любые действия (записывать, конвертировать, транслировать) с видео практически любого формата.

FFmpeg-инструмент предоставляет возможность кодирования/декодирования, а также мультиплексирования/демультиплексирования: способен собирать несколько видеопотоков в один и транслировать через один канал связи. Или совершать обратные действия.

Основные компоненты FFmpeg:

  • Утилита командной строки для конвертации мультимедийных данных из одного формата в другой.
  • Ffserver — потоковый сервер для получения медиафайлов и раздачи пользователям на других машинах.

Многие программы могут не поддерживать тот или иной формат и часто «сбоят». Данное решение поддерживает все кодеки и работает практически безотказно. Вот почему я выбрал ffmpeg-инструмент и о других вариантах для нагрузочного тестирования системы даже не думал.

PowerShell

Инструмент для автоматизации задач, представляющий собой оболочку командной строки и сопутствующий язык сценариев. Изначально создан как компонент Windows. Но затем был выпущен открытый исходный код, язык стал кроссплатформенным, и сегодня его можно применять для macOS и Linux.

Чем привлекательно это решение для тестирования? В инструменте реализовано всё лучшее из других оболочек. Многие из них принимают и возвращают лишь текст, PowerShell — объекты .NET. Всё дело в том, что решение изначально было построено на базе .NET. Это даёт следующие преимущества:

  • надёжность журнала командной строки,
  • можно заполнять, нажимая клавишу Tab и подставляя команды,
  • поддерживать псевдонимы команд и параметров,
  • создавать конвейер для объединения команд,
  • пользоваться системой справки.

Учитывая мои цели, из множества альтернатив я сделал выбор в пользу этого инструмента, главным образом, по следующей причине. Он позволяет считывать, какую длительность имеет видеофайл, и использовать это для завершения проигрываемого видеопотока по окончании видео. То есть с истечением времени процесс завершится «автоматом».  Почему это важно? Так мы избежим ситуации, когда висящие бесконечные видеопотоки и большое количество работающих сервисов «съедают» «оперативку» и без лишней необходимости нагружают сервер вещания.

Изначально я написал код посредством *.bat файлов (с вызовом PowerShell). Но решили остановиться только на одном инструменте. У заказчика было требование запускать на Windows Server — логично, что я переписал на PowerShell, который уже встроен туда (хотя в целом можно было «перекатать» на любой язык).

Автоматизируем запуск вещания

Что нужно обязательно учесть и проверить до запуска процесса:

  • сколько памяти будет расходоваться, и какова нагрузка на процессор,
  • количество кадров, которые будут обрабатываться,
  • возможен ли перегрев сервера в случае большого видеопотока,
  • как быстро будет отзываться база данных в ситуации постоянного увеличения числа запросов,
  • когда в кадре много объектов, сколько из них будет пропущено.

Что представляет собой автоматизация запуска потока видео:

PowerShell проверяет, есть ли в папке видеофайлы, и создаёт конфигурационный файл для вещания посредством ffserver (с номером порта, настроек качества файла и другими).

Второй PowerShell-скрипт определяет, какую продолжительность имеет видеофайл, и автоматически запускает ffmpeg-инструмент для передачи его в rtsp-протокол. Как мы уже говорили выше, по истечении времени процесс также автоматически прекращается.

Вот как это выглядит на схеме:

PowerShell

Получаем результаты

Это теория. А что на деле? Привожу реальные показатели автоматизации нагрузочного тестирования системы для одного из заказов, которые снимал сам. Ниже хорошо видно, что система нагружается в пределах нормального по каждой из снимаемых метрик (обозначены разными цветами).

PowerShell

PowerShell

PowerShell

Тестирование: итоги

Выбранные инструменты дают возможность преобразовывать видеофайлы для передачи в rtsp-протокол и эмулировать видеокамеры. Число файлов в одной папке позволяет регулировать количество видеопотоков. Ничего менять не понадобилось: оптимизация системы меня устроила.

Каждый видеофайл доступен для последующего тестирования. Возможность передавать прежние записи, которые сохраняются, делает систему распознавания лиц более функциональной.

Могу с уверенностью сказать, что с данными решениями тестирование нагрузки становится удобнее и эффективнее.

Сайт IBS использует cookie. Это дает нам возможность следить за корректной работой сайта, а также анализировать данные, чтобы развивать наши продукты и сервисы. Посещая сайт, вы соглашаетесь с обработкой ваших персональных данных.