安装DeepStream

安装DeepStream


安装依赖#

Copy
$ sudo apt install libjson-glib-dev libjansson4 libvtk6-dev python-vtk6 openssl libssl-dev ffmpeg libx11-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio gstreamer1.0-rtsp libgstreamer-plugins-base1.0-dev libgstreamer1.0-0 libgstreamer1.0-dev libgstrtspserver-1.0-0 libgstrtspserver-1.0-dev
Copy
sudo apt-get install libv4l-dev cd /usr/include/linux sudo ln -s ../libv4l1-videodev.h videodev.h

提前下好deepstream6#

下载地址:https://developer.nvidia.com/deepstream-getting-started

Copy
sudo tar -zxvf deepstream_sdk_v6.0.0_x86_64.tbz2 -C /

命令行安装gcc#

Copy
sudo apt-get install build-essential

源码编译安装gcc#

下载地址:http://mirrors.nju.edu.cn/gnu/gcc/gcc-7.5.0/

安装依赖:#

下载其他依赖文件,从这个地址都能找到:http://www.mirrorservice.org/sites/sourceware.org/pub/gcc/infrastructure/

  • gmp-6.1.0.tar.bz2
  • mpfr-3.1.4.tar.bz2
  • mpc-1.0.3.tar.gz
  • isl-0.16.1.tar.bz2
    每个依赖都使用相同的安装步骤,如下:
Copy
./configure make -j2 sudo make install

编译安装gcc#

Copy
编译安装gcc ./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib make -j128 sudo make install 如果出现gcc和g++版本不一致的问题,很可能是配置的问题,因为目前系统里有多个gcc了,调用如下命令,即可解决 /usr/local/bin/gcc是我的安装路径 sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/gcc 100 sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/g++ 100

安装Cmake#

下载地址:https://cmake.org/files/

Copy
tar -xvf cmake-3.14.5.tar cd cmake-3.14.5 ./bootstrap make make install

TensorRT-8.0.1.6#

下载地址:https://developer.nvidia.com/nvidia-tensorrt-download

安装pycuda#

Copy
# 第一种方式 手动下载安装<https://www.lfd.uci.edu/~gohlke/pythonlibs/#pycuda> pip install {pycuda}.whl # 第二种方式 直接pip pip install pycuda==2021.1

安装tensorrt#

Copy
#在home下新建文件夹,命名为tensorrt_tar,然后将下载的压缩文件拷贝进来解压 tar xzvf TensorRT-8.0.1.6.Linux.x86_64-gnu.cuda-11.3.cudnn8.2.tar.gz #解压得到TensorRT-8.0.1.6的文件夹,将里边的lib和include添加都系统搜索路径中 mv TensorRT-8.0.1.6/ /usr/local/ mkdir /usr/lib/TensorRT-8.0.1.6 mkdir /usr/include/TensorRT-8.0.1.6 sudo ln -s /usr/local/TensorRT-8.0.1.6/lib /usr/lib/TensorRT-8.0.1.6/lib sudo ln -s /usr/local/TensorRT-8.0.1.6/include /usr/include/TensorRT-8.0.1.6/include # 安装TensorRT python API cd /usr/local/TensorRT-8.0.1.6/python pip install tensorrt-8.0.1.6-py2.py3-none-any.whl # 安装UFF,支持tensorflow模型转化 cd TensorRT-8.0.1.6/uff pip install uff-0.5.5-py2.py3-none-any.whl # 安装graphsurgeon,支持自定义结构 cd TensorRT-8.0.1.6/graphsurgeon pip install graphsurgeon-0.3.2-py2.py3-none-any.whl

安装librdkafka#

Copy
git clone https://github.com/edenhill/librdkafka.git cd librdkafka git reset --hard 7101c2310341ab3f4675fc565f64f0967e135a6a ./configure make sudo make install sudo cp /usr/local/lib/librdkafka* /opt/nvidia/deepstream/deepstream-6.0/lib

源码编译CPU版OpenCV#

Copy
cd opencv-4.5.1 mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/opencv-4.5.1 .. make -j128 sudo make install

源码编译GPU版OpenCV#

** 使用源码安装opencv,注意要带cuda和gstreamer,这一步容易出现问题,将一些关键步骤做些说明,按照下边指令安装 **

安装依赖#

Copy
sudo apt-get install libavcodec-dev libavformat-dev libavdevice-dev ffmpeg libglew-dev OpenGL Extension Wrangler - 开发环境 libtiff5-dev 标记图像文件格式库 (TIFF),开发文件 zlib1g-dev libjpeg-dev libpng12-dev libjasper-dev libavcodec-dev libavformat-dev libavutil-dev libpostproc-dev libswscale-dev libeigen3-dev libtbb-dev libgtk2.0-dev pkg-config

编译OpenCV#

Copy
wget https://github.com/opencv/opencv/archive/3.4.0.zip -O opencv-3.4.0.zip unzip opencv-3.4.0.zip cd opencv-3.4.0 wget https://github.com/opencv/opencv_contrib/archive/3.4.0.zip -O opencv_contrib-3.4.0.zip unzip opencv_contrib-3.4.0.zip mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_PNG=OFF -DBUILD_TIFF=OFF -DBUILD_TBB=OFF -DBUILD_JPEG=OFF -DBUILD_JASPER=OFF -DBUILD_ZLIB=OFF -DBUILD_EXAMPLES=OFF -DBUILD_opencv_java=OFF -DBUILD_opencv_python2=ON -DBUILD_opencv_python3=ON -DENABLE_PRECOMPILED_HEADERS=OFF -DWITH_OPENCL=OFF -DWITH_OPENMP=OFF -DWITH_FFMPEG=ON -DWITH_GSTREAMER=ON -DWITH_CUDA=ON -DWITH_GTK=ON -DWITH_VTK=ON -DWITH_TBB=ON -DWITH_1394=OFF -DWITH_OPENEXR=OFF -DOPENCV_EXTRA_MODULES_PATH=/opt/opencv-3.4.0/opencv_contrib-3.4.0/modules -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda -DCUDA_ARCH_BIN=7.5 -DINSTALL_C_EXAMPLES=ON -DINSTALL_TESTS=OFF .. make -j128 sudo make install

查看显卡CUDA_ARCH_BIN

  • 方法1:利用cuda_sample查看
Copy
cd /usr/local/cuda/samples/1_Utilities/deviceQuery sudo make ./deviceQuery

输出其中的** CUDA Capability Major/Minor version number: 7.5 **

  • 方法2:git下载代码编译
Copy
git clone https://github.com/NVIDIA-AI-IOT/deepstream_tlt_apps.git cd deepstream_tlt_apps/TRT-OSS/x86 nvcc deviceQuery.cpp -o deviceQuery ./deviceQuery

检测版本#

Copy
pkg-config --modversion opencv pkg-config --cflags --libs opencv # or python import cv2 cv2.getBuildInformation()

安装编译好的opencv python库#

Copy
cd opencv-3.4.0/build/python_loader/ python setup.py install

可能的报错#

Copy
1.找不到gst/gstxxx.hpp问题 在/usr/include下新建软连接 $ cd /usr/include $ sudo ln -s gstreamer-1.0/gst/ gst 2.dynlink_nvcuvid.h问题 cuda10不再提供dynlink_nvcuvid.h功能,修改opencv-3.4.0/modules/cudacodec/src目录下的文件 modules/cudacodec/src/precomp.hpp modules/cudacodec/src/video_decoder.hpp modules/cudacodec/src/video_parser.hpp modules/cudacodec/src/cuvid_video_source.hpp modules/cudacodec/src/frame_queue.hpp 找到下边的代码 #if CUDA_VERSION >= 9000 #include <dynlink_nvcuvid.h> #else #include <nvcuvid.h> #endif 替换为 #if CUDA_VERSION >= 9000 && CUDA_VERSION < 10000 #include <dynlink_nvcuvid.h> #else #include <nvcuvid.h> #endif 如果改完还报错的话,需要下载 nvidia-sdk,下载链接:https://developer.nvidia.com/designworks/video_codec_sdk/downloads/v9.0 下载解压后将其中的 nvcuvid.h, cuviddec.h copy 到 /usr/local/cuda/include 然后重新make即可 3.ippicv_2017u3_lnx_intel64_general_20170822.tgz下载慢问题 https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20170822/ippicv 查看build目录下的CmakeDownloadLog.txt,里边记录了下载地址,我这里的路径是 use_cache "/home/nvidia/opencv_3.4.0/opencv-3.4.0/.cache" do_unpack "ippicv_2017u3_lnx_intel64_general_20170822.tgz" "4e0352ce96473837b1d671ce87f17359" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/dfe3162c237af211e98b8960018b564bc209261d/ippicv/ippicv_2017u3_lnx_intel64_general_20170822.tgz" "/home/nvidia/opencv_3.4.0/opencv-3.4.0/build/3rdparty/ippicv" #check_md5 "/home/nvidia/opencv_3.4.0/opencv-3.4.0/.cache/ippicv/4e0352ce96473837b1d671ce87f17359-ippicv_2017u3_lnx_intel64_general_20170822.tgz" 可以看到是把这个文件下载到/home/nvidia/opencv_3.3.1/opencv-3.3.1/.cache/ippicv/下,并命名为4e0352ce96473837b1d671ce87f17359-ippicv_2017u3_lnx_intel64_general_20170822.tgz,我们只需要把手动下载的文件然后复制到该路径下即可 4 cblas_xxx问题 如果出现编译问题“undefined reference to `cblas_sgemm(CBLAS_ORDER, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE, int, int, int, float, float const, int, float const, int, float, float*, int)'” 可能需要重新编译BLAS,CBLAS,LPACK,参考链接《blas、lapack、cblas在Ubuntu上的安装》<https://www.jianshu.com/p/33c4aea6117b> 5 boostdesc_bgm.i等问题 在opencv_contrib目录中报错fatal error: boostdesc_bgm.i: No such file or directory 这个跟2.4.2类似,是有些包下载不成功导致的,可以直接下载https://github.com/nanmi/myresource/tree/main/opencv_3rdparts/下面的资源,参考链接:<https://github.com/opencv/opencv_contrib/issues/1301>,然后拷贝到opencv_contrib/modules/xfeatures2d/src/ 路径下,重新编译即可 6 多版本问题 如果之前安装过其它版本没有卸载,可以采用《Ubuntu下多个版本OpenCV管理(Multiple Opencv version)》来指定编译时用到的opencv版本,连接:<https://www.cnblogs.com/cmt/p/14580194.html?from=https%3A%2F%2Fwww.cnblogs.com%2Fxzd1575%2Fp%2F5555523.html> 7 opencv2/xfeatures2d/cuda.hpp问题 修改/opencv-3.4.0/modules/stitching/CMakeLists.txt文件,在开头增加下边内容,然后重新cmake和make INCLUDE_DIRECTORIES("/<your location>/opencv_contrib-3.4.0/modules/xfeatures2d/include")  如果修改后还报错,则找到报错的文件,将头文件改成绝对路径  8 "xxxx/test_detectors_invariance.impl.hpp"问题 一般是说在features2d/test目录下没有XXX.hpp什么的,处理方式是将opencv-3.3.1/modules/features2d/test该目录下对于的缺少文件复制到opencv_contrib-3.3.1/modules/xfeatures2d/test该目录下,然后修改报错的文件的#include,将前面的地址删除,就让其在本地找 例如 :报错说在文件test_rotation_and_scale_invariance.cpp中找不到#include "xxxx/test_detectors_invariance.impl.hpp",那么就在opencv-3.3.1/modules/features2d/test下去找test_detectors_invariance.impl.hpp文件,将其复制到opencv_contrib-3.3.1/modules/xfeatures2d/test目录,然后打开test_rotation_and_scale_invariance.cpp文件,修改#include "xxxx/test_detectors_invariance.impl.hpp"为#include "test_detectors_invariance.impl.hpp"即可 如果觉得难得每个文件去找,那么干脆将目录中的所有文件复制过去,之后就该对于报错文件的#include位置就好了。

安装DeepStream#

Copy
cd /opt/nvidia/deepstream/deepstream-6.0/ sudo ./install.sh sudo ldconfig # 查看安装的版本 deepstream-app --version-all

可能的报错#

Copy
1. 如果运行时报错提示找不到一些库,如libnvdsgst_meta.so,则需要把deepstream-6.0/lib添加到系统lib路径中,如下 sudo vim /etc/ld.so.conf /opt/nvidia/deepstream/deepstream-6.0/lib/ //在文本后边添加该路径 sudo ldconfig //执行ldconfig立即生效 2. 使用这个shell命令来测试 deepstream-app -c source30_1080p_dec_infer-resnet_tiled_display_int8.txt 如果报错: ** ERROR: <create_multi_source_bin:714>: Failed to create element 'src_bin_muxer' ** ERROR: <create_multi_source_bin:777>: create_multi_source_bin failed ** ERROR: <create_pipeline:1045>: create_pipeline failed ** ERROR: <main:632>: Failed to create pipeline Quitting App run failed 则是因为gstreamer缓存问题,运行下边指令删除即可,运行成功后,会显示检测画面。 rm ${HOME}/.cache/gstreamer-1.0/registry.* 如果是在服务器上运行,没有显示界面的话会报错如下 No EGL Display  nvbufsurftransform: Could not get EGL display connection 需要修改环境变量,如下 vim ~/.bashrc #打开后在最后边加下边语句 unset DISPLAY export DISPLAY=:0 #或者 export DISPLAY=:1 #保存退出 source ~/.bashrc rm ${HOME}/.cache/gstreamer-1.0/registry.* #然后再运行 deepstream-app -c source30_1080p_dec_infer-resnet_tiled_display_int8.txt

增加deepstream的Python绑定

安装依赖#

Copy
sudo apt install python-gi-dev

安装python-gi-dev之后就会有pyobject等内容了


安装Deepstream python 版

安装依赖

  • CUDA Toolkit
  • cuDNN library
  • TensorRT
  • GStreamer
  • PyGObject
  • NumPy

下载deepstream的python绑定源码

绑定是使用pybind11来封装的

Copy
git clone --recursive https://github.com/NVIDIA-AI-IOT/deepstream_python_apps.git

下载好deepstream_python_apps/3rdparty/pybind11#

安装gst-python#

Copy
cd deepstream_python_apps/gst-python ./autogen.sh make make install

或者

Copy
sudo apt-get install python-gst-1.0

编译ds的绑定成whl的python包文件#

修改deepstream_python_apps/bindings下的cmake文件,
设置DS_PATHdeepstream6.2的路径,示例check_variable_set(DS_PATH ${CMAKE_SOURCE_DIR}/../../opt/nvidia/deepstream/deepstream-6.2)

Copy
cd deepstream_python_apps/bindings/ mkdir build cd build cmake .. make

安装pyds#

Copy
pip3 install ./pyds-1.1.4-py3-none*.whl

示例#

deepstream_python_apps/apps/

posted @   nanmi  阅读(225)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示
CONTENTS