环境感知算法——1.简介与GPU驱动、CUDA和cudnn配置

1. 环境感知算法概述

在自动驾驶领域,环境感知算法主要负责处理周围环境中障碍物和道路的信息,为车辆的决策与执行提供车辆与环境的数据。包括检测移动和静止的障碍物、确定车辆在环境中所处的位置,涉及的传感器有摄像头、激光雷达和毫米波雷达等。

本教程主要涉及自动驾驶环境与感知的主流算法的环境配置,并辅以简要的技术介绍。由于环境感知算法发展数年,部分算法在当下的硬件与软件环境中并不容易直接复现,不同包之间的依赖配置繁琐。笔者将若干重要的环境感知算法整理出来,每个环境都是在自己计算机上进行复现。

将对于如下算法进行复现

1)CenterNet:CenterNet 是一种针对目标检测的深度学习模型。与其他的目标检测模型(如Faster R-CNN、YOLO或SSD)使用边界框回归不同,CenterNet 的主要思想是通过检测目标的中心点来进行目标检测。因此,它将目标检测的问题转化为一个回归问题,即预测目标的中心点坐标以及宽高。这种方法简化了模型的复杂性,提高了处理速度,同时保持了较高的检测精度。

CenterNet复现博客:

环境感知算法——2.CenterNet基于KITTI数据集训练https://blog.csdn.net/wenquantongxin/article/details/1309586942)PSMNet:PSMNet (Pyramid Stereo Matching Network) 是一种立体匹配网络,用于深度估计。立体匹配是计算机视觉中的一个重要任务,主要是通过比较两个摄像头捕获的图像,来估计场景中物体的深度。PSMNet 使用了一种三维卷积神经网络,并引入了多尺度和多层次的特性,以更准确地进行深度估计。

PSMNet复现博客:

环境感知算法——3.PSMNet基于Kitti数据集训练https://blog.csdn.net/wenquantongxin/article/details/1309608533)PointPillars:PointPillars 是一种处理三维点云数据的方法,主要应用于自动驾驶和机器人领域。PointPillars 将三维空间划分成多个柱状区域(Pillars),并将每个柱中的点云数据进行聚合,转化为二维特征表示。这种方法可以有效地减少计算复杂性,同时保持了较高的目标检测精度。

4)RandLANet:RandLANet(Randomly Annotated Lightweight Aggregation Network)是一种用于处理大规模3D点云数据的神经网络模型。RandLA-Net引入了一种高效的随机抽样策略、局部特征学习和轻量级特征聚合,旨在提高点云数据的处理效率和准确性。RandLA-Net的优点包括高效性和准确性。通过随机抽样和轻量级特征聚合,它能够在处理大规模3D点云数据时实现更高的效率。同时,局部特征学习和细粒度的特征聚合策略使得模型在保持准确性方面具有竞争力。

RandLANet复现博客:

环境感知算法——4.RandLA-Net基于SemanticKITTI训练https://blog.csdn.net/wenquantongxin/article/details/131016447?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22131016447%22%2C%22source%22%3A%22wenquantongxin%22%7D5)FMCW:FMCW(Frequency Modulated Continuous Wave)是一种连续波形的频率调制雷达技术。FMCW雷达发送一种频率随时间连续变化的信号,并接收由目标反射回来的信号。通过比较发送的信号和接收到的信号的频率差,可以测量目标的距离和速度。FMCW雷达由于其低功耗、高精度和抗干扰能力强等优点,被广泛应用于汽车雷达和无人机等领域。

2. Ubuntu 安装GPU驱动、CUDA和cudnn

假设现在已经在具有NVIDIA GPU的实体机上安装完成了Ubuntu 20.04系统,由于各个感知算法都需要调用GPU进行训练,故需要安装GPU驱动、CUDA和cudnn。

1)禁用nouveau

nouveau开源驱动与NVIDIA驱动相互冲突,如果设备安装了nouveau驱动,NVIDIA驱动将无法正常安装。

在终端中输入:

sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"

此时,输入:

cat /etc/modprobe.d/blacklist-nvidia-nouveau.conf

将会出现:

blacklist nouveau
options nouveau modeset=0

表明禁用成功。

2)更新内核之后,重新启动

使用下列代码重启内核,代码运行时长为若干秒

sudo update-initramfs -u

重启内核之后,重新启动Ubuntu系统。

3)安装GPU驱动

使用 "Software & Updates" 应用中的 "Additional Drivers" 选项卡来安装 Nvidia 驱动,
例如选取Using NVIDIA driver metapackage from nvidia-driver-525(proprietary)。

此时,使用下列代码是大部分情况下是可以查看NVIDIA驱动情况的。

nvidia-smi

然而,某些情况下,由于没有关闭自动更新,使用nvidia-smi会出现报错:

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. 
Make sure that the latest NVIDIA driver is installed and running.

需要通过:

ls /usr/src | grep nvidia

查找安装的驱动版本号,例如查找结果为nvidia-525.105.17,下文使用dkms中进行替换。
再执行:

sudo apt-get install dkms
sudo dkms install -m nvidia -v 525.105.17 # 替换为相应版本号

接下来,运行下列代码,将先黑屏再显示原来画面,

sudo modprobe nvidia

使用nvidia-smi即可出现版本号与GPU信息。

4)安装CUDA
通过https://developer.nvidia.cn/cuda-toolkit-archive下载CUDA安装包,最新版本为CUDA12.1,实测适用于大部分感知算法。请注意:Anaconda中每个环境都需要再安装一次CUDA Toolkit,需要保证Anaconda环境中的CUDA版本既适用于算法运行环境,又需要小于实体计算机中的CUDA版本。
在cuda_12.1.0_530.30.02_linux.run所在文件夹内,运行:

sudo sh cuda_12.1.0_530.30.02_linux.run

如果按照3)中已经安装GPU驱动,则不需要勾选(其实是叉选)Driver栏,如果安装成功
出现(以不安装Driver为例):

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

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

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

To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-12.1/bin
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 530.00 is required for CUDA 12.1 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

按照上述提示内容,在终端中键入:

export PATH="/usr/local/cuda-12.1/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH"

5)安装Cudnn

下载链接:https://developer.nvidia.cn/rdp/cudnn-download

官方安装指南:Installation Guide - NVIDIA Docs

通过下载链接获得Debian本地仓库安装包,例如选取Local Installer for Ubuntu20.04 x86_64 (Deb)下载安装包cudnn-local-repo-ubuntu2004-8.9.1.23_1.0-1_amd64。在官方教程中,需要将下列安装指令中的X.Y和8.x.x.x替换为特定的CUDA和cuDNN版本,则cudnn-local-repo-ubuntu2004-8.9.1.23_1.0-1_amd64就有X.Y对应于8.9,8.x.x.x对应于8.9.1.23。

导航到包含cuDNN Debian本地安装文件的<cudnnpath>目录。启用本地仓库。

sudo dpkg -i cudnn-local-repo-ubuntu2004-8.9.1.23_1.0-1_amd64.deb 

导入CUDA GPG密钥:

sudo cp /var/cudnn-local-repo-ubuntu2004-8.9.1.23/cudnn-local-A9C84908-keyring.gpg /usr/share/keyrings/

刷新仓库元数据:

sudo apt-get update

安装Runtime库:

sudo apt-get install libcudnn8=8.9.1.23-1+cuda12.1

安装开发库:

sudo apt-get install libcudnn8-dev=8.9.1.23-1+cuda12.1

安装代码样例:

sudo apt-get install libcudnn8-samples=8.9.1.23-1+cuda12.1 

这样就在Debian系统中成功地安装了cuDNN。

6)在Linux上验证cuDNN是否已安装并正在正确运行

编译位于/usr/src/cudnn_samples_v8目录中的mnistCUDNN样例。

复制cuDNN样本到一个可写路径,并切换至对应目录:

cp -r /usr/src/cudnn_samples_v8/ $HOME 
cd  $HOME/cudnn_samples_v8/mnistCUDNN

为了避免编译mnistCUDNN时出错:

fatal error: FreeImage.h: No such file or directory

需要安装:

sudo apt-get install libfreeimage3 libfreeimage-dev 
sudo apt-get update

编译并运行mnistCUDNN样例,样例为调用CUDNN进行了简单的mnist神经网络计算:

make clean && make
./mnistCUDNN

如果cuDNN已正确安装并运行,最终会显示以下消息:

Test passed!

这表示cuDNN已成功安装并可以正常运行。

7)更换清华源

编辑/etc/apt/sources.list,替换为如下内容。原内容建议另存。

deb 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 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

3. 推荐几个易用的Ubuntu软件

刚从windows迁移至Ubuntu之后,内置软件或功能不能满足需求,或功能缺失,或单纯的感觉不如Windows中美观。现整理如下软件链接,可以实现几乎与Windows相同的体验。

1)编程软件

VScode:请勿使用Snap商店的VScode,功能是残缺的。请从官网下载。Download Visual Studio Code - Mac, Linux, WindowsVisual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications.https://code.visualstudio.com/download

Anaconda:Free Download | AnacondaAnaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine.https://www.anaconda.com/download/

 2)Edge浏览器

稳定版:

Index of /repos/edge/pool/main/m/microsoft-edge-stable/https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/Dev版:

Become a Microsoft Edge Insider | Microsoft EdgeBe the first to preview what's new by becoming a Microsoft Edge Insider and downloading the Insider channels.https://www.microsoft.com/en-us/edge/download/insider?form=MA13FJ3)搜狗输入法

下载链接:

搜狗输入法linux-首页搜狗输入法for linux—支持全拼、简拼、模糊音、云输入、皮肤、中英混输https://shurufa.sogou.com/linux安装指南:

搜狗输入法linux-安装指导搜狗输入法for linux—支持全拼、简拼、模糊音、云输入、皮肤、中英混输https://shurufa.sogou.com/linux/guide

4)下载工具:迅雷与百度网盘都是有Linux版本的。

5)VLC视频播放

sudo apt install vlc

6)终端控制

sudo apt install terminator

猜你喜欢

转载自blog.csdn.net/wenquantongxin/article/details/130858818