DeepStream Python 应用程序
此存储库包含 Python 绑定和DeepStream SDK的示例应用程序。
支持的SDK版本:6.0
新:绑定源以及构建说明现在可以在绑定下获得!
从发布部分下载包含绑定和示例应用程序的最新发布包。
请在DeepStream SDK 论坛上报告任何问题或错误。这使 DeepStream 社区能够在中心位置寻求帮助。
Python 绑定
DeepStream 管道可以使用 Gst Python(GStreamer 框架的 Python 绑定)构建。为了访问 DeepStream 元数据,Python绑定作为此存储库的一部分提供。该模块是使用Pybind11生成的。
这些绑定支持元数据结构和函数的 Python 接口。HOW-TO 指南中记录了该接口的用法,并在示例应用程序中进行了演示
示例应用程序
此处提供的示例应用程序演示了如何使用 Python 处理 DeepStream 管道。
示例应用程序需要元数据绑定才能工作。要运行示例应用程序或编写您自己的应用程序,请参阅HOW-TO 指南
- deepstream-test1 -- 4 类对象检测管道
- deepstream-test2 -- 4 类对象检测、跟踪和属性分类管道
- deepstream-test3 -- 执行 4 类对象检测的多流管道
- deepstream-test4 -- 用于将分析结果发送到云的 msgbroker
- deepstream-imagedata-multistream -- 可访问图像缓冲区的多流管道
- deepstream-ssd-parser -- 通过 Triton 服务器进行 SSD 模型推断,并在 Python 中进行输出解析
- deepstream-test1-usbcam -- 带有 USB 摄像头输入的 deepstream-test1 管道
- deepstream-test1-rtsp-out -- 具有 RTSP 输出的 deepstream-test1 管道
- deepstream-opticalflow——光流和可视化管道,流向量在 NumPy 数组中返回
- deepstream-segmentation -- 分割和可视化管道,在 NumPy 数组中返回分割掩码
- deepstream-nvdsanalytics -- 带有分析插件的多流管道
- runtime_source_add_delete -- 在运行时添加/删除源流
- deepstream-imagedata-multistream-redaction - 具有面部检测和编辑的多流管道(新)
- deepstream-rtsp-in-rtsp-out -- 具有 RTSP 输入/输出的多流管道(新)
应用程序下的每个应用程序的子目录中提供了详细的应用程序信息。
用 Python 编写 DeepStream 应用程序
本指南提供了使用 Python 进行 DeepStream 应用程序开发的资源。
先决条件
- Ubuntu 18.04
- DeepStream SDK 6.0或更高版本
- Python 3.6+
- Gst Python v1.14.5
Gst python 应该已经安装在 Jetson 上。
如果缺少,请按照以下步骤安装:(加sudo根据你的设备状态)$ sudo apt-get install python-gi-dev $ export GST_LIBS="-lgstreamer-1.0 -lgobject-2.0 -lglib-2.0" $ export GST_CFLAGS="-pthread -I/usr/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include" $ git clone https://github.com/GStreamer/gst-python.git $ cd gst-python $ git checkout 1a8f48a $ ./autogen.sh PYTHON=python3 $ ./configure PYTHON=python3 $ make $ sudo make install
具体实操流程如下
ljx@ljx-desktop:/opt/nvidia/deepstream/deepstream-6.0/sources/apps/deepstream_python_apps$ sudo git clone https://github.com/GStreamer/gst-python.git cloning into 'gst-python'... remote: Enumerating objects: 9302, done. remote: Counting objects: 100% (82/82), done. remote: Compressing objects: 100% (32/32), done. remote: Total 9302 (delta 51), reused 81 (delta 50), pack-reused 9220 Receiving objects: 100% (9302/9302), 2.30 MiB | 133.00 KiB/s, done. Resolving deltas: 100% (6860/6860), done. ljx@ljx-desktop:/opt/nvidia/deepstream/deepstream-6.0/sources/apps/deepstream_python_apps$ ls 3rdparty apps bindings docs FAQ.md gst-python HOWTO.md LICENSE notebooks README.md tests THIRD_PARTY_LICENSE ljx@ljx-desktop:/opt/nvidia/deepstream/deepstream-6.0/sources/apps/deepstream_python_apps$ cd gst-python/ ljx@ljx-desktop:/opt/nvidia/deepstream/deepstream-6.0/sources/apps/deepstream_python_apps/gst-python$ ls AUTHORS ChangeLog copYING examples gi gst-python.doap hooks meson.build meson_options.txt NEWS old_examples plugin README RELEASE testsuite Todo ljx@ljx-desktop:/opt/nvidia/deepstream/deepstream-6.0/sources/apps/deepstream_python_apps/gst-python$ git checkout 1a8f48a fatal: detected dubIoUs ownership in repository at '/opt/nvidia/deepstream/deepstream-6.0/sources/apps/deepstream_python_apps/gst-python' To add an exception for this directory, call: git config --global --add safe.directory /opt/nvidia/deepstream/deepstream-6.0/sources/apps/deepstream_python_apps/gst-python ljx@ljx-desktop:/opt/nvidia/deepstream/deepstream-6.0/sources/apps/deepstream_python_apps/gst-python$ ./autogen.sh PYTHON=python3 -bash: ./autogen.sh: No such file or directory ljx@ljx-desktop:/opt/nvidia/deepstream/deepstream-6.0/sources/apps/deepstream_python_apps/gst-python$ ls AUTHORS ChangeLog copYING examples gi gst-python.doap hooks meson.build meson_options.txt NEWS old_examples plugin README RELEASE testsuite Todo ljx@ljx-desktop:/opt/nvidia/deepstream/deepstream-6.0/sources/apps/deepstream_python_apps/gst-python$ cd .. ljx@ljx-desktop:/opt/nvidia/deepstream/deepstream-6.0/sources/apps/deepstream_python_apps$ git config --global --add safe.directory /opt/nvidia/deepstream/deepstream-6.0/sources/apps/deepstream_python_apps/gst-python ljx@ljx-desktop:/opt/nvidia/deepstream/deepstream-6.0/sources/apps/deepstream_python_apps$ cd gst-python/ ljx@ljx-desktop:/opt/nvidia/deepstream/deepstream-6.0/sources/apps/deepstream_python_apps/gst-python$ ls AUTHORS ChangeLog copYING examples gi gst-python.doap hooks meson.build meson_options.txt NEWS old_examples plugin README RELEASE testsuite Todo ljx@ljx-desktop:/opt/nvidia/deepstream/deepstream-6.0/sources/apps/deepstream_python_apps/gst-python$ git checkout 1a8f48a fatal: Unable to create '/opt/nvidia/deepstream/deepstream-6.0/sources/apps/deepstream_python_apps/gst-python/.git/index.lock': Permission denied ljx@ljx-desktop:/opt/nvidia/deepstream/deepstream-6.0/sources/apps/deepstream_python_apps/gst-python$ sudo git checkout 1a8f48a Note: checking out '1a8f48a'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (Now or later) by using -b with the checkout command again. Example: git checkout -b <new-branch-name> HEAD is Now at 1a8f48a Release 1.14.5 ljx@ljx-desktop:/opt/nvidia/deepstream/deepstream-6.0/sources/apps/deepstream_python_apps/gst-python$ sudo git checkout -b 1.14.5 Switched to a new branch '1.14.5' ljx@ljx-desktop:/opt/nvidia/deepstream/deepstream-6.0/sources/apps/deepstream_python_apps/gst-python$ ls acinclude.m4 autogen.sh common configure.ac env gi hooks meson.build NEWS plugin README scripts Todo AUTHORS ChangeLog config.h.meson copYING examples gst-python.doap Makefile.am meson_options.txt old_examples pygst.py.in RELEASE testsuite ljx@ljx-desktop:/opt/nvidia/deepstream/deepstream-6.0/sources/apps/deepstream_python_apps/gst-python$ sudo ./autogen.sh PYTHON=python3
https://github.com/NVIDIA-AI-IOT/deepstream_python_apps/releases
下面的问题下载安装上面的文件
Traceback (most recent call last): File "main.py", line 43, in <module> import pyds ModuleNotFoundError: No module named 'pyds'
sudo wget https://github.com/NVIDIA-AI-IOT/deepstream_python_apps/releases/download/v1.1.0/pyds-1.1.0-py3-none-linux_aarch64.whl --2022-08-24 14:53:57-- https://github.com/NVIDIA-AI-IOT/deepstream_python_apps/releases/download/v1.1.0/pyds-1.1.0-py3-none-linux_aarch64.whl Resolving github.com (github.com)... 52.74.223.119, 140.82.112.3, 192.30.253.112 Connecting to github.com (github.com)|52.74.223.119|:443... Failed: Connection timed out. Connecting to github.com (github.com)|140.82.112.3|:443... Failed: Connection timed out. Connecting to github.com (github.com)|192.30.253.112|:443... Failed: Connection timed out. retrying. --2022-08-24 15:00:30-- (try: 2) https://github.com/NVIDIA-AI-IOT/deepstream_python_apps/releases/download/v1.1.0/pyds-1.1.0-py3-none-linux_aarch64.whl Connecting to github.com (github.com)|52.74.223.119|:443... Failed: Connection timed out. Connecting to github.com (github.com)|140.82.112.3|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/218388521/9bdae9e7-d592-421a-b525-e0d00bd85cbb?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CsveH53A%2F20220824%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220824T070241Z&X-Amz-Expires=300&X-Amz-Signature=41d2a12f8b64aa475617a0f4dd1da2cfb89d89d58ba911bf0b2699a88ae11f28&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=218388521&response-content-disposition=attachment%3B%20filename%3Dpyds-1.1.0-py3-none-linux_aarch64.whl&response-content-type=application%2Foctet-stream [following] --2022-08-24 15:02:41-- https://objects.githubusercontent.com/github-production-release-asset-2e65be/218388521/9bdae9e7-d592-421a-b525-e0d00bd85cbb?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CsveH53A%2F20220824%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220824T070241Z&X-Amz-Expires=300&X-Amz-Signature=41d2a12f8b64aa475617a0f4dd1da2cfb89d89d58ba911bf0b2699a88ae11f28&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=218388521&response-content-disposition=attachment%3B%20filename%3Dpyds-1.1.0-py3-none-linux_aarch64.whl&response-content-type=application%2Foctet-stream Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.109.133, 185.199.110.133, 185.199.108.133, ... Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.109.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 1783824 (1.7M) [application/octet-stream] Saving to: ‘pyds-1.1.0-py3-none-linux_aarch64.whl’ pyds-1.1.0-py3-none-linux_aarch64.whl 100%[=====================================================================================================>] 1.70M 20.7KB/s in 77s 2022-08-24 15:04:00 (22.7 KB/s) - ‘pyds-1.1.0-py3-none-linux_aarch64.whl’ saved [1783824/1783824]
**1. Prerequisites # apt install -y git python-dev python3 python3-pip python3.6-dev python3.8-dev cmake g++ build-essential \ libglib2.0-dev libglib2.0-dev-bin python-gi-dev libtool m4 autoconf automake **2. Gst-python # cd /opt/nvidia/deepstream/deepstream/sources/apps/ # git clone https://github.com/NVIDIA-AI-IOT/deepstream_python_apps.git # cd deepstream_python_apps/ # git submodule update --init # apt-get install --reinstall ca-certificates # cd 3rdparty/gst-python/ # ./autogen.sh # make # make install **3. install pyds # cd deepstream_python_apps/bindings/ # mkdir build # cd build # cmake .. # make # pip3 install ./pyds-1.1.0-py3-none-linux_x86_64.whl **4. run sample # cd deepstream_python_apps # mv apps/* ./ # cd deepstream-test1/ # python3 deepstream_test_1.py ../../../../samples/streams/sample_qHD.h264