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.
      • 解决办法:https://blog.csdn.net/PecoHe/article/details/97476135

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++的调试环境

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

  1. AI视频行为分析系统项目复盘——技术篇4:deepsort原理图

    0 背景 见<AI视频行为分析系统项目复盘--技术篇1> 1 目标 尽力绘制详尽的原理图,弄懂deepsort的全局和细节,希望具备以下能力: 精通--能够魔改算法. 一叶知秋--深入了解 ...

  2. AI视频行为分析系统项目复盘——技术篇3:tensorRT技术梳理

    0 背景 见<AI视频行为分析系统项目复盘--技术篇1> 1 tensorRT 介绍 NVIDIA®TensorRT™是一个深度学习平台,用于模型推理加速(仅支持NVIDIA自家GPU,C ...

  3. AI视频行为分析系统项目复盘——技术篇2:视频流GPU硬解码

    0 项目背景 见<AI视频行为分析系统项目复盘--技术篇1> https://blog.csdn.net/weixin_42118657/article/details/118105545 ...

  4. 校园安全AI视频行为分析系统 yolov7

    校园安全AI视频行为分析系统以yolov7网络模型算法为核心,校园安全AI视频行为分析算法模型对现场画面中学生打架.异常跌倒.攀爬翻墙.违规闯入.明火烟雾.睡岗离岗.抽烟打电话等行为主动识别预警存档. ...

  5. swan在linux系统下怎么运行,在Ubuntu 18.04/16.04 LTS上安装Libreswan的方法

    本文介绍在Ubuntu 18.04/16.04 LTS服务器上安装Libreswan的方法,采用源代码安装方式. 简介 Libreswan是Linux系统的Internet密钥交换(IKE)实现,它支 ...

  6. ubuntu 18.04 使用c++ opencv读取摄像头或视频

    代码 #include<opencv2/opencv.hpp> using namespace cv; int main(int argc,char *argv[]) {char ch[1 ...

  7. 在Ubuntu 18.04系统上安装最新的Adobe Flash Player

    在Ubuntu 18.04系统上安装最新的Adobe Flash Player 第一步.添加Canonical Partners Repository 第二步.在Ubuntu 18.04系统上安装Ad ...

  8. Ubuntu 18.04 与 Win10 双系统

    早在 Ubuntu 18.04 LTS 正式版发布的时候,就想更新一下系统,体验一下新版本的 Ubuntu.由于原来是使用 Win10 作为常用系统,Ubuntu 16.04 作为开发系统,利用 Ea ...

  9. 学校AI视频行为分析监测系统 opencv

    学校AI视频行为分析监测系统通过python+opencv网络模型AI视频分析技术,学校AI视频行为分析监测算法对学校区域人员打架行为识别.跌倒行为识别.翻墙识别.人员聚众识别.攀高识别.抽烟行为等进 ...

最新文章

  1. Android runOnUiThread() 方法的使用
  2. JS题目总结:原型链/new/json/MVC/Promise
  3. 前端_JavaScript_面向对象编程
  4. MFC通过ODBC连接mysql(使用VS2012编写MFC)
  5. 精通Android自定义View(十八)自定义圆形菊花加载转圈效果
  6. HttpApplication的认识与加深理解
  7. linux进程文件描述符 vnode,从flock引发的一个bug谈起(1) 进程的文件描述符
  8. php 微信转发朋友圈,php微信分享到朋友圈、QQ、朋友、微博
  9. 安装win10时,显示windows 无法安装到这个磁盘,选中的磁盘具有mbr分区表
  10. 前端 | 数据可视化之ECharts
  11. python 组合优化 回撤最小_【研究】如何用python实现Markowitz投资组合优化
  12. 安全是我们的生命线,将时刻保持敬畏心
  13. 关于一个App调起另一个App
  14. javascript机器学习
  15. 通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?
  16. 流行购车平台易车买车划算吗?
  17. Jquery 实现表格单行获取数据
  18. php双写绕过,PHP preg_系列漏洞小结
  19. firefox插件安装位置
  20. 4--STM32RCC时钟树

热门文章

  1. python join 的使用
  2. java代码 将字符串快速生成到string.xml中
  3. android 嵌套h5实现2048游戏
  4. Execution failed for task ':app:mergeDebugResources'.
  5. New Android Application 的介绍
  6. 机器学习入门(06)— 输出层多元分类、softmax 归一化指数函数以及输出层的神经元数量
  7. Golang 要注意的陷阱和常见错误
  8. css3之transition、transform、animation比较
  9. Discuz! X2.5 添加自定义数据调用模块(简单方法)
  10. FPGA设计细节和实现(初学者)