После месяца напряженной работы мы выпустили новую версию Savant (0.2.4), с новыми функциями и примерами использования.

Минутка маркетинга:

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

Savant построен на базе DeepStream и предоставляет высокоуровневый уровень абстракции для быстрой разработки конвейеров компьютерного зрения. Он отличается простотой использования, гибкостью и масштабируемостью.

Новые демонстрационные конвейеры

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

  • Пример предсказания возраста/пола, демонстрирующий использование YoloV5-Face, работу с пользовательской атрибутивной моделью, предсказывающей возраст и пол, и аффинные преобразования в GPU на основе лицевых лэндмарок с помощью OpenCV-CUDA и Python;

  • Пример условного кодирования видео, демонстрирующий конвейер, который рисует на кадрах и кодирует видеопотоки по условию (в примере - только при обнаружении объектов моделью); показывает, как избежать нерационального использования вычислительных ресурсов, когда кадры требуются по определенному внешнему условию;

  • Пример обработки нескольких RTSP-потоков, демонстрирующий простой конвейер, обрабатывающий два RTSP-потока; поскольку Savant сильно отличается от того, что ожидают пользователи в отношении динамической обработки потоков, мы реализовали простой конвейер, обрабатывающий несколько потоков одновременно, чтобы показать, как это работает.

Новые возможности

  • Условная отрисовка и кодирование, позволяющие снизить трафик и рационально использовать ресурсы CPU/GPU;

  • Новый адаптер источника RTSP на базе FFmpeg, который работает гораздо лучше, чем использующий GStreamer, особенно в случае, когда потоки включают B-кадры;

  • Новый универсальный адаптер на базе FFmpeg, который может работать с любыми входными данными, поддерживаемыми FFmpeg.

Обеспечение качества

  • Теперь мы отслеживаем возможные регрессии производительности при объединении каждого тикета; наша идея состоит в том, чтобы сделать Savant быстрее, а не медленнее, поэтому мы хотим отслеживать, как новый влияет на производительность;

  • Продолжаем перенос внутренних компонентов Savant с Python на Rust: мы реализовали библиотеку основной функциональности на Rust, где тщательно тестируем код, и постепенно заменяем компоненты на основе Python на компоненты на основе Rust, чтобы обеспечить работу Savant без GIL, где это возможно, и высокое качество кода. Это долгий путь; в будущем 0.2.5 мы представим больше интеграций без GIL.

Документация

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

  • тщательно документировали адаптеры для работы с данными;

  • показали, как использовать препроцессинг изображений в общей документации и на полнофункциональном примере (предсказание возраста/пола);

  • создали новый раздел по настройке среды разработки в VS Code.

Устранение ошибки в DeepStream 6.2

Для нас загадка как Nvidia тестирует DeepStream - объем ошибок, связанных с NVENC/NVDEC не стихает. В ходе подготовки релиза наша команда обнаружила ошибку в DeepStream 6.2. Она связана с функциональностью NVENC на устройствах Jetson: NVENC некорректно упорядочивает кодируемые кадры, если фактическая частота кадров в потоке не равна настроенной, что часто происходит при работе с потоками RTSP или при пропуске кадров по определенным условиям.

В Savant реализован обходной путь: мы переупорядочиваем кадры, когда это необходимо. Nvidia подтвердила найденную ошибку. Надеемся, что Nvidia исправит это в ближайшем релизе DeepStream.

Что планируется в 0.2.5

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

Присоединяйтесь к группе проекта в Discord.

Комментарии (2)


  1. AcckiyGerman
    17.07.2023 11:38

    Note: Savant does not support Jetson Nano (original device released at 2020) because Nvidia doesn't support newer JetPack versions for it.
    https://github.com/insight-platform/Savant

    Жаль


    1. ivankudryavtsev Автор
      17.07.2023 11:38

      Нам тоже жаль, однако Nvidia больше его не поддерживает.