Пользовательский плагин gstreamer для nvidia gpu - PullRequest
0 голосов
/ 11 июля 2020

Я хочу разработать плагин gstreamer, который может использовать ускорение, обеспечиваемое графическим процессором видеокарты (NVIDIA RTX2xxx). Цель состоит в том, чтобы иметь быстрый конвейер gstreamer, который обрабатывает видеопоток, включая настраиваемый фильтр.

После двух дней поиска в Google я не могу найти ни одного примера или подсказки.

  1. Одна из лучших найденных альтернатив - использование «nvivafilter», передача модуля cuda в качестве аргумента. Однако нигде не объясняется, как установить этот плагин, и нет примеров. Хуже всего то, что это может быть указано c для оборудования Nvidia Jetson.

  2. Другой альтернативой кажется использование gstreamer внутри opencv python скрипта. Но это означает смесь, которую я не знаю, как влияет на производительность.

  3. Этот gstreamer учебник рассказывает о нескольких библиотеках. Но кажется устаревшим и не предоставляет подробностей.

  4. RidgeRun, похоже, имеет что-то похожее на «nvivafilter», но не FOSS.

Кто-нибудь пример или предложение, как действовать.

1 Ответ

1 голос
/ 12 июля 2020

Я предлагаю вам начать с установки DS 5.0 и изучить представленные примеры и приложения. Он построен на Gstreamer. Deepstream Руководство по установке

Установка проста. Вы найдете построенные собственные парсеры. Вам потребуется установить следующее: Ubuntu 18.04, GStreamer 1.14.1, NVIDIA driver 440 или новее, CUDA 10.2, TensorRT 7.0 или новее.

Вот пример запуска приложения с 4 потоками. deepstream-app -c /opt/nvidia/deepstream/deepstream-5.0/samples/configs/deepstream-app/source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt

Преимущество DS в том, что весь конвейер видео оптимизирован для GPU, включая декодирование и предварительную обработку. Вы всегда можете запускать Gstreamer только вместе opencv, по моему опыту, это неэффективная реализация.

Создание собственных парсеров: Парсеры необходимы для преобразования необработанных данных Tensor из вывод относительно (x, y) расположения ограничивающих рамок вокруг обнаруженного объекта. Этот алгоритм постобработки будет зависеть от архитектуры обнаружения. При использовании Deepstream 4.0, Transfer Learning Toolkit 1.0 и TensorRT 6.0: следуйте инструкциям в репозитории https://github.com/NVIDIA-AI-IOT/deepstream_4.x_apps

При использовании Deepstream 5.0, Transfer Learning Toolkit 2.0 и TensorRT 7.0: продолжайте следовать инструкции от https://github.com/NVIDIA-AI-IOT/deepstream_tlt_apps

Ресурсы:

  1. Стартовая страница: https://developer.nvidia.com/deepstream-sdk
  2. Загрузка Deepstream и ресурсы: https://developer.nvidia.com/deepstream-getting-started
  3. Краткое руководство пользователя: https://docs.nvidia.com/metropolis/deepstream/dev-guide/index.html
  4. Интеграция модели TLT с Deepstream SDK: https://github.com/NVIDIA-AI-IOT/deepstream_tlt_apps
  5. Deepstream Devblog: https://devblogs.nvidia.com/building-iva-apps-using-deepstream-5.0/
  6. Руководство плагина: https://docs.nvidia.com/metropolis/deepstream/plugin-manual/index.html
  7. Deepstream Примечания к выпуску 5.0: https://docs.nvidia.com/metropolis/deepstream/DeepStream_5.0_Release_Notes.pdf
  8. Примечания к выпуску Transfer Learning Toolkit v2.0: https://docs.nvidia.com/metropolis/TLT/tlt-release-notes/index.html
  9. Transfer Learning Toolkit v2.0 Получение Руководство по началу работы: https://docs.nvidia.com/metropolis/TLT/tlt-getting-started-guide/index.html
  10. Документация Metropolis: https://docs.nvidia.com/metropolis/
  11. TensorRT: https://developer.nvidia.com/tensorrt
  12. Документация TensorRT ция: https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html
  13. TensorRT Devblog: https://devblogs.nvidia.com/speeding-up-deep-learning-inference-using-tensorrt/
  14. Программное обеспечение с открытым исходным кодом TensorRT: https://github.com/NVIDIA/TensorRT
  15. https://gstreamer.freedesktop.org/documentation/base/gstbasetransform.html?gi-language=cGood удачи.
...