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

   
   
  • 1

安装完成后,打开 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

   
   
  • 1
  • 2
# 默认注释了源码镜像以提高 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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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

 
 
  • 1
  • 2

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

  • 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

 
 
  • 1
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

 
 
  • 1
  • 2
  • 3
  • 4

4. C/C++ 开发环境

4.1 编译环境,一条命令全搞定:
  • GNC C Compiler
  • GNC C++ Compiler
  • GNC C Library
  • GNC make
 sudo apt install build-essential

 
 
  • 1
4.2 CLion

官网 下载 或运行命令:

sudo snap install clion --classic

 
 
  • 1

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

安装完成后别忘了验证一下: 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

 
 
  • 1
  • 2
  • 禁用 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}
    
       
       
    • 1
    • 2
    • 3
    • 4
  • 更新 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

 
 
  • 1
  • 2
  • 3
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

  • 是否安装 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 安装步骤

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

 
 
  • 1
  • 2
  • 3

注意: 安装选项中要去掉 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 <CudaInstaller> with the name of this run file:
sudo <CudaInstaller>.run --silent --driver

Logfile is /var/log/cuda-installer.log

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • [重要] 添加环境变量,见 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
  • 2
  1. [可选] 验证 MD5,CUDA 11.6.1 的 MD5 在 这里
 md5sum cuda-repo-ubuntu2004-11-7-local_11.7.0-515.43.04-1_amd64.deb

 
 
  • 1
  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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  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

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
5.3 配置环境变量

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

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

# 增加如下内容
export PATH=/usr/local/cuda-11.6/binKaTeX parse error: Expected '}', got 'EOF' at end of input: …rator">:</span>{ PATH}}

# runfile 安装还需要增加如下内容
# 64-bit 系统
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64KaTeX parse error: Expected '}', got 'EOF' at end of input: …rator">:</span>{LD_LIBRARY_PATH}}

# 32-bit 系统
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/libKaTeX parse error: Expected '}', got 'EOF' at end of input: …rator">:</span>{LD_LIBRARY_PATH}}

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

重启后可以使用 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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

6. NVIDIA CuDNN

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

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

安装步骤

 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*

  • 1
  • 2
  • 3
  • 4
  • 5
  • 如果你的设备装备了多个版本的 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 同时安装成为可能,因此更灵活。更多其他安装方法参考 官方教程

安装步骤

 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/libKaTeX parse error: Expected '}', got 'EOF' at end of input: …rator">:</span>{LD_LIBRARY_PATH}}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 安装 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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 验证TensorRT安装是否成功,你应该不需要任何额外的依赖即可编译并运行:
cd /usr/local/tensorrt/samples/sampleMNIST
sudo make clean && sudo make

# 运行
//bin/sample_mnist

  • 1
  • 2
  • 3
  • 4
  • 5
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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 卸载旧版 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

 
 
  • 1
  • 2
  • [可选] 如果要删除旧的 image, container, volumescustomized configuration:
 sudo rm -rf /var/lib/docker
 sudo rm -rf /var/lib/containerd

 
 
  • 1
  • 2
  • 新的设备在第一次安装 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 </span>
“deb [arch= ( < / s p a n > d p k g − − p r i n t − a r c h i t e c t u r e < s p a n c l a s s = " t o k e n v a r i a b l e " > ) < / s p a n > < / s p a n > s i g n e d − b y = / e t c / a p t / k e y r i n g s / d o c k e r . g p g ] h t t p s : / / d o w n l o a d . d o c k e r . c o m / l i n u x / u b u n t u   < s p a n c l a s s = " t o k e n v a r i a b l e " > < s p a n c l a s s = " t o k e n v a r i a b l e " > (</span>dpkg --print-architecture<span class="token variable">)</span></span> signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ <span class="token variable"><span class="token variable"> (</span>dpkgprintarchitecture<spanclass="tokenvariable">)</span></span>signedby=/etc/apt/keyrings/docker.gpg]https://download.docker.com/linux/ubuntu <spanclass="tokenvariable"><spanclass="tokenvariable">(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 安装 Docker-Engine (默认是最新版)
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

 
 
  • 1
  • 2
  • 测试安装是否成功: sudo docker run hello-world
    如果看到 Hello from Docker! 等字样则表示安装成功。

  • [推荐] 其他设置:

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

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 安装 nvidia-docker2:
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker

 
 
  • 1
  • 2
  • 3
  • 测试安装是否成功
sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi

 
 
  • 1

9. FFmpeg

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

9.1 使用包管理器
sudo apt update
sudo apt install ffmpeg

 
 
  • 1
  • 2
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 </span>
libgstrtspserver-1.0-0 </span>
gstreamer1.0-rtsp </span>
gir1.2-gst-rtsp-server-1.0

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
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

 
 
  • 1
  • 2
  • 3
  • 4
  • 下载 Gst-Python:
cd ~/Downloads
git clone https://github.com/GStreamer/gst-python.git
cd gst-python
git checkout 5343aeb

 
 
  • 1
  • 2
  • 3
  • 4
  • 生成 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

  • 1
  • 2
  • 3
  • 4
  • [可选] 如果运行上一步出错:
    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`
    
       
       
    • 1
    改为
    PYTHON_LIBS=`$PYTHON-config --embed --ldflags 2>/dev/null`
    
       
       
    • 1
  • 重新运行 configure 并编译安装
./configure PYTHON=/usr/bin/python3

make -j$(nproc)
sudo make install

  • 1
  • 2
  • 3
  • 4

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

 
 
  • 1
  • 2
  • 3
  • 安装依赖环境
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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 下载 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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 低于 v4.4 且 WITH_CUDNN=ON: 修改 cmake/FindCUDNN.cmake在这里插入图片描述
  • 创建 Makefile
cd ${WORKSPACE}/opencv
mkdir build && cd build

CUDA_DIR=“/usr/local/cuda”
PY3= ( < / s p a n > < s p a n c l a s s = " t o k e n f u n c t i o n " > w h i c h < / s p a n > p y t h o n 3 < s p a n c l a s s = " t o k e n v a r i a b l e " > ) < / s p a n > < / s p a n > < s p a n c l a s s = " t o k e n a s s i g n − l e f t v a r i a b l e " > V E R S I O N < / s p a n > < s p a n c l a s s = " t o k e n o p e r a t o r " > = < / s p a n > < s p a n c l a s s = " t o k e n v a r i a b l e " > < s p a n c l a s s = " t o k e n v a r i a b l e " > (</span><span class="token function">which</span> python3<span class="token variable">)</span></span> <span class="token assign-left variable">VERSION</span><span class="token operator">=</span><span class="token variable"><span class="token variable"> (</span><spanclass="tokenfunction">which</span>python3<spanclass="tokenvariable">)</span></span><spanclass="tokenassignleftvariable">VERSION</span><spanclass="tokenoperator">=</span><spanclass="tokenvariable"><spanclass="tokenvariable">($PY3 -c “import sysconfig; print(sysconfig.get_python_version()))

cmake -D CMAKE_BUILD_TYPE=RELEASE </span>
-D CMAKE_POLICY_DEFAULT_CMP0069=NEW </span>
-D CMAKE_INTERPROCEDURAL_OPTIMIZATION=ON </span>
-D CMAKE_INSTALL_PREFIX=/usr/local </span>
-D INSTALL_PYTHON_EXAMPLES=ON </span>
-D INSTALL_C_EXAMPLES=ON </span>
-D BUILD_DOCS=ON </span>
-D BUILD_PERF_TESTS=OFF </span>
-D BUILD_TESTS=OFF </span>
-D BUILD_PACKAGE=OFF </span>
-D BUILD_EXAMPLES=OFF </span>
-D WITH_TBB=ON </span>
-D OPENCV_ENABLE_NONFREE=ON </span>
-D ENABLE_FAST_MATH=1 </span>
-D CUDA_FAST_MATH=1 </span>
-D WITH_CUDA=ON </span>
-D CUDA_ARCH_BIN=8.6 </span>
-D WITH_CUBLAS=ON </span>
-D WITH_CUFFT=ON </span>
-D WITH_NVCUVID=ON </span>
-D WITH_CUDNN=ON </span>
-D CUDA_TOOLKIT_ROOT_DIR=KaTeX parse error: Undefined control sequence: \< at position 51: …n punctuation">\̲<̲/span> -D <span…{CUDA_DIR}/include </span>
-D CUDNN_LIBRARY=KaTeX parse error: Undefined control sequence: \< at position 69: …n punctuation">\̲<̲/span> -D <span…{WORKSPACE}/opencv_contrib/modules </span>
-D PYTHON3_EXECUTABLE=KaTeX parse error: Undefined control sequence: \< at position 44: …n punctuation">\̲<̲/span> -D <span…(KaTeX parse error: Undefined control sequence: \< at position 378: …n punctuation">\̲<̲/span> -D <span…(
KaTeX parse error: Undefined control sequence: \< at position 322: …n punctuation">\̲<̲/span> -D <span…(
KaTeX parse error: Undefined control sequence: \< at position 370: …n punctuation">\̲<̲/span> -D <span…(
P Y 3 − c " i m p o r t s y s c o n f i g < s p a n c l a s s = " t o k e n p u n c t u a t i o n " > ; < / s p a n > p r i n t < s p a n c l a s s = " t o k e n p u n c t u a t i o n " > ( < / s p a n > s y s c o n f i g . g e t c o n f i g v a r < s p a n c l a s s = " t o k e n p u n c t u a t i o n " > ( < / s p a n > < s p a n c l a s s = " t o k e n s t r i n g " > ′ L I B D I R ′ < / s p a n > < s p a n c l a s s = " t o k e n p u n c t u a t i o n " > ) < / s p a n > < s p a n c l a s s = " t o k e n v a r i a b l e " > ) < / s p a n > < / s p a n > " < s p a n c l a s s = " t o k e n p u n c t u a t i o n " > ) < / s p a n > / l i b p y t h o n < s p a n c l a s s = " t o k e n v a r i a b l e " > PY3 -c "import sysconfig<span class="token punctuation">;</span> print<span class="token punctuation">(</span>sysconfig.get_config_var<span class="token punctuation">(</span><span class="token string">'LIBDIR'</span><span class="token punctuation">)</span><span class="token variable">)</span></span>"<span class="token punctuation">)</span>/libpython<span class="token variable"> PY3c"importsysconfig<spanclass="tokenpunctuation">;</span>print<spanclass="tokenpunctuation">(</span>sysconfig.getconfigvar<spanclass="tokenpunctuation">(</span><spanclass="tokenstring">LIBDIR</span><spanclass="tokenpunctuation">)</span><spanclass="tokenvariable">)</span></span>"<spanclass="tokenpunctuation">)</span>/libpython<spanclass="tokenvariable">{VERSION}
.so </span>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 编译并安装
sudo make -j$(nproc)
sudo make install
sudo ldconfig

 
 
  • 1
  • 2
  • 3
  • 创建 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/

 
 
  • 1

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

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 安装 librdkafka
cd ~/Downloads/
git clone https://github.com/edenhill/librdkafka.git
cd librdkafka/
git reset --hard 7101c2310341ab3f4675fc565f64f0967e135a6a
./configure
make -j$(nproc)
sudo make install

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 安装 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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 将 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

 
 
  • 1
  • 2
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

 
 
  • 1
  • 2
  • 3
  • 初始化子模块
git submodule update --init

 
 
  • 1
  • 编译 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)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 安装 pyds (可以激活 conda 虚拟环境安装):
sudo apt install libgirepository1.0-dev

python3 -m pip install pyds-1.1.2-py3-none-linux_x86_64.whl

  • 1
  • 2
  • 3
  • deepstream_python_apps 拷贝至 DeepStream 目录
sudo cp -r ~/Downloads/deepstream_python_apps/ /opt/nvidia/deepstream/deepstream/sources/

 
 
  • 1
  • 运行 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

  • 1
  • 2
  • 3
  • 4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值