AI视频行为分析系统项目复盘——技术篇1:Ubuntu 18.04部署编译OpenCV+contrib、TensorFlow2.1、CUDA10.1+cuDNN7.6.5、tensorRT6.0.1等
0 项目背景
- 接手他人的项目,全过程重头梳理下。
- 7台服务器,其中6台GPU服务器(GPU:2*2080Ti,CPU:2*Xeon Gold 5118(12核24线程)),一台调度服务器,Ubuntu 18.04系统。
- 100+摄像头(基本是1920*1080)。
- 视觉技术:目标检测、目标跟踪、分类、GPU视频编解码、tensorRT等。
- 开发环境:Ubuntu18.04内使用VS code(全过程C++部署)。
通用性备注:
- 关于bashrc:Ubuntu中,配置文件有多种,用的最多的就是bashrc这个,需要注意的是,每次修改bashrc后,除了要source更新一下bashrc,其他所有之前已打开的终端都需要关闭重新打开后,才会加载最新的bashrc配置文件。原因是:终端在启动时会读取一次bashrc这个配置文件。
- VS code中,debug重新编译启动程序时,如果发生问题,也要注意可能是VSCODE内终端启动bashrc问题。
1 GPU服务器环境部署
OpenCV编译
OpenCV版本要3.0以上,这里我们以最新的4.5.1+contrib为例子,搞定这种最难的。
步骤:
- 安装依赖项: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
- 解压OpenCV:sudo unzip opencv-4.5.1.zip
- 解压contrib包:sudo unzip opencv_contrib.zip
- 将contrib文件夹移动到OpenCV文件夹内:sudo cp -r opencv_contrib opencv-4.5.1
- cd opencv-4.5.1
- sudo mkdir build
- cd build
- 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/ ..
- sudo make -j8
- sudo make install
- 让动态链接库为系统所共享: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
- 问题1:fatal error: features2d/test/test_detectors_regression.impl.hpp: No such file or directory
TensorFlow C++ api
安装CUDA 10.1
- 先下载axel(解决官网推荐的wget方法下载包不稳定问题(翻墙问题))
- sudo apt install -y axel
- 使用axel下载cuda 10.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
- 安装cuda:
- 输入:sudo sh cuda_10.1.243_418.87.00_linux.run
- 注意:安装过程中,终端会显示一些信息,并需要你确认或勾选。唯一要注意的是,需要取消显卡驱动项的安装。其他信息很简单,具体细节可见:https://blog.csdn.net/sss_369/article/details/94591280
- 输入:sudo sh cuda_10.1.243_418.87.00_linux.run
- 设置cuda环境变量:
- 打开bashrc文件:sudo gedit ~/.bashrc
- 将如下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
- 使配置生效:source ~/.bashrc
- 检查cuda安装是否成功
- 输入:nvcc --version(如果弹出10.1相关信息,则表示整个过程OK了)
备注1:ubuntu中可以随意安装多个CUDA版本,切换CUDA版本的方法如下:
- 在bashrc文件中配置信息改成如下:
- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
- export PATH=$PATH:/usr/local/cuda/bin
- export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
- 安装了多个CUDA后,它们默认安装在/usr/local/文件夹内,/usr/local/cuda这个文件夹是一个动态链接文件夹,里面的内容链接的是具体某个CUDA-XX.X实体文件夹。因为我们在系统配置文件内将CUDA指定为这个动态链接文件夹,所以,如果要修改系统默认调用的CUDA版本,只要修改这个CUDA动态链接文件夹链接的CUDA实体版本文件夹即可,切换方法如下:
- 删除原有的CUDA动态链接文件夹:sudo rm -rf /usr/local/cuda
- 重新生成一个指定CUDA版本的链接文件夹:sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda
- 查看是否切换成功(有时候可能需要重新打开终端才会显示切换成功):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文件夹),然后终端中依次输入如下命令:
- sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
- sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
- sudo chmod a+r /usr/local/cuda/include/cudnn.h
- 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的环境变量即可,操作如下:
- 打开bashrc文件:sudo gedit ~/.bashrc
- 将如下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
- 使配置生效: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文件,具体没去测试。
步骤:
- 在英伟达官网先下载 Video_Codec_SDK_10.0.26.zip(我网盘有备份)(版本一定要对,不然项目里面相关编解码语法会报错)。
- 然后解压即可。(项目中会在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等相关推荐
- AI视频行为分析系统项目复盘——技术篇4:deepsort原理图
0 背景 见<AI视频行为分析系统项目复盘--技术篇1> 1 目标 尽力绘制详尽的原理图,弄懂deepsort的全局和细节,希望具备以下能力: 精通--能够魔改算法. 一叶知秋--深入了解 ...
- AI视频行为分析系统项目复盘——技术篇3:tensorRT技术梳理
0 背景 见<AI视频行为分析系统项目复盘--技术篇1> 1 tensorRT 介绍 NVIDIA®TensorRT™是一个深度学习平台,用于模型推理加速(仅支持NVIDIA自家GPU,C ...
- AI视频行为分析系统项目复盘——技术篇2:视频流GPU硬解码
0 项目背景 见<AI视频行为分析系统项目复盘--技术篇1> https://blog.csdn.net/weixin_42118657/article/details/118105545 ...
- 校园安全AI视频行为分析系统 yolov7
校园安全AI视频行为分析系统以yolov7网络模型算法为核心,校园安全AI视频行为分析算法模型对现场画面中学生打架.异常跌倒.攀爬翻墙.违规闯入.明火烟雾.睡岗离岗.抽烟打电话等行为主动识别预警存档. ...
- swan在linux系统下怎么运行,在Ubuntu 18.04/16.04 LTS上安装Libreswan的方法
本文介绍在Ubuntu 18.04/16.04 LTS服务器上安装Libreswan的方法,采用源代码安装方式. 简介 Libreswan是Linux系统的Internet密钥交换(IKE)实现,它支 ...
- ubuntu 18.04 使用c++ opencv读取摄像头或视频
代码 #include<opencv2/opencv.hpp> using namespace cv; int main(int argc,char *argv[]) {char ch[1 ...
- 在Ubuntu 18.04系统上安装最新的Adobe Flash Player
在Ubuntu 18.04系统上安装最新的Adobe Flash Player 第一步.添加Canonical Partners Repository 第二步.在Ubuntu 18.04系统上安装Ad ...
- Ubuntu 18.04 与 Win10 双系统
早在 Ubuntu 18.04 LTS 正式版发布的时候,就想更新一下系统,体验一下新版本的 Ubuntu.由于原来是使用 Win10 作为常用系统,Ubuntu 16.04 作为开发系统,利用 Ea ...
- 学校AI视频行为分析监测系统 opencv
学校AI视频行为分析监测系统通过python+opencv网络模型AI视频分析技术,学校AI视频行为分析监测算法对学校区域人员打架行为识别.跌倒行为识别.翻墙识别.人员聚众识别.攀高识别.抽烟行为等进 ...
最新文章
- Android runOnUiThread() 方法的使用
- JS题目总结:原型链/new/json/MVC/Promise
- 前端_JavaScript_面向对象编程
- MFC通过ODBC连接mysql(使用VS2012编写MFC)
- 精通Android自定义View(十八)自定义圆形菊花加载转圈效果
- HttpApplication的认识与加深理解
- linux进程文件描述符 vnode,从flock引发的一个bug谈起(1) 进程的文件描述符
- php 微信转发朋友圈,php微信分享到朋友圈、QQ、朋友、微博
- 安装win10时,显示windows 无法安装到这个磁盘,选中的磁盘具有mbr分区表
- 前端 | 数据可视化之ECharts
- python 组合优化 回撤最小_【研究】如何用python实现Markowitz投资组合优化
- 安全是我们的生命线,将时刻保持敬畏心
- 关于一个App调起另一个App
- javascript机器学习
- 通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?
- 流行购车平台易车买车划算吗?
- Jquery 实现表格单行获取数据
- php双写绕过,PHP preg_系列漏洞小结
- firefox插件安装位置
- 4--STM32RCC时钟树
热门文章
- python join 的使用
- java代码 将字符串快速生成到string.xml中
- android 嵌套h5实现2048游戏
- Execution failed for task ':app:mergeDebugResources'.
- New Android Application 的介绍
- 机器学习入门(06)— 输出层多元分类、softmax 归一化指数函数以及输出层的神经元数量
- Golang 要注意的陷阱和常见错误
- css3之transition、transform、animation比较
- Discuz! X2.5 添加自定义数据调用模块(简单方法)
- FPGA设计细节和实现(初学者)