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等的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 优达学城《DeepLearning》2-
- 下一篇: 优达学城《DeepLearning》2-