在Ubuntu 20.04上安装OpenCV with CUDA,denseflow环境,使用GPU加速光流

在Ubuntu 20.04上安装OpenCV with CUDA,denseflow环境,使用GPU加速光流

1 安装CUDA、CUDAnn

1.1 安装

教程请百度或者看官方
https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html
https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html
https://medium.com/geekculture/installing-cudnn-and-cuda-toolkit-on-ubuntu-20-04-for-machine-learning-tasks-f41985fcf9b2

cuDNN下载 https://developer.nvidia.com/cudnn
安装CUDNN也有2种方法,lib拷贝过去或者安装deb,下面是拷贝过去。


sudo cp cuda/lib64/* /usr/local/cuda/lib64/
sudo cp cuda/include/* /usr/local/cuda/include/
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_version.h | grep CUDNN_MAJOR -A 2

1.2 测试

在Ubuntu 20.04上安装OpenCV with CUDA,denseflow环境,使用GPU加速光流
要验证cuDNN是否已安装并正常运行,请编译mnistCUDNN样本位于 /usr/src/cudnn_samples_v8Debian 文件中的目录。
程序

将cuDNN样本复制到可写路径。
cp -r /usr/src/cudnn_samples_v8/ $HOME

转到可写路径。
cd  $HOME/cudnn_samples_v8/mnistCUDNN

编译mnistCUDNN样本。
make clean && make

跑过mnistCUDNN样本。
./mnistCUDNN

如果cuDNN已正确安装并在您的 Linux 系统上运行,您将看到类似于以下内容的消息:
Test passed!

在Ubuntu 20.04上安装OpenCV with CUDA,denseflow环境,使用GPU加速光流
在Ubuntu 20.04上安装OpenCV with CUDA,denseflow环境,使用GPU加速光流

2 安装OpenCV

2.1 安装依赖

2.1.1 两种方法安装依赖,一是直接装

经常报错,见招拆招

如何在 Ubuntu 20.04 中使用 CUDA 11.2 和 CUDNN 8.2 安装 OpenCV 4.5.2
https://gist.github.com/raulqf/f42c718a658cddc16f9df07ecc627be7#configuration-information

首先安装更新和升级你的系统:
    sudo apt update
    sudo apt upgrade

然后,安装所需的库:

通用工具:
  sudo apt install build-essential cmake pkg-config unzip yasm git checkinstall

图像 I/O 库
sudo apt install libjpeg-dev libpng-dev libtiff-dev

视频/音频库 - FFMPEG、GSTREAMER、x264 等。
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libavresample-dev
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install libxvidcore-dev x264 libx264-dev libfaac-dev libmp3lame-dev libtheora-dev
sudo apt install libfaac-dev libmp3lame-dev libvorbis-dev

OpenCore - 自适应多速率窄带 (AMRNB) 和宽带 (AMRWB) 语音编解码器
sudo apt install libopencore-amrnb-dev libopencore-amrwb-dev

相机编程接口库
sudo apt-get install libdc1394-22 libdc1394-22-dev libxine2-dev libv4l-dev v4l-utils
cd /usr/include/linux
sudo ln -s -f ../libv4l1-videodev.h videodev.h
cd ~

来自 OpenCV highghui 模块的图形用户功能的 GTK 库
sudo apt-get install libgtk-3-dev

python3的Python库:
sudo apt-get install python3-dev python3-pip
sudo -H pip3 install -U pip numpy
sudo apt install python3-testresources

用于 CPU 的并行库 C++
sudo apt-get install libtbb-dev

OpenCV 的优化库
sudo apt-get install libatlas-base-dev gfortran

可选库:
sudo apt-get install libprotobuf-dev protobuf-compiler
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen

2.1.2 两种方法安装依赖,二是利用innerlee/setup.git

含denseflow的mmaction2安装记录
https://zhuanlan.zhihu.com/p/260746998

1. 添加环境变量
echo 'export ZZROOT=$HOME/app' >> ~/.bashrc
echo 'export PATH=$ZZROOT/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=$ZZROOT/lib:$ZZROOT/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
2. 安装denselfow
cd ~
git clone https://github.com/innerlee/setup.git
cd setup

sudo apt-get install autoconf cmake
sudo apt-get upgrade cmake
./zznasm.sh
./zzyasm.sh
./zzlibx264.sh
./zzlibx265.sh
./zzlibvpx.sh
./zzffmpeg.sh

2.2 安装OpenCV

2.2.1 安装

在Ubuntu上用Anaconda3 编译安装 opencv3
https://blog.csdn.net/ytusdc/article/details/102907703

cd ~/下载目录
wget -O opencv.zip https://github.com/opencv/opencv/archive/refs/tags/4.5.2.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/refs/tags/4.5.2.zip
unzip opencv.zip
unzip opencv_contrib.zip

cd opencv-4.5.2
mkdir build
cd build

接下来就是编译,可以直接使用命令编译,编译很容易失败,记录几个编译成功的参数

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/home/thhicv/anaconda3/envs/mmact -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=/home/thhicv/program/setup/opencv_contrib-4.5.2/modules -D BUILD_EXAMPLES=ON -D BUILD_opencv_python2=OFF -D WITH_FFMPEG=1 -D WITH_CUDA=ON -D CUDA_GENERATION=Pascal -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D PYTHON_DEFAULT_EXECUTABLE=/home/thhicv/anaconda3/envs/mmact/bin/python3 -D PYTHON3_INCLUDE_DIR=/home/thhicv/anaconda3/envs/mmact/include/python3.7m -D PYTHON3_LIBRARY=/home/thhicv/anaconda3/envs/mmact/lib/libpython3.7m.so -D PYTHON3_PACKAGES_PATH=/home/thhicv/anaconda3/envs/mmact/lib/python3.7 -D PYTHON_EXECUTABLE=/home/thhicv/anaconda3/envs/mmact/lib/python3.7 -D WITH_LAPACK=OFF -D OPENCV_PYTHON3_INSTALL_PATH=/home/thhicv/anaconda3/envs/mmact/lib/python3.7/site-packages -D PYTHON3_NUMPY_INCLUDE_DIRS=/home/thhicv/anaconda3/envs/mmact/lib/python3.7/site-packages/numpy/core/include ..

此处编译可用
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/home/thhicv/anaconda3/envs/mmact \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=/home/thhicv/program/setup/opencv_contrib-4.5.2/modules \
-D BUILD_EXAMPLES=ON \
-D BUILD_opencv_python2=OFF \
-D WITH_FFMPEG=1 \
-D WITH_CUDA=ON \
-D WITH_CUDNN=ON \
-D OPENCV_DNN_CUDA=ON \
-D CUDA_ARCH_BIN=7.5 \
-D CUDA_GENERATION=Pascal \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D WITH_CUBLAS=1 \
-D PYTHON_DEFAULT_EXECUTABLE=/home/thhicv/anaconda3/envs/mmact/bin/python3 \
-D PYTHON3_INCLUDE_DIR=/home/thhicv/anaconda3/envs/mmact/include/python3.7m \
-D PYTHON3_LIBRARY=/home/thhicv/anaconda3/envs/mmact/lib/libpython3.7m.so \
-D PYTHON3_PACKAGES_PATH=/home/thhicv/anaconda3/envs/mmact/lib/python3.7 \
-D PYTHON_EXECUTABLE=/home/thhicv/anaconda3/envs/mmact/lib/python3.7 \
-D WITH_LAPACK=OFF \
-D OPENCV_PYTHON3_INSTALL_PATH=/home/thhicv/anaconda3/envs/mmact/lib/python3.7/site-packages \
-D PYTHON3_NUMPY_INCLUDE_DIRS=/home/thhicv/anaconda3/envs/mmact/lib/python3.7/site-packages/numpy/core/include ..

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_CUDA=ON -D CMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=/home/thhicv/program/setup/opencv_contrib-4.5.2/modules PYTHON_DEFAULT_EXECUTABLE=/home/thhicv/anaconda3/envs/mmact/bin/python3 -D BUILD_EXAMPLES=ON ..

对编译懂得甚少,以后再研究

cmake 命令中需要说明的一些,下面的参数是获得Anaconda的路径,不用自己去找路径

CMAKE_INSTALL_PREFIX=$(python3 -c "import sys; print(sys.prefix)")

-D PYTHON3_EXECUTABLE=$(which python3)

-DPYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())")

-D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")

最终的时候我是用下面的参数编译成功的

cmake -D BUILD_TIFF=ON -D BUILD_opencv_java=OFF -D WITH_CUDA=ON -D ENABLE_AVX=ON -D WITH_OPENGL=ON -D WITH_OPENCL=ON -D WITH_IPP=ON -D WITH_TBB=ON -D WITH_GTK=ON -D WITH_EIGEN=ON -D WITH_V4L=ON -D WITH_VTK=OFF -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_NEW_PYTHON_SUPPORT=ON -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_opencv_python2=OFF -D BUILD_EXAMPLES=ON -D CMAKE_INSTALL_PREFIX=$(python3 -c "import sys; print(sys.prefix)") -D PYTHON3_EXECUTABLE=$(which python3) -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=ON -DPYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") -D OPENCV_EXTRA_MODULES_PATH=/home/thhicv/program/setup/opencv_contrib-4.5.2/modules  -D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") ..

编译不成功的话更换参数重新CMAKE编译

cd ..

sudo rm -rf build
mkdir build
cd build
CMAKE XXXXXXXXXXXX

也可以用cnake-gui编,更方便排查问题。在build路径下cmake-gui

在Ubuntu 20.04上安装OpenCV with CUDA,denseflow环境,使用GPU加速光流

OpenCV 配置选项参考
https://docs.opencv.org/4.5.2/db/d05/tutorial_config_reference.html

如果可以继续编译
nproc
make -j48
make install

2.2.2 测试

测试C++ OpenCV是否工作正常

cd ../samples/cpp/example_cmake
cmake .
make
./opencv_example

https://www.cxyzjd.com/article/lijuanyujihui/84302837
再测试Python是否正常

cd /home/thhicv/program/setup/opencv-4.5.2/build/lib/python3
cp cv2.cpython-37m-x86_64-linux-gnu.so /home/thhicv/anaconda3/envs/mmact/lib/python3.7/site-packages

在Ubuntu 20.04上安装OpenCV with CUDA,denseflow环境,使用GPU加速光流
在Ubuntu 20.04上安装OpenCV with CUDA,denseflow环境,使用GPU加速光流
虽然conda没有索引包,但是import的时候没问题。
cp opencv4.pc opencv.pc
pkg-config opencv --libs
pkg-config opencv --modversion

在Ubuntu 20.04上安装OpenCV with CUDA,denseflow环境,使用GPU加速光流

3 安装dense_flow

ubuntu20.04系统+cuda10.1+opencv4.1.0+dense_flow的编译与安装,吐血总结!!!
https://blog.csdn.net/qq_37992458/article/details/119496020

Ubuntu16.04+opencv4.1.0 dense_flow配置过程记录
https://blog.csdn.net/qq_35209694/article/details/106953949?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-0.control&spm=1001.2101.3001.4242

ubuntu18.04 opencv4.1.0 + dense_flow安装与使用
https://blog.csdn.net/baidu_35120637/article/details/113550001?spm=1001.2014.3001.5501

3.1 安装

git clone --recursive http://github.com/yjxiong/dense_flow
cd dense_flow/
mkdir build && cd build
OpenCV_DIR=/home/thhicv/program/setup/opencv-4.5.2/build/  cmake ..

make -j48

3.2 测试

建立目录结构

build
    |--tmp
    |    |--flow_x
    |    |--flow_y
    |    |--image

放一个视频test.avi,然后执行:

./extract_gpu -f=test.avi -x=tmp/flow_x -y=tmp/flow_y -i=tmp/image -b=20 -t=1 -d=0 -s=1 -o=dir

参考

OpenCV

在Ubuntu上用Anaconda3 编译安装 opencv3
https://blog.csdn.net/ytusdc/article/details/102907703

How to install OpenCV 4.5.2 with CUDA 11.2 and CUDNN 8.2 in Ubuntu 20.04 https://gist.github.com/raulqf/f42c718a658cddc16f9df07ecc627be7#configuration-information

含denseflow的mmaction2安装记录
https://zhuanlan.zhihu.com/p/260746998

Original: https://blog.csdn.net/bicdnknjbv/article/details/123789117
Author: fusang1337
Title: 在Ubuntu 20.04上安装OpenCV with CUDA,denseflow环境,使用GPU加速光流

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/703833/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球