Ubuntu 20.04 深度学习开发环境安装教程完全版 [CUDA/TensorRT/Docker/OpenCV ...]

Ubuntu 20.04 深度学习本地开发环境安装 完全版

本安装教程包括:

  • Ubuntu 20.04 LTS Desktop 系统安装
  • 中文输入法
  • Python 开发环境
  • C++ 开发环境
  • CUDA Toolkit
  • CuDNN
  • TensorRT
  • Docker
  • FFmpeg
  • Gstreamer
  • OpenCV 源码编译
  • DeepStream
  • 更多


1. Ubuntu 20.04 LTS Desktop 系统安装

  • 下载 Ubuntu20.04 LTS Desktop 桌面版 镜像

  • 下载 balanceEtcher USB 镜像工具

  • 1 个 8 GB 左右的 USB (提前备份)

  • 打开镜像工具,依次添加 ISO 镜像文件,选择 USB,单击 Flash! 生成镜像

  • 重启电脑,进入BIOS修改启动顺序,将USB 启动作为最高优先级。 不同机型进入 BIOS 方式:

    • ASRock: F2 or DEL
    • ASUS: F2 for all PCs, F2 or DEL for Motherboards
    • Acer: F2 or DEL
    • Dell: F2 or F12
    • ECS: DEL
    • Gigabyte / Aorus: F2 or DEL
    • HP: F10
    • Lenovo (Consumer Laptops): F2 or Fn + F2
    • Lenovo (Desktops): F1
    • Lenovo (ThinkPads): Enter then F1.
    • MSI: DEL for motherboards and PCs
    • Microsoft Surface Tablets: Press and hold volume up button.
    • Origin PC: F2
    • Samsung: F2
    • Toshiba: F2
    • Zotac: DEL

具体的安装步骤就不赘述了,只需要注意以下几点即可:

  • Installation type 页面时,选择 Something else 选项进入分区页面
  • 创建 EFI 分区: 500 MB
  • 创建 swap 分区: 和实际内存一样, 如实际16GB内存,则分配 16*1024=16384MB
  • 创建 ext4 / 挂载点

2. 安装后配置

中文输入法
Ubuntu 系统只推荐 搜狗输入法, 其余的都是坑。 根据 官网教程 安装即可,安装后需要重启。

截图工具
推荐安装 Flameshot:

sudo apt install flameshot

安装完成后,打开 Settings -> Keyboard Shortcuts, 拉到最下面,点击 ‘+’ 按钮:

  • Name: 任意名字
  • Command: /usr/bin/flameshot gui
  • Shortcut: 按键绑定到自己喜欢的键,本文绑定了 F1

替换清华源
清华源镜像站,选择 Ubuntu 版本然后复制源,不想登录的也可以直接复制:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
sudo gedit /etc/apt/sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

3. Python 开发环境

3.1 Anaconda 虚拟环境

官网 下载 Miniconda3 Linux 64-bit 脚本,本文选择了 Python 3.8 版本。该版本是指虚拟环境中的默认 Python 版本,与系统的 Python 版本无关。

cd ~/Downloads 
bash Miniconda3-py38_4.12.0-Linux-x86_64.sh

安装过程中根据提示输入即可:

  • Please, press ENTER to continue: 按回车键
  • End User License Agreement - Miniconda: 按 q 键退出
  • Do you accept the license terms? [yes|no]: 输入 yes
  • [/home/sparkai/miniconda3] >>>: 回车
  • Do you wish the installer to initialize Miniconda3
    by running conda init? [yes|no]: 输入 yes

注:最后一行输入后,今后每次打开 Terminal 都会自动初始化 base 虚拟环境,可以输入命令关闭:

conda config --set auto_activate_base false
Conda 常用命令
  • 创建环境: conda create -n <环境名> python=3.8
  • 显示环境: conda env list
  • 激活环境: conda activate <环境名>
  • 退出环境: conda deactivate
  • 拷贝环境: conda create -n <环境名> --clone <旧环境名>
  • 删除环境: conda remove -n <环境名> --all
3.2 Pycharm 专业版(收费) / 社区版(免费)

可以从 官网 下载 (麻烦),或使用 Ubuntu 命令安装 (容易):

 # 专业版
sudo snap install pycharm-professional --classic
 # 社区版
sudo snap install pycharm-community --classic

4. C/C++ 开发环境

4.1 编译环境,一条命令全搞定:

  • GNC C Compiler
  • GNC C++ Compiler
  • GNC C Library
  • GNC make
 sudo apt install build-essential
4.2 CLion

官网 下载 或运行命令:

sudo snap install clion --classic

4.3 CMake

可以使用命令安装 sudo apt install cmake,虽然简单,但一般版本都落后很多。使用下面任一方法安装最新版 CMake

4.3.1 预编译文件

进入官网 ,在 Binary distributions 下,找到 Linux x86_64 对应的 .tar.gz 文件并下载(撰写本文时 CMake 的版本是 3.23.2。 运行命令安装:

cd ~/Downloads

tar zxvf cmake-3.23.2-linux-x86_64.tar.gz
sudo mv cmake-3.23.2-linux-x86_64 /opt/cmake-3.23.2
rm cmake-3.23.2-linux-x86_64.tar.gz

# 如果使用 cmake-gui,也创建一个软链接既可
sudo ln -s /opt/cmake-3.23.1/bin/cmake /usr/bin/cmake

4.3.2 源码编译

极少数情况可能需要进行源码编译,在 Source distributions 下面根据操作系统下载对应的源码,本例是 cmake-3.23.2.tar.gz。 运行命令安装:

cd ~/Downloads
tar zxvf cmake-3.23.1.tar.gz
cd cmake-3.23.1/

sudo apt install libssl-dev
./bootstrap -- -DCMAKE_BUILD_TYPE:STRING=Release
make -j$(nproc)
sudo make install

安装完成后别忘了验证一下: cmake --version


5. NVIDIA CUDA Toolkit

5.1 NVIDIA 驱动安装

虽然 CUDA Toolkit 包括了驱动,但为了安装特定版本的驱动,本文将驱动安装独立出来。

安装步骤

  • 从 官网 下载 510.47.03 版驱动 (Deepstream 6.1 需求),或执行命令:
cd ~/Downloads
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/510.47.03/NVIDIA-Linux-x86_64-510.47.03.run
  • 禁用 Nouveau 驱动:
    • 查看 nouveau: lsmod | grep nouveau
    • 加入黑名单 :
     BLACKLIST=/etc/modprobe.d/blacklist-nouveau.conf
     sudo touch ${BLACKLIST}
     echo "blacklist nouveau" | sudo tee ${BLACKLIST}
     echo "options nouveau modeset=0" | sudo tee -a ${BLACKLIST}
    
  • 更新 initramfs: sudo update-initramfs -u
  • 重启系统: sudo reboot
  • 安装驱动:
cd ~/Downloads
chmod 755 NVIDIA-Linux-x86_64-510.47.03.run
sudo ./NVIDIA-Linux-x86_64-510.47.03.run

5.2 CUDA Toolkit 安装

CUDA 是一套集合了驱动、工具库、软件开发套件以及应用编程接口于一体的统一的计算平台。使用 CUDA 可以使开发人员利用 NVIDIA GPU 进行高效的并行计算。要想使用 CUDA, 首先要加入 NVIDIA Developer Program,使用邮箱注册并登录即可。

5.2.1 安装前检查

你当然可以直接进入 官网,下载并直接安装 CUDA,但这里还是推荐你执行一些检查再安装。

  • 检查显卡是否支持 CUDA:

    • lspci | grep -i nvidia
    • 如果没有任何输出,则执行 update-pciids 更新硬件库,并再次执行上述命令
    • 如果显卡来源于 NVIDIA,且包含在 https://developer.nvidia.com/cuda-gpus 中,则显卡支持 CUDA
  • 检查系统是否支持 CUDA

    • uname -m && cat /etc/*release
    • CUDA Toolkit 需求的 Linux 系统: https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
  • 是否安装 GCC

    • gcc --version
  • 检查系统内核头文件

    • CUDA 驱动要求运行时的内核版本与安装时的一致,否则将要重装 CUDA 驱动。
    • 查看系统内核: uname -r
    • 安装内核头文件:sudo apt-get install linux-headers-$(uname -r)

5.2.2 安装 CUDA Toolkit

CUDA Toolkit 中包含了 CUDA Driver 以及用于构建 CUDA 应用的 工具库文件头文件 等内容。支持两种安装方式,可以选择其中任何一种:

  • 特定于发行版的安装包(RPM and Deb packages)
    • 对接 Ubuntu 本地包管理系统
  • 独立于发行版的安装包(runfile packages)
    • 可支持很多 Linux 发行版,但无法利用特定发行版的本地包管理系统

由于本文采用了独立驱动安装方式,因此这里采用 runfile安装 CUDA。 Deb 安装方式下一节。

Runfile 安装步骤

  • 下载 CUDA Toolkit 11.6 Update 1 并安装:
cd ~/Downloads
wget https://developer.download.nvidia.com/compute/cuda/11.6.1/local_installers/cuda_11.6.1_510.47.03_linux.run
sudo sh cuda_11.6.1_510.47.03_linux.run

注意: 安装选项中要去掉 Driver,因为已经单独安装过了。

当看到如下提示,则安装成功:

===========
= Summary =
===========

Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-11.6/

Please make sure that
 -   PATH includes /usr/local/cuda-11.6/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-11.6/lib64, or, add /usr/local/cuda-11.6/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-11.6/bin
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 510.00 is required for CUDA 11.6 functionality to work.
To install the driver using this installer, run the following command, replacing  with the name of this run file:
    sudo .run --silent --driver

Logfile is /var/log/cuda-installer.log
  • [重要] 添加环境变量,见 5.3 节。

Deb 安装步骤

  1. 下载 CUDA Toolkit ,依次选择 Linux -> x86_64 -> 20.04 -> deb (local)

网页给出了下载和安装脚本(这里只下载)。本文安装的版本是 CUDA Toolkit 11.6 Update 1

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
  1. [可选] 验证 MD5,CUDA 11.6.1 的 MD5 在 这里
 md5sum cuda-repo-ubuntu2004-11-7-local_11.7.0-515.43.04-1_amd64.deb
  1. 删除 /etc/X11/xorg.conf 或将 /etc/X11/xorg.conf.d/00-nvidia.conf 的内容添加到 xorg.conf。 CUDA Toolkit 依赖自动生成的 xorg.conf 文件,如果自定义创建文件存在,那么 CUDA 驱动无法正常工作。

  2. 删除旧的 CUDA Toolkit。若设备之前通过 runfile 安装了旧版 CUDA Toolkit,则需要必须手动删除, Deb 安装的则可以不删除:

# 删除 Toolkit runfile
 sudo /usr/local/cuda-<版本>/bin/cuda-uninstaller

# 删除 Driver runfile
 sudo /usr/bin/nvidia-uninstall

# 删除 Deb
 sudo apt-get --purge remove <package_name>
  1. 安装 CUDA:
 # 删除过期签名秘钥
 sudo apt-key del 7fa2af80`
 # 安装本地仓库至文件系统
 sudo dpkg -i cuda-repo-ubuntu2004-11-7-local_11.7.0-515.43.04-1_amd64.deb
 # 注册临时公共 GPG 密钥
 sudo cp /var/cuda-repo-ubuntu2004-11-7-local/cuda-*-keyring.gpg /usr/share/keyrings/
 # 更新仓库缓存,安装 CUDA 并重启
 sudo apt-get update
 sudo apt-get install cuda
 sudo reboot

5.3 配置环境变量

安装完成之后,执行如下操作

sudo vim /etc/profile.d/cuda-conf.sh

# 增加如下内容
export PATH=/usr/local/cuda-11.6/bin${PATH:+:${PATH}}

# runfile 安装还需要增加如下内容
# 64-bit 系统
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

# 32-bit 系统
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} 

# 保存并退出,下次重启后就会生效了

重启后可以使用 nvcc --version 进行验证。

5.4 删除 CUDA 和 显卡驱动

要想完全删除 CUDA 和 驱动,可以执行如下命令。

# 删除 CUDA Toolkit: 
 sudo apt-get --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \
 "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" 
# 删除显卡驱动
 sudo apt-get --purge remove "*nvidia*"

 sudo apt-get autoremove

6. NVIDIA CuDNN

安装前从 链接 查看最新 CuDNN 依赖的 CUDA 版本 和 GPU 架构。

与 CUDA Toolkit 类似,CuDNN 同样提供了多种方法安装。本文只给出 Tar 文件安装方法,该方法具有更好的灵活性,更多安装方式参考 官方教程。

安装步骤

  • 确保安装了 CUDA Toolkit
  • 安装 zlib: sudo apt-get install zlib1g
  • 官网 下载合适版本的 Linux x86_64 (Tar) 文件(需要登录),老版本的 点这,本文使用了 CuDNN v8.4.0 (April 1st, 2022) for CUDA V11.x
  • 执行脚本安装:
 tar -xvf cudnn-linux-x86_64-8.x.x.x_cudaX.Y-archive.tar.xz
 
 sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include 
 sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64 
 sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
  • 如果你的设备装备了多个版本的 CuDNN,要切换到版本: sudo update-alternatives --config libcudnn

7. NVIDIA TensorRT

TensorRT 包括 EAGA 两种类型:

  • EA:Early-Access,是指 Release 版发布前的版本,不推荐
  • GA:General Available,经过完全测试且稳定的发布版本,推荐

本文使用 TensorRT 8.2 GA Update 4 版本。同样的,TensorRT 也提供了很多安装方式,本文只给出 Tar 文件安装方法,由于这种方法能够使多个版本的 TensorRT 同时安装成为可能,因此更灵活。更多其他安装方法参考 官方教程。

安装步骤

  • 确定已经安装了 CUDA 和 CuDNN
  • 下载 TensorRT 8.2 GA Update 4 (v8.2.5.1) 的 Tar 文件
  • 执行命令安装:
 cd ~/Downloads
 
 sudo tar -zxvf TensorRT-8.2.5.1.Linux.x86_64-gnu.cuda-11.4.cudnn8.2.tar.gz -C /usr/local
 sudo ln -s /usr/local/TensorRT-8.2.5.1/ /usr/local/tensorrt
 
 # 修改环境变量
 sudo vim /etc/profile.d/cuda-conf.sh
 export LD_LIBRARY_PATH=/usr/local/TensorRT-8.2.5.1/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
  • 安装 TensorRT 附带的一系列 Python 工具:
 cd /usr/local/tensorrt/python/
 python3 -m pip install --user tensorrt-8.2.5.1-cp38-none-linux_x86_64.whl

 cd /usr/local/tensorrt/uff/
 python3 -m pip install --user uff-0.6.9-py2.py3-none-any.whl

 cd /usr/local/tensorrt/graphsurgeon/
 python3 -m pip install --user graphsurgeon-0.4.5-py2.py3-none-any.whl

 cd /usr/local/tensorrt/onnx_graphsurgeon 
 python3 -m pip install --user onnx_graphsurgeon-0.3.12-py2.py3-none-any.whl
  • 验证TensorRT安装是否成功,你应该不需要任何额外的依赖即可编译并运行:
cd /usr/local/tensorrt/samples/sampleMNIST
sudo make clean && sudo make

# 运行
../../bin/sample_mnist
7.1 安装 PyCUDA

如果需要使用 TensorRT Python 绑定,则必须安装 PyCUDA

  • 安装前请确认 nvcc 是否添加到 PATH
  • 执行命令安装:
    python3 -m pip install --user 'pycuda<2021.1'

注:如果你更新了 CUDA, 则需要删除现有 PyCUDA 然后重新安装。


8. Docker

目前 Docker 主推 Docker Desktop 应用,但显然这不是(大多数)开发人员需要的。本文安装命令行 Docker。官网安装教程 在这。

安装方式有很多种,本文只给出使用增加 docker 仓库的方式安装。

安装步骤:

  • [可选] 完全卸载 docker-desktop (如果有的话):
 sudo apt remove docker-desktop

 rm -rf ~/.docker/desktop
 rm -f ~/.config/systemd/user/docker-desktop.service
 rm -f ~/.local/share/systemd/user/docker-desktop.service
 sudo rm -f /usr/local/bin/com.docker.cli

 sudo apt purge docker-desktop
  • 卸载旧版 docker, docker-io, docker-engine (如果有的话):
 sudo apt-get remove docker docker-engine docker.io containerd runc
 sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin
  • [可选] 如果要删除旧的 image, container, volumescustomized configuration:
 sudo rm -rf /var/lib/docker
 sudo rm -rf /var/lib/containerd
  • 新的设备在第一次安装 docker 之前,需要增加仓库设置:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release

# 添加 docker 的 官方 GPG 秘钥:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 增加 docker stable 版本到仓库
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • 安装 Docker-Engine (默认是最新版)
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  • 测试安装是否成功: sudo docker run hello-world
    如果看到 Hello from Docker! 等字样则表示安装成功。

  • [推荐] 其他设置:

    • 使用 非 root 用户进行管理
      # 增加 docker 用户组
      sudo groupadd docker
      # 增加当前用户到用户组
      sudo usermod -aG docker $USER
      # 使设置生效
      newgrp docker
      # 验证是否生效
      docker run hello-world
      
    • 开机自动启动 docker 服务 (默认已经开启)
      # 手动开启
      sudo systemctl enable docker.service
      sudo systemctl enable containerd.service
      # 手动关闭
      sudo systemctl disable docker.service
      sudo systemctl disable containerd.service
      

8.1 安装 NVIDIA Container Toolkit

安装前确认

  • 安装了 显卡驱动 >= 418.81.07 (通过命令检查: nvidia-smi )
  • GPU arch >= Kelper (或 compute capability 3.0)
  • Docker >= 19.03 (可通过命令检查: docker --version )
  • Linux Kernel > 3.10 (通过命令检查: uname -r)

安装步骤

  • 增加仓库并添加 GPG 秘钥:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
            sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
            sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
  • 安装 nvidia-docker2:
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker
  • 测试安装是否成功
sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi

9. FFmpeg

Ubuntu 20.04 LTS 默认包含了 FFmpeg 4.2.4,可以直接安装。

9.1 使用包管理器

sudo apt update
sudo apt install ffmpeg

9.2 源码编译

TODO


10. Gstreamer

10.1 使用包管理器

如果只是使用 Gstreamer,建议使用这种方式安装。Gstreamer v1.16.2 已经包含在 Ubuntu 20.04 中,可直接安装:

sudo apt install \
libgstreamer1.0-0 \
gstreamer1.0-tools \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav

# 可选但建议
sudo apt install \
libgstrtspserver-1.0-0 \
gstreamer1.0-rtsp \
gir1.2-gst-rtsp-server-1.0

10.2 源码安装

TODO

10.3 安装 Gst-Python

注意: Python libs not found when configure

安装步骤:

  • 下载依赖库:
sudo apt install python3-gi python3-dev python3-gst-1.0 python-gi-dev git python-dev \
python3 python3-pip python3.8-dev cmake g++ build-essential libglib2.0-dev \
libglib2.0-dev-bin libgstreamer1.0-dev libtool m4 autoconf automake \
libgirepository1.0-dev libcairo2-devsu
  • 下载 Gst-Python:
cd ~/Downloads
git clone https://github.com/GStreamer/gst-python.git
cd gst-python
git checkout 5343aeb
  • 生成 configure 文件:
export GST_LIBS="-lgstreamer-1.0 -lgobject-2.0 -lglib-2.0"
export GST_CFLAGS="-pthread -I/usr/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include"

./autogen.sh PYTHON=/usr/bin/python3
  • [可选] 如果运行上一步出错:
    configure: error: Python libs not found. Windows requires Python modules to be explicitly linked to libpython.
    修改 configure 文件第 14466 行:
    PYTHON_LIBS=`$PYTHON-config --ldflags 2>/dev/null`
    
    改为
    PYTHON_LIBS=`$PYTHON-config --embed --ldflags 2>/dev/null`
    
  • 重新运行 configure 并编译安装
./configure PYTHON=/usr/bin/python3

make -j$(nproc)
sudo make install

11. OpenCV with CUDA

本文将从源码编译并安装 OpenCV 4.2.0 ,包含 C++ 和 Python 绑定,支持 CUDA 和 CuDNN。

说明:

  • OpenCV v4.5 支持 CuDNN v8。 低于 v4.5 版本需要关闭 CuDNN选项 或 使用 CuDNN v7。
  • 低于 v4.5 版本需要设置 -DWITH_CUDNN=OFF
  • CUDA_ARCH_BIN=8.6 是指显卡 算力,请根据当前显卡型号查找。查询显卡型号: nvidia-smi -L
  • CMAKE_INSTALL_PREFIX =/usr/local 是指 OpenCV 的安装路径,可以自行修改
  • 设置-DBUILD_opencv_cudacodec=OFF,因为 NVIDIA Video Decoder (NVCUVID) 已过期

安装步骤

  • 删除旧版 OpenCV
sudo apt purge libopencv* python-opencv 
sudo apt purge x264 libx264-dev
sudo apt autoremove
  • 安装依赖环境
sudo apt -y install software-properties-common
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt -y update

sudo apt -y install build-essential checkinstall pkg-config 
sudo apt -y install git gfortran yasm
sudo apt -y install libjpeg8-dev libpng-dev
sudo apt -y install libjasper1 libtiff5-dev
sudo apt -y install libavcodec-dev libavformat-dev 
sudo apt -y install libswscale-dev libdc1394-22-dev
sudo apt -y install libxine2-dev libv4l-dev
sudo ln -s -f /usr/include/libv4l1-videodev.h /usr/include/linux/videodev.h

sudo apt -y install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt -y install libopenblas-dev libopenblas-base liblapacke-dev
sudo ln -s /usr/include/x86_64-linux-gnu/cblas.h /usr/include
sudo ln -s /usr/include/x86_64-linux-gnu/cblas-openblas.h /usr/include
sudo ln -s /usr/lib/x86_64-linux-gnu/liblapack.so /usr/lib

# sudo apt -y install libgtk2.0-dev
# sudo apt -y install libatlas-base-dev 
sudo apt -y install libgtk-3-dev libtbb-dev qt5-default
sudo apt -y install libgtkglext1 libgtkglext1-dev
sudo apt -y install libfaac-dev libmp3lame-dev libtheora-dev
sudo apt -y install libvorbis-dev libxvidcore-dev
sudo apt -y install libopencore-amrnb-dev libopencore-amrwb-dev
sudo apt -y install libavresample-dev
sudo apt -y install x264 v4l-utils
sudo apt -y install python3 python3-dev python3-numpy python3-bs4
sudo apt -y install libprotobuf-dev protobuf-compiler
sudo apt -y install libgoogle-glog-dev libgflags-dev
sudo apt -y install libgphoto2-dev libeigen3-dev 
sudo apt -y install libhdf5-dev doxygen graphviz
  • 下载 OpenCV 和 OpenCV_contrib
export WORKSPACE=~/Desktop/install_opencv
mkdir ${WORKSPACE}
cd ${WORKSPACE}

git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout tags/4.2.0
cd ..

git clone https://github.com/opencv/opencv.git
cd opencv
git checkout tags/4.2.0
  • 低于 v4.4 且 WITH_CUDNN=ON: 修改 cmake/FindCUDNN.cmakeUbuntu 20.04 深度学习开发环境安装教程完全版 [CUDA/TensorRT/Docker/OpenCV ...]_第1张图片
  • 创建 Makefile
cd ${WORKSPACE}/opencv
mkdir build && cd build

CUDA_DIR="/usr/local/cuda"
PY3=$(which python3)
VERSION=$($PY3 -c "import sysconfig; print(sysconfig.get_python_version())")


cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=ON \
-D BUILD_DOCS=ON \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PACKAGE=OFF \
-D BUILD_EXAMPLES=OFF \
-D WITH_TBB=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D WITH_CUDA=ON \
-D CUDA_ARCH_BIN=8.6 \
-D WITH_CUBLAS=ON \
-D WITH_CUFFT=ON \
-D WITH_NVCUVID=ON \
-D WITH_CUDNN=ON \
-D CUDA_TOOLKIT_ROOT_DIR=${CUDA_DIR} \
-D CUDNN_INCLUDE_DIR=${CUDA_DIR}/include \
-D CUDNN_LIBRARY=${CUDA_DIR}/lib64/libcudnn.so \
-D OPENCV_DNN_CUDA=ON \
-D BUILD_opencv_cudacodec=OFF \
-D WITH_IPP=OFF \
-D WITH_V4L=ON \
-D WITH_1394=ON \
-D WITH_GTK=ON \
-D WITH_QT=OFF \
-D WITH_OPENGL=OFF \
-D WITH_EIGEN=ON \
-D WITH_FFMPEG=ON \
-D WITH_GSTREAMER=ON \
-D BUILD_JAVA=OFF \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D OPENCV_SKIP_PYTHON_LOADER=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_EXTRA_MODULES_PATH=${WORKSPACE}/opencv_contrib/modules \
-D PYTHON3_EXECUTABLE=$PY3 \
-D PYTHON3_INCLUDE_DIR=$($PY3 -c "import sysconfig; print(sysconfig.get_config_var('INCLUDEPY'))") \
-D PYTHON3_NUMPY_INCLUDE_DIRS=$($PY3 -c "import numpy; print(numpy.get_include())") \
-D PYTHON3_PACKAGES_PATH=$($PY3 -c "import sysconfig; print(sysconfig.get_path('platlib'))") \
-D PYTHON3_LIBRARY=$($PY3 -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))")/libpython${VERSION}.so \
..
  • 编译并安装
sudo make -j$(nproc)
sudo make install
sudo ldconfig
  • 创建 Python 绑定的软链接
    OpenCV 将 Python 绑定安装至 /usr/lib/python3/dist-packages 文件夹,通过创建软链接可以使得所有 Python虚拟环境共用一个 OpenCV:
sudo ln -s /usr/lib/python3/dist-packages/cv2.cpython-38-x86_64-linux-gnu.so ~/.local/lib/python3.8/site-packages/

12. DeepStream 6.1 SDK

截止目前, DeepStream 已经更新到了 6.1,官方安装教程在这。

本文包括 本地安装Docker 安装 两张方式。

12.1 本地安装:

安装前需要安装以下软件:

  • Ubuntu 20.04 LTS
  • GStreamer 1.16.2
  • NVIDIA driver 510.47.03
  • CUDA 11.6 Update 1
  • CuDNN 8.4.0.27
  • TensorRT 8.2.5.1

前置软件安装步骤:

  • GStream 1.16.2,参考本文 第10.1 节
  • [可选] Gst-Python,参考本文 第 10.3 节
  • NVIDIA driver 510.47.03, 参考本文 第5.1 节
  • CUDA 11.6 Update 1, 参考本文 5.2.2 Runfile 安装方式
  • CuDNN 8.4.0.27,参考本文 第 6 节
  • TensorRT 8.2.5.1,参考本文 第 7 节

安装步骤

  • 安装依赖:
sudo apt install \
libssl1.1 \
libgstreamer1.0-0 \
gstreamer1.0-tools \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
libgstrtspserver-1.0-0 \
libjansson4 \
libyaml-cpp-dev \
liblz4-dev \
libsasl2-dev \
gcc \
make \
git \
python3
  • 安装 librdkafka
cd ~/Downloads/
git clone https://github.com/edenhill/librdkafka.git
cd librdkafka/
git reset --hard 7101c2310341ab3f4675fc565f64f0967e135a6a
./configure
make -j$(nproc)
sudo make install
  • 安装 DeepStream 6.1 (重要:采用 Tar 包形式)
cd ~/Downloads/
wget https://developer.nvidia.com/deepstream_sdk_v6.1.0_x86_64.tbz2

sudo tar -xvf deepstream_sdk_v6.1.0_x86_64.tbz2 -C /
sudo /opt/nvidia/deepstream/deepstream-6.1/install.sh
sudo ldconfig
  • 将 librdkafka 拷贝至 DeepStream 目录
sudo mkdir -p /opt/nvidia/deepstream/deepstream-6.1/lib
sudo cp /usr/local/lib/librdkafka* /opt/nvidia/deepstream/deepstream-6.1/lib

12.2 安装 DeepStream 6.1 Docker

TODO

12.3 [可选] 安装 Deepstream Python bindings

安装步骤:

  • 下载 DeepStream Python
cd ~/Downloads/
git clone https://github.com/NVIDIA-AI-IOT/deepstream_python_apps
cd deepstream_python_apps
  • 初始化子模块
git submodule update --init
  • 编译 Python 绑定, 生成 pyds-*.whl
cd bindings/
mkdir build && cd build
cmake \
-D DS_VERSION=6.1 \
-D PYTHON_MAJOR_VERSION=3 \
-D PYTHON_MINOR_VERSION=8 \
-D PIP_PLATFORM=linux_x86_64 \
-D DS_PATH=/opt/nvidia/deepstream/deepstream-6.1 \
..

make -j$(nproc)
  • 安装 pyds (可以激活 conda 虚拟环境安装):
sudo apt install libgirepository1.0-dev

python3 -m pip install pyds-1.1.2-py3-none-linux_x86_64.whl
  • deepstream_python_apps 拷贝至 DeepStream 目录
sudo cp -r ~/Downloads/deepstream_python_apps/ /opt/nvidia/deepstream/deepstream/sources/
  • 运行 deepstream-test1 Demo
cd /opt/nvidia/deepstream/deepstream/sources/deepstream_python_apps
cd apps/deepstream-test1

python3 deepstream_test_1.py ../../../../samples/streams/sample_720p.h264

你可能感兴趣的:(Linux,ubuntu,linux)