Опубликован выпуск Python-фреймворка Savant 0.2.5, упрощающего использование NVIDIA DeepStream для решения задач, связанных с машинным обучением. Фреймворк берет на себя всю сложную работу с GStreamer или FFmpeg, позволяя сосредоточиться на построении оптимизированных конвейеров вывода с помощью декларативного синтаксиса (YAML) и функций Python. Savant позволяет создавать конвейеры (pipeline), которые одинаково работают как на ускорителях в датацентре (NVIDIA Turing, Ampere, Hopper), так и на edge-устройствах (NVIDIA Jetson NX, AGX Xavier, Orin NX, AGX Orin, New Nano). С помощью Savant можно легко обрабатывать несколько видеопотоков одновременно, быстро создавать готовые к рабочим применениям конвейеры видеоаналитики, использующие NVIDIA TensorRT. Код проекта распространяется под лицензией Apache 2.0.
Основные новшества:
- Задействован NVIDIA DeepStream 6.3, с исправлением ошибок и улучшениями в части кодирования видео;
- Улучшения в инструментах разработчика:
- Поддержка OpenTelemetry для журналирования обработки каждого кадра;
- Горячая перезагрузка изменённого кода Python в режиме разработки, что ускоряет процесс работы над конвейером;
- Синхронный и асинхронный Client SDK для реализации тестов и собственных адаптеров доступа к данным;
- Улучшенное логгирование с поддержкой выделения цветом.
- Улучшения в адаптерах:
- Адаптер для обработки данных с использованием Kafka/Redis, предназначенный для реализации конвейеров с высокой нагрузкой, работающих в режиме отложенной обработки;
- Адаптер для тестирования производительности конвейера (Multi-Stream Source Test Adapter);
- Python SDK для разработки собственных адаптеров;
- В адаптере трансляции видео по RTSP реализована возможность одновременной обработки нескольких потоков;
- В адаптере доступа к камерам GigE Vision появилась оддержка HEVC-кодирования.
- Новый примеры и демонстрации:
- Инстанс-сегментация в реальном времени (100+ FPS) на базе YOLOV8M-Seg;
- Ре-идентификация по лицу с помощью YOLOV8-Face, AdaFace и HNSWlib;
- Прогнозирование пола и возраста на базе YOLOV8-Face, MobileNet V2;
- Улучшение примера Traffic Meter – добавлен детектор на базе YOLO8S, теперь можно выбрать один детектор из трёх – PeopleNet, YOLOV8S, YOLOV8M.
- Вспомогательные примеры: использование OpenTelemetry; использование Client SDK; простой конвейер для определения совместимости RTSP-камеры с Savant; пример использования адаптеров Kafka/Redis.
- Закрыто 14 отчётов об ошибках.
- Выполнен переход с протокола передачи данных на базе Apache AVRO на протокол на базе Rust Rkyv (позволило уменьшить GIL contention, увеличить скорость сериализации и десериализации);
- Добавлена поддержка групп элементов, позволяющих комбинировать вариации обработки данных в рамках одного конвейера;
- Реализовано продвинутое конфигурирование логгирования с поддержкой разных уровней для различных компонентов;
- Добавлен программный кодировщик H.264 для карт A100, V100, A40, Nvidia Jetson Orin Nano;
- Добавлен детектор перегрузки конвейера.