Deepstream 6.1.1 以及 Python Binding Docker 安装
这里将详细介绍我们如何通过 docker 运行 Deepstream 6.1.1 以及 Python Binding。我们使用的硬件设备是 Jetson NX Dev Kit(系统通过SD Image 烧录)。
文章目录
Deepstream 6.1.1 docker中运行
首先,我们根据Nvidia Container 官网 把 image pull下来。
docker pull nvcr.io/nvidia/deepstream-l4t:6.1.1-samples
注意,这里我们选用的是Jetson对应的指令,image选用的是deepstream-l4t:6.1.1-samples
。
然后
xhost +
目的是Allow external applications to connect to the host's X display
。我们将docker run起来:
sudo docker run -it --rm --net=host --runtime nvidia -e DISPLAY=$DISPLAY -w /opt/nvidia/deepstream/deepstream-6.1 -v /tmp/.X11-unix/:/tmp/.X11-unix nvcr.io/nvidia/deepstream-l4t:6.1.1-samples
这里具体的指令含义就不解释了,参见官网链接。我们输入上面的指令后,便可以在terminal中进入这个docker。接下来输入
/opt/nvidia/deepstream/deepstream/user_additional_install.sh
这是官网中包含的一些额外依赖。我也不知道是否有用,但我还是装了一下。
然后,我们可以尝试运行一下 deepstream-app
,我的结果是可以运行起来,但由于是第一次生成engine,所以会比较慢:
cd /opt/nvidia/deepstream/deepstream-6.1/samples/configs/deepstream-app
deepstream-app -c source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt
接下来就是安装python bindings了。
Deepstream 6.1.1 Python Binding 安装与运行
在这之前,我安装了以下Deepstream 6.1.1 安装步骤官网上面的依赖,发现有的依赖并没有被安装过。这部分或许可以跳过,但我也附在这里了:
apt install \
libssl1.1 \
libgstreamer1.0-0 \
gstreamer1.0-tools \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
libgstreamer-plugins-base1.0-dev \
libgstrtspserver-1.0-0 \
libjansson4 \
libyaml-cpp-dev
一些预先需要安装的依赖
(注意,这里我们使用的是Ubuntu 20.04)
apt install python3-gi python3-dev python3-gst-1.0 python-gi-dev git python-dev \
python3 python3-pip python3.8-dev cmake g++ build-essential libglib2.0-dev \
libglib2.0-dev-bin libgstreamer1.0-dev libtool m4 autoconf automake libgirepository1.0-dev libcairo2-dev
安装,Compile Binding
cd /opt/nvidia/deepstream/deepstream/sources
git clone https://github.com/NVIDIA-AI-IOT/deepstream_python_apps
cd /opt/nvidia/deepstream/deepstream/sources/deepstream_python_apps/
git submodule update --init
apt-get install -y apt-transport-https ca-certificates -y
update-ca-certificates
cd 3rdparty/gst-python/
./autogen.sh
make
make install
cd /opt/nvidia/deepstream/deepstream/sources/deepstream_python_apps/bindings
mkdir build
cd build
cmake .. -DPYTHON_MAJOR_VERSION=3 -DPYTHON_MINOR_VERSION=8 \
-DPIP_PLATFORM=linux_aarch64 -DDS_PATH=/opt/nvidia/deepstream/deepstream/
make
pip3 install ./pyds-1.1.4-py3-none*.whl
python3 -m pip install --upgrade pip
Run deepstream-app Python Binding Example
cd /opt/nvidia/deepstream/deepstream/sources/deepstream_python_apps/apps/deepstream-test1
python3 deepstream_test_1.py /opt/nvidia/deepstream/deepstream-6.1/samples/streams/sample_qHD.h264
保存更新过的container到image中
最后,让我们来保存一下这个container,下次可以继续用。我们需要在系统环境中的terminal内输入(不是container中):
sudo docker commit 828d1bf2b3e7 ds6.1.1-py:v2
下一次再打开这个image只需要
sudo docker run -it --rm --net=host --runtime nvidia -e DISPLAY=$DISPLAY -w /opt/nvidia/deepstream/deepstream-6.1 -v /tmp/.X11-unix/:/tmp/.X11-unix ds6.1.1-py:v2
我们可以通过 sudo docker image ls
以及 sudo docker container ls
来查看保存的image以及正在运行的container。