对于熟悉C++的开发人员来说,前一篇文章将DeepStream Samples版容器的范例搬到本机上,再搭配Docker路径映射方式就能轻松搭建开发环境。但这种方式只适用于C/C++范例,并不适用于DeepStream的Python环境,因为还需要安装Gstreamer的Gst-Python与DeepStream的PyBinding与两个元件。
我们可以在容器内安装这两个元件,但是前面提供的Docker指令中使用“--rm”参数,一旦退出容器之后就会销毁这个调试好的环境,这对于使用来说是非常不方便的,因此必须做出调整,将调试好的环境保留下来,甚至于存成一个独立的镜像文件,就能方便日后的重复使用或移植工作。
在NGC官方提供的指令中使用“--it”与“--rm”是为了能快速启用容器,并且在使用完毕后删除容器以避免占用不必要的资源,现在我们来做以下调整:
现在试着执行以下指令,创建一个要配置Python开发环境的DeepStream容器:
$ |
docker run -id --name=ds_python --net=host --runtime=nvidia -e DISPLAY=$DISPLAY \ -w /opt/nvidia/deepstream/deepstream -v /tmp/.X11-unix/:/tmp/.X11-unix \ -v ~/deepstream/sources:/opt/nvidia/deepstream/deepstream/sources \ -v ~/deepstream/samples:/opt/nvidia/deepstream/deepstream/samples \ nvcr.io/nvidia/deepstream-l4t:6.1-iot |
执行之后,会发现命令终端并未进入容器里面,依旧在本机(容器外)的状态,现在执行“docker ps”指令,会看到如以下的状态:
这里显示有个名为“ds_python”的容器处于运行状态,但是我们还没有进入这个容器的操作环境中。
现在以deepstream-l4t:6.1-iot创建的ds_python容器已经在后台启动,我们只要使用“docker exec”指令就能进入容器内操作,请执行以下指令:
$ |
docker exec -it ds_python bash |
这样就能进到容器里面。现在试试在容器内做些事情,例如创建一个目录、添加一个文件,然后执行“exit”退出容器,然后再执行前面的指令重新进入容器内,检查看看刚刚所做的修改应该还存在,这样就能确保我们为容器安装的内容可以保留。
这种容器创建的方式,在系统重启之后还能保留前面的设定吗?重启一次系统就知道了,然后执行“docker ps”指令检查状态,发现看不到前面所创建的ds_python容器了,怎么办呢?
不用紧张,现在执行“docker ps -a”指令,就会发现这个容器依旧存在于背景资源中,只是没有启动而已,现在执行以下指令:
$ $ |
docker start ds_python docker ps |
现在再重新执行下面指令,就能进入容器里:
$ |
docker exec -it ds_python bash |
再检查看看前面所做的修改是否依然存在?现在就能确认这种方式能将容器的修改长期保留,是一种更加实在的用法。
现在可以在容器内按照https://github.com/NVIDIA-AI-IOT/deepstream_python_apps的“HOW-TO Guide”安装步骤,调试DeepStream的Python开发环境:
如果Jetson的操作系统是Ubuntu 20.04(JetPack 5.0以上),请执行以下的依赖库安装步骤:
$
|
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 |
$ $ $ $ |
cd sources git clone https://github.com/NVIDIA-AI-IOT/deepstream_python_apps cd deepstream_python_apps git submodule update --init |
$ $ $ $ $$ |
apt update apt-get install -y apt-transport-https ca-certificates -y update-ca-certificates cd 3rdparty/gst-python/ ./autogen.sh make && make install |
请参照如下链接:
https://github.com/NVIDIA-AI-IOT/deepstream_python_apps/blob/master/bindings/README.md
现在就完成了Python环境的配置。
要验证环境是否调试完成的最简单方法,就是执行一个最基础的deepstream-test1范例,请在容器内执行以下指令:
$ $ $ |
cd /opt/nvidia/deepstream/deepstream/ cd sources/deepstream_python_apps/apps/deepstream-test1 ./deepstream_test_1.py ../../../../samples/streams/sample_720p.h26 |
正常运行会看到如下图的执行结果。
这样就表示DeepStream容器的Python开发环境已经安装成功。
接下来就是要将前面调试好的容器环境存储起来,以后就不需要每次调试一次环境。这部分分成三个阶段:
事实上前面使用“-id”指令之后,这个容器就会一直保留在背景中执行,即便重启系统后也是存在的,如同前面所提供的,只要执行以下指令就能重新进入这个容器:
$ $ |
sudo xhost +si:localuser:root docker start ds_python && docker exec -it ds_python bash |
现在需要在打开一个命令终端,使用“docker commit <容器名> <镜像名>”指令,将目前执行的容器存成一个镜像,请执行以下指令:
$ |
docker commit ds_python deepstream-l4t:6.1-python |
现在执行“docker images”指令,可以看到多了一个“deepstream-l4t:6.1-python”镜像,如下图所示:
只要不重装系统或者删除这个镜像,那么这个镜像就会一直保留在系统里面,以后如果需要再次使用,只要执行以下指令即可:
$ $ |
sudo xhost +si:localuser:root sudo docker run -it --rm --net=host --runtime nvidia -e DISPLAY=$DISPLAY -w /opt/nvidia/deepstream/deepstream -v /tmp/.X11-unix/:/tmp/.X11-unix -v ~/nvme/deepstream/sources:/opt/nvidia/deepstream/deepstream/sources -v ~/nvme/deepstream/samples:/opt/nvidia/deepstream/deepstream/samples deepstream-l4t:6.1-python |
或者可以同时启动多个独立的Python环境DeepStream容器,如下指令:
$ $ |
sudo xhost +si:localuser:root sudo docker run -id --name=ds_python2 --net=host --runtime nvidia -e DISPLAY=$DISPLAY -w /opt/nvidia/deepstream/deepstream -v /tmp/.X11-unix/:/tmp/.X11-unix -v ~/nvme/deepstream/sources:/opt/nvidia/deepstream/deepstream/sources -v ~/nvme/deepstream/samples:/opt/nvidia/deepstream/deepstream/samples deepstream-l4t:6.1-python |
最保险的方式,就是将这个deepstream-l4t:6.1-python镜像导出成文件,自行保存好,这样即便系统重新安装后,也能直接从这个文件载入镜像,然后开启工作容器:
$
$ |
# 将镜像导出成文件 sudo docker save deepstream-l4t:6.1-python -o jp50dp_ds61_python # 将文件载入成镜像 sudo docker load -i jp50dp_ds61_python |
现在,这个导出的jp50dp_ds61_python压缩文件,也能部署到其他JetPack 5.0DP所安装的Jetson设备上使用,不需要在每台机器上重复调试Python开发环境。
好文章,需要你的鼓励
Google 即将为所有用户提供端到端加密 (E2EE) 电子邮件服务,包括非 Google Workspace 用户。这项功能无需 IT 管理员进行复杂配置,可作为 S/MIME 协议的替代方案。企业 Gmail 用户可向任何人发送 E2EE 邮件,接收方只需通过简单的身份验证即可查看和回复。该功能将分阶段推出,并将逐步支持所有电子邮箱。
Vodafone Idea 宣布将升级和扩展其在印度主要城市和地区的光传输网络。此次升级基于诺基亚的光交换技术,旨在满足多太比特数据增长需求,支持企业客户的量子安全服务,并提升4G和5G网络容量。诺基亚将部署先进的光学设备和技术,以提高网络效率、灵活性和可持续性。
微软即将迎来成立50周年。这家Windows巨头在半个世纪的发展历程中,经历了许多高光时刻和挫折。从MS-DOS到Windows,从Office到云服务,再到最近的人工智能投资,微软不断创新并主导着企业市场。尽管在移动领域失利,但其在PC和生产力软件方面的地位依然稳固。50年来,微软的产品和决策深刻影响了用户的日常生活和工作方式。
一项新调查显示,72% 的 Z 世代不信任基于人工智能的安全解决方案,成为对数字安全最为怀疑的一代。这种不信任显得尤为讽刺,因为 Z 世代成长于科技主导的世界,却对 AI 控制安全持保留态度。调查探讨了 Z 世代怀疑态度的根源,以及如何通过教育和透明度来解决信任问题。