AI视频行为分析系统项目复盘——技术篇1:Ubuntu 18.04部署编译OpenCV+contrib、TensorFlow2.1、CUDA10.1+cuDNN7.6.5、tensorRT6.0.1等

0 项目背景

  1. 接手他人的项目,全过程重头梳理下。
  2. 7台服务器,其中6台GPU服务器(GPU:2*2080Ti,CPU:2*Xeon Gold 5118(12核24线程)),一台调度服务器,Ubuntu 18.04系统。
  3. 100+摄像头(基本是1920*1080)。
  4. 视觉技术:目标检测、目标跟踪、分类、GPU视频编解码、tensorRT等。
  5. 开发环境:Ubuntu18.04内使用VS code(全过程C++部署)。

通用性备注:

  1. 关于bashrc:Ubuntu中,配置文件有多种,用的最多的就是bashrc这个,需要注意的是,每次修改bashrc后,除了要source更新一下bashrc,其他所有之前已打开的终端都需要关闭重新打开后,才会加载最新的bashrc配置文件。原因是:终端在启动时会读取一次bashrc这个配置文件。
  2. VS code中,debug重新编译启动程序时,如果发生问题,也要注意可能是VSCODE内终端启动bashrc问题。

1 GPU服务器环境部署

OpenCV编译

OpenCV版本要3.0以上,这里我们以最新的4.5.1+contrib为例子,搞定这种最难的。

步骤:

  1. 安装依赖项:sudo apt-get install libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev build-essential qt5-default ccache libv4l-dev libavresample-dev  libgphoto2-dev libopenblas-base libopenblas-dev doxygen pylint libvtk6-dev
  2. 解压OpenCV:sudo unzip opencv-4.5.1.zip
  3. 解压contrib包:sudo unzip opencv_contrib.zip
  4. 将contrib文件夹移动到OpenCV文件夹内:sudo cp -r opencv_contrib opencv-4.5.1
  5. cd opencv-4.5.1
  6. sudo mkdir build
  7. cd build
  8. sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/ym/dream2021/OpenCV4.5/opencv-4.5.1/opencv_contrib/modules/ .. 
  9. sudo make -j8
  10. sudo make install
  11. 让动态链接库为系统所共享:sudo ldconfig -v 

有用的备注:

  • /home/ym/dream2021/OpenCV4.5是我创建的一个临时文件夹,里面存放解压后的opencv-4.5.1文件夹和opencv_contrib文件夹。
  • 执行地8步后,几乎必定会遇到的问题(我今年在不同机器上编译了4次OpenCV4.5.1+contrib全是这问题...):fatal error: boostdesc_bgm.i: No such file or directory。
    • 原因: boostdesc_bgm.i等文件无法翻墙下载,需要手动下载这些文件放到制定位置。
    • 下载地址:https://github.com/opencv/opencv_contrib/issues/1301(我的百度网盘有备份)
    • 11个文件的摆放位置:放在/home/ym/dream2021/OpenCV4.5/opencv-4.5.1/opencv_contrib/modules/xfeatures2d/src/ 路径下。
  • 第8步,不同机器上有可能遇到的其他问题:
    • 问题1:fatal error: features2d/test/test_detectors_regression.impl.hpp: No such file or directory
      • 解决办法:将/home/ym/dream2021/OpenCV4.5/opencv-4.5.1/modules/features2d文件夹,复制到/home/ym/dream2021/OpenCV4.5/opencv-4.5.1/build文件夹内。
    • 问题2:Package opencv was not found in the pkg-config search path.

TensorFlow C++ api

安装CUDA 10.1

  1. 先下载axel(解决官网推荐的wget方法下载包不稳定问题(翻墙问题))
    1. sudo apt install -y axel
  2. 使用axel下载cuda 10.1:
    1. 输入:axel -n 50 https://developer.download.nvidia.cn/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run
  3. 安装cuda:
    1. 输入:sudo sh cuda_10.1.243_418.87.00_linux.run
      1. 注意:安装过程中,终端会显示一些信息,并需要你确认或勾选。唯一要注意的是,需要取消显卡驱动项的安装。其他信息很简单,具体细节可见:https://blog.csdn.net/sss_369/article/details/94591280
  4. 设置cuda环境变量:
    1. 打开bashrc文件:sudo gedit ~/.bashrc
    2. 将如下3行信息放到bashrc文件最后(不要前面的序号):
      • export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64
      • export PATH=$PATH:/usr/local/cuda-10.1/bin
      • export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-10.1
    3. 使配置生效:source ~/.bashrc
  5. 检查cuda安装是否成功
    1. 输入:nvcc --version(如果弹出10.1相关信息,则表示整个过程OK了)

备注1:ubuntu中可以随意安装多个CUDA版本,切换CUDA版本的方法如下:

  1. 在bashrc文件中配置信息改成如下:
    1. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
    2. export PATH=$PATH:/usr/local/cuda/bin
    3. export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
  2. 安装了多个CUDA后,它们默认安装在/usr/local/文件夹内,/usr/local/cuda这个文件夹是一个动态链接文件夹,里面的内容链接的是具体某个CUDA-XX.X实体文件夹。因为我们在系统配置文件内将CUDA指定为这个动态链接文件夹,所以,如果要修改系统默认调用的CUDA版本,只要修改这个CUDA动态链接文件夹链接的CUDA实体版本文件夹即可,切换方法如下:
    1. 删除原有的CUDA动态链接文件夹:sudo rm -rf /usr/local/cuda
    2. 重新生成一个指定CUDA版本的链接文件夹:sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda
    3. 查看是否切换成功(有时候可能需要重新打开终端才会显示切换成功):nvcc --version

备注2:TensorFlow版本对应的CUDA版本https://blog.csdn.net/qq_37653019/article/details/109956083

安装cuDNN 7.6.5

先下载cudnn-10.1-linux-x64-v7.6.5.32.tgz(我网盘有备份),然后解压,在终端中cd到解压得到文件夹内(里面就一个cuda文件夹),然后终端中依次输入如下命令:

  1. sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
  2. sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
  3. sudo chmod a+r /usr/local/cuda/include/cudnn.h
  4. sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

执行上述指令后就安装完成了,输入下面指令验证是否正确安装:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

如果终端中显示相关信息,则表示这部分OK了!

tensorRT

TensorRT官网下载:TensorRT-6.0.1.5.Ubuntu-18.04.x86_64-gnu.cuda-10.1.cudnn7.6.tar.gz(我网盘有备份),然后解压,之后再配置下tensorRT的环境变量即可,操作如下:

  1. 打开bashrc文件:sudo gedit ~/.bashrc
  2. 将如下2行信息放到bashrc文件最后(不要前面的序号):
    • export LIBRARY_PATH=$LIBRARY_PATH:"/home/ym/dream2021/project_rongchuang/other/TensorRT-6.0.1.5/lib"
    • export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:"/home/ym/dream2021/project_rongchuang/other/TensorRT-6.0.1.5/lib":$LD_LIBRARY_PATH
  3. 使配置生效:source ~/.bashrc

Video_Codec_SDK

这是英伟达用于视频解码加速的NVDECODE API。NVIDIA Video Codec SDK包括一整套API,示例和文档,用于在Windows和Linux上进行硬件加速视频编码和解码。(即将默认CPU编解码视频操作放到GPU上执行,在深度学习项目中,此非常有用,第一提高GPU利用率,第二省去CPU解码视频流后再挪到GPU中,直接GPU自己解码后直接给模型使用)

好像这个东西不是必须要单独下载,有可能在装CUDA10.1时,如果选择安装显卡驱动,那么相关cuda路径内可能会包含Video_Codec_SDK中的编解码.h文件和.so文件,具体没去测试。

步骤:

  1. 在英伟达官网先下载 Video_Codec_SDK_10.0.26.zip(我网盘有备份)(版本一定要对,不然项目里面相关编解码语法会报错)。
  2. 然后解压即可。(项目中会在CMakeLists.txt中指定该文件夹内的Interface和Lib子文件)

2 VS code调试环境搭建

2.1 CMakeLists介绍

2.2 VS code配置C++的调试环境

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值