Выпуск Savant 0.2.7, фреймворка компьютерного зрения и глубокого обучения

Опубликован выпуск Python-фреймворка Savant 0.2.7, упрощающего использование 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.

Savant 0.2.7 — это последний релиз с изменением функциональности в ветке 0.2.X. Следующие релизы в ветке 0.2.X будут включать только исправления ошибок. Разработка новых функций будет вестись в ветке 0.3.X, основанной на DeepStream 6.4. Данная ветка не будет поддерживать семейство устройств Jetson Xavier, поскольку компания NVIDIA не поддерживает их в DS 6.4.

Основные новшества:

  • Новые примеры использования:
    • Пример работы с моделью детекции на основе трансформера RT-DETR;
    • CUDA-постпроцессинг с помощью CuPy для YOLOV8-Seg;
    • Пример интеграции PyTorch CUDA в пайплайн Savant;
    • Демонстрация работы с ориентированными объектами.

  • Новые функции:
    • Интеграция с Prometheus. Конвейер может экспортировать метрики выполнения в Prometheus и Grafana для мониторинга и отслеживания производительности. Разработчики могут объявить пользовательские метрики, экспортируемые вместе с системными метриками.
    • Буферный адаптер — реализует постоянный транзакционный буфер на диске для данных, перемещающихся между адаптерами и модулями. С его помощью можно разрабатывать высоконагруженные конвейеры, непредсказуемо потребляющие ресурсы и выдерживающие всплески трафика. Адаптер экспортирует в Prometheus свои данные об элементах и размерах.
    • Режим компиляции моделей. Модули теперь могут компилировать свои модели в TensorRT без запуска конвейера.
    • Обработчик события shutdown в PyFunc. Этот новый API позволяет корректно обрабатывать операции завершения работы конвейера, освобождая ресурсы и уведомляя сторонние системы о завершении работы.
    • Фильтрация кадров на входе и выходе. По умолчанию конвейер принимает все кадры, содержащие видеоданные. С помощью фильтрации на входе и выходе разработчики могут фильтровать данные, чтобы исключить их обработку.
    • Постобработка модели на GPU. Благодаря новой функции разработчики могут получать доступ к выходным тензорам модели непосредственно из памяти GPU, не загружая их в память CPU и обрабатывать их с помощью CuPy, TorchVision или OpenCV CUDA.
    • Функции представления памяти GPU. В этом выпуске мы предоставили функции для преобразования буферов памяти между OpenCV GpuMat, GPU-тензорами PyTorch и тензорами CuPy.
    • API доступа к статистике использования очередей пайплайна. Savant позволяет добавлять очереди между PyFunc для реализации параллельной обработки и буферизирования обработки. Добавленный API предоставляет разработчикам доступ к очередям, развернутым в конвейере, и позволяет запрашивать их использование.

В следующем выпуске (0.3.7) планируется перейти на DeepStream 6.4 без расширения функциональности. Идея в том, чтобы получить релиз, полностью совместимый с 0.2.7, но основанный на DeepStream 6.4 и улучшенной технологии, но без нарушений совместимости на уровне API.

Источник: http://www.opennet.ru/opennews/art.shtml?num=60570